Data frame submission method and device

By using the block confirmation scoreboard and reordering cache queue on the receiving end to determine the arrival of data frames, the problem of repeated data frame submission in the IEEE 802.11 standard is solved, and a more efficient and reliable data frame submission process is achieved.

CN120050249APending Publication Date: 2025-05-27HUAWEI TECH CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202311583645.8
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2023-11-24
Publication Date
2025-05-27

AI Technical Summary

Technical Problem

In the IEEE 802.11 standard, the media access control protocol data unit (MPDU) submitted by the MAC layer to the LLC layer has the problem of repeated submission, which increases the overhead.

Method used

By deploying blocks on the receiving end, confirming the scoreboard and reordering the cache queue, determining whether to perform the submission operation based on the arrival of the data frame. The specific method includes: determining whether the data frame has arrived based on the arrival status of the block confirmation scoreboard record, and performing a submission operation after the data frame has arrived; for the arrived data frame, it is discarded when it arrives again.

Benefits of technology

It effectively avoids repeated submission of data frames, reduces overhead, and improves the efficiency and reliability of submission.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120050249A_ABST
    Figure CN120050249A_ABST
Patent Text Reader

Abstract

The invention provides a data frame submission method, which comprises the following steps of: determining whether each data frame in at least one data frame with a serial number arrives or not according to the arrival condition of the data frame corresponding to the serial number and recorded by a block confirmation scoreboard; and for the first data frame of which the arrival condition recorded by the scoreboard is not reached, executing a submission operation on the first data frame after the first data frame of the corresponding serial number arrives. Repeated submission of data frames can be avoided. The application supports an IEEE protocol, such as an IEEE 802.11 be / Wi-Fi 7 / EHT protocol, an IEEE 802.11 bn / UHR / Wi-Fi 8 protocol, an IEEE 802.15 / UWB protocol, or an IEEE 802.11 bf / sensing / sensing protocol.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This application relates to the field of communications, and in particular, to a method and apparatus for data frame delivery. Background Art

[0002] In the field of communications, the IEEE 802.11 wireless local area network, commonly known as the Wireless Fidelity (Wi-Fi) network, with the development of technology, Wi-Fi technology has become a common solution for the last-hop access technology to the Internet and is constantly evolving to further reduce latency and improve reliability.

[0003] However, there are still some problems to be solved. For example, in the 802.11 standard, when the Medium Access Control (MAC) layer delivers the Medium Access Control Protocol Data Unit (MPDU), that is, the data frame of the MAC layer, to the Logical Link Control (LLC) layer, there is a problem of repeated delivery, which increases the overhead. How to avoid the repeated delivery of data frames has become a problem to be solved. Summary of the Invention

[0004] This application provides a method and apparatus for data frame delivery, which can avoid repeated delivery.

[0005] In a first aspect, this application provides a method for data frame delivery, including: determining whether each data frame in at least one numbered data frame has arrived according to the arrival situation of the data frame corresponding to the sequence number recorded in the block acknowledgment scoreboard; for a first data frame whose arrival situation recorded in the block acknowledgment scoreboard has not arrived, performing a delivery operation on it after the first data frame corresponding to the sequence number arrives.

[0006] Optionally, the method for data frame delivery is executed by a data frame delivery apparatus, which is deployed in a receiving end, hereinafter simply referred to as the receiving end.

[0007] The receiving end includes a block acknowledgment scoreboard for recording the arrival situation of each data frame. During the transmission of the data frame, each data frame sent by the sending end will carry a corresponding sequence number. After the receiving end receives the data frame, according to the sequence number corresponding to each data frame, the arrival situation of the data frame is determined corresponding to the block acknowledgment scoreboard. If a currently received data frame is the first data frame and the arrival situation of the first data frame corresponding to the block acknowledgment scoreboard has not arrived, then a delivery operation can be performed on the first data frame. This method of determining whether to perform a delivery operation based on whether the data frame has arrived can ensure that the delivered data frames are all data frames that have arrived for the first time, and can effectively avoid repeated delivery.

[0008] In a possible implementation manner, the method further includes: for a second data frame whose arrival status recorded in the block acknowledgment scoreboard is "arrived", after the second data frame with the corresponding sequence number arrives again, discarding it.

[0009] If a currently received data frame is a second data frame and the arrival status of the second data frame corresponding to the block acknowledgment scoreboard is "arrived", then a discard operation can be performed on the second data frame. The block acknowledgment frame scoreboard can record the arrival status of both the data frames that have arrived at the receiving end and have been delivered, and the data frames that have arrived at the receiving end and are temporarily stored at the receiving end as "arrived". By recording the arrival status of the data frames, when the second data frame is received, the block acknowledgment frame scoreboard can be queried according to the sequence number corresponding to the second data frame to confirm that the second data frame is an arrived data frame, and the second data frame is not repeatedly delivered but discarded.

[0010] Optionally, performing a delivery operation on at least one data frame includes performing the delivery operation in an in-order delivery manner and performing the delivery operation in an out-of-order delivery manner. When performing a delivery operation on multiple data frames, it also includes the situation of mixed delivery of in-order delivered data frames and out-of-order delivered data frames.

[0011] In a possible implementation manner, for a first data frame whose arrival status recorded in the block acknowledgment scoreboard is "not arrived", performing a delivery operation on it after the first data frame with the corresponding sequence number arrives includes: after receiving the first data frame with the corresponding sequence number, determining that the first data frame is an in-order delivery data frame, and storing the first data frame in the reordering buffer queue; after the first data frame and the first in-order delivered data frame are stored in the reordering buffer queue, delivering the first data frame and the first in-order delivered data frame together.

[0012] For the in-sequence delivery of data frames, it is necessary to deliver them in the order of sequence numbers, such as in ascending order of sequence numbers. Therefore, in order to avoid the delivery order not meeting the requirements of in-sequence delivery, after each data frame for in-sequence delivery arrives at the receiving end, it can be correspondingly stored in the reordering buffer queue according to its sequence number. If the first data frame is the first data frame for in-sequence delivery to arrive, it is stored in the reordering buffer queue. Between the head of the reordering buffer queue and the window where the first data frame is stored, there may be a window occupied by the sequence numbers of data frames that have been delivered due to out-of-sequence delivery, and this window is empty. According to the method provided by this application, if the first data frame is stored at the head of the queue, the first data frame does not wait for the time for forced delivery to arrive due to the existence of an empty window, but waits until the first data frame for in-sequence delivery is stored in the reordering buffer queue, and then the first data frame and the first in-sequence delivery data frame are delivered together. This is because according to the block acknowledgment scoreboard, it can be judged that among the data frames corresponding to the empty windows between the head of the reordering buffer queue and the window where the first data frame is stored, the data frames have arrived, so it is regarded that the data frames from the first in-sequence delivery data frame to the first data frame are continuously received data frames, and according to the requirements of in-sequence delivery, they can be delivered together.

[0013] Optionally, delivering together includes delivering one by one from the first in-sequence delivery data frame to the first data frame, or delivering together from the first in-sequence delivery data frame to the first data frame.

[0014] In a possible implementation manner, for the first data frame whose arrival situation recorded in the block acknowledgment scoreboard is not arrived, after the first data frame with the corresponding sequence number arrives, performing a delivery operation on it includes: after receiving the first data frame with the corresponding sequence number, determining that the first data frame is a data frame for in-sequence delivery, and storing the first data frame in the reordering buffer queue; waiting until each data frame including the first in-sequence delivery data frame and with a sequence number smaller than that of the first data frame is stored in the reordering buffer queue, and then delivering the first data frame together with the previous data frames, where the previous data frames include the first in-sequence delivery data frame and each data frame with a sequence number smaller than that of the first data frame.

[0015] Exemplarily, when there are other data frames for in-sequence delivery between the first in-sequence delivery data frame and the first data frame, such as the third data frame, and the sequence number of the third data frame is smaller than that of the first data frame, when the first in-sequence delivery data frame is stored at the head of the queue, the receiving end starts to check from the head of the reordering buffer queue in combination with the block acknowledgment scoreboard, and determines that between the first in-sequence delivery data frame and the first data frame in the reordering buffer queue, there are empty windows corresponding to out-of-sequence delivered data frames that have been delivered and the window where the third data frame is stored, and if the out-of-sequence delivered data frames have arrived, it is regarded that there are one or more consecutive data frames starting from the head of the queue, and the first in-sequence delivery data frame, the third data frame, and the first data frame are delivered together.

[0016] In a possible implementation manner, after the first data frame and the first data frame are submitted together, the reordering cache queue is refreshed.

[0017] The submission of the first data frame and the first data frame together includes submitting the first data frame and the first data frame together, and submitting the first data frame, the first data frame, and each data frame with a sequence number smaller than that of the first data frame. After submission, the reordering cache queue and the sliding window are refreshed. This can update the reordering cache queue in a timely manner and provide more accurate data support for determining whether a data frame has arrived.

[0018] In a possible implementation manner, for the first data frame whose arrival status recorded in the block acknowledgment scoreboard is not arrived, after the first data frame with the corresponding sequence number arrives, the submission operation is performed on it, including: after receiving the first data frame with the corresponding sequence number, determining that the first data frame is the first data frame for in-order submission; submitting the first data frame and refreshing the reordering cache queue.

[0019] If the first data frame received is the first data frame for in-order submission, the first data frame may not be stored in the reordering cache queue, but submitted immediately, and the reordering cache queue is refreshed. The window of the reordering cache queue slides, and the next data frame for in-order submission after the first data frame slides to the head of the queue, and then the submission operation is performed according to in-order submission. This can simplify the steps of storing the first data frame in the reordering cache queue and then submitting it, and reduce the latency of in-order submission.

[0020] In a possible implementation manner, for the first data frame whose arrival status recorded in the block acknowledgment scoreboard is not arrived, after the first data frame with the corresponding sequence number arrives, the submission operation is performed on it, including: after receiving the first data frame with the corresponding sequence number, determining that the first data frame is a non-in-order submission data frame, and immediately submitting the first data frame.

[0021] In a possible implementation manner, the method further includes: after successfully submitting the first data frame, updating the arrival status corresponding to the first data frame in the block acknowledgment scoreboard to arrived.

[0022] The first data frame can be an in-order submission data frame or a non-in-order submission data frame. After successfully submitting the first data frame, updating the arrival status of the first data frame to arrived can discard the repeatedly arrived first data frame in the case of subsequent error retransmission of the first data frame and successful reception, and avoid repeatedly submitting the first data frame.

[0023] Second aspect, the present application provides a method for data frame transmission, including: determining whether each data frame in at least one numbered data frame has arrived according to the caching situation of the window of the data frame corresponding to the sequence number in the reordering buffer queue and the transmission situation of the data frame corresponding to the sequence number recorded in the transmission scoreboard; for the first data frame whose arrival situation is determined to be not arrived for the transmission scoreboard and the reordering buffer queue, performing a transmission operation on it after the first data frame corresponding to the sequence number arrives.

[0024] Optionally, the method for data frame transmission is executed by a data frame transmission device, which is deployed in the receiving end and is hereinafter simply referred to as the receiving end.

[0025] The receiving end includes a transmission scoreboard for recording the transmission situation of data frames with different sequence numbers, and a reordering buffer queue for caching data frames corresponding to each sequence number for in-order transmission. When a first data frame is received, the first data frame carries a sequence number, and the receiving end can query the transmission scoreboard corresponding to the sequence number to obtain the transmission situation of the first data frame; query the window of the reordering buffer queue corresponding to the sequence number, and determine the caching situation of the first data frame according to whether the window is empty, that is, whether the first data frame is stored.

[0026] The transmission method provided by the present application can query the transmission scoreboard and the reordering buffer queue to jointly determine whether a data frame has arrived. The determination method includes: if in the transmission scoreboard, the transmission situation of the scoreboard window corresponding to the sequence number of the first data frame is not transmitted, and the window corresponding to the sequence number of the first data frame in the reordering buffer queue is empty, that is, the first data frame is not stored, it can be determined that the first data frame has not arrived; otherwise, it is determined that the first data frame has arrived. If the currently received first data frame has not arrived, a transmission operation can be performed on the first data frame. This method of determining whether to perform a transmission operation based on whether the data frame has arrived can ensure that the transmitted data frames are all data frames that have arrived for the first time, effectively avoiding duplicate transmissions. And this transmission method jointly determines whether a data frame has arrived based on the transmission scoreboard and the reordering buffer queue, which is equivalent to changing the determination of whether to transmit based on the caching situation in the reordering buffer queue to jointly determining whether to transmit based on the transmission scoreboard and the reordering buffer queue. The change basis for the determination of the transmission operation is relatively small, easier to implement, and the implementation cost is lower.

[0027] In a possible implementation manner, the method further includes: for the second data frame whose arrival situation is determined to be arrived for the transmission scoreboard and the reordering buffer queue, discarding it after the second data frame corresponding to the sequence number arrives again.

[0028] In a possible implementation manner, for the first data frame whose arrival status determined for the submission scoreboard and the reorder buffer queue is not arrived, after the first data frame with the corresponding sequence number arrives, performing a submission operation on it includes: after receiving the first data frame with the corresponding sequence number, determining that the first data frame is an in-order submission data frame, and storing the first data frame into the reorder buffer queue; after the first data frame of in-order submission is stored into the reorder buffer queue, submitting the first data frame together with the first data frame.

[0029] In a possible implementation manner, for the first data frame whose arrival status determined for the submission scoreboard and the reorder buffer queue is not arrived, after the first data frame with the corresponding sequence number arrives, performing a submission operation on it includes: after receiving the first data frame with the corresponding sequence number, determining that the first data frame is an in-order submission data frame, and storing the first data frame into the reorder buffer queue; if at least one data frame with a sequence number smaller than that of the first data frame has completed submission, refreshing the reorder buffer queue, and updating the submission status corresponding to the at least one data frame in the submission scoreboard to submitted; after each in-order submission data frame including the first data frame and with a sequence number smaller than that of the first data frame is stored into the reorder buffer queue, submitting the first data frame together with the previous data frames, where the previous data frames include the first data frame and each in-order submission data frame with a sequence number smaller than that of the first data frame.

[0030] In a possible implementation manner, after the first data frame is submitted together with the first data frame, refreshing the reorder buffer queue and the submission scoreboard.

[0031] In a possible implementation manner, for the first data frame whose arrival status determined for the submission scoreboard and the reorder buffer queue is not arrived, after the first data frame with the corresponding sequence number arrives, performing a submission operation on it includes: after receiving the first data frame with the corresponding sequence number, determining that the first data frame is the first data frame of in-order submission; submitting the first data frame, and refreshing the reorder buffer queue and the submission scoreboard.

[0032] In a possible implementation manner, for the first data frame whose arrival status determined for the submission scoreboard and the reorder buffer queue is not arrived, after the first data frame with the corresponding sequence number arrives, performing a submission operation on it includes: after receiving the first data frame with the corresponding sequence number, determining that the first data frame is a non-in-order submission data frame, and immediately submitting the first data frame.

[0033] In a possible implementation manner, the method further includes: after successfully transmitting the first data frame, updating the transmission status corresponding to the first data frame in the transmission scoreboard to transmitted, and updating the buffer status corresponding to the first data frame in the reordering buffer queue to empty.

[0034] It should be understood that the second aspect of this application corresponds to the technical solution of the first aspect of this application. The beneficial effects obtained by each aspect and the corresponding feasible implementation manners are similar, and will not be elaborated here.

[0035] In a third aspect, this application provides a first device, including at least one control module. The at least one control module includes a coupled block acknowledgment scoreboard control module and a reordering buffer queue control module, and implements the method described in the first aspect.

[0036] In a fourth aspect, this application provides a second device, including at least one control module. The at least one control module includes a coupled block acknowledgment scoreboard control module and a reordering buffer queue control module, and implements the method described in the first aspect.

[0037] In a fifth aspect, this application provides a communication device. The communication device includes a processor and a storage medium. The storage medium stores instructions. When the instructions are run by the processor, the processor is used to execute the method described in any of the above aspects and the operations involved in any possible implementation manner of any aspect.

[0038] In a sixth aspect, this application provides a computer-readable storage medium. The computer-readable storage medium stores a computer program. When the computer program is executed by a processor, it implements some or all of the operations included in the method described in any of the above aspects and any possible implementation manner of any of the above aspects.

[0039] In a seventh aspect, this application provides a computer program product. The computer program product includes instructions. When it runs on a processor, it implements some or all of the operations included in the method described in any of the above aspects and any possible implementation manner of any of the above aspects.

[0040] In an eighth aspect, this application provides a chip, including: a port circuit and a processor. The port circuit is connected to the processor, and the processor is used to enable the chip to execute some or all of the operations included in the method described in any of the above aspects and any possible implementation manner of any of the above aspects.

[0041] It should be understood that the third aspect to the eighth aspect of this application are consistent with or corresponding to the technical solution of the first aspect or the second aspect of this application. The beneficial effects obtained by each aspect and the corresponding feasible implementation manners are similar, and will not be elaborated here. Brief Description of the Drawings

[0042] In order to more clearly illustrate the technical solutions of the embodiments of the present application, the following will briefly introduce the drawings required to be used in the description of the embodiments of the present application. Obviously, the drawings in the following description are only some embodiments of the present application. For those of ordinary skill in the art, without creative efforts, other drawings can also be obtained based on these drawings.

[0043] Figure 1 FIG. Figure 1 is a schematic diagram of storing MPDUs into a reordering buffer queue provided by an embodiment of the present application;

[0044] Figure 2 FIG. Figure 2 is a schematic flowchart of a method for delivering data frames provided by an embodiment of the present application;

[0045] Figure 3 FIG. Figure 3 is a schematic flowchart of another method for delivering data frames provided by an embodiment of the present application;

[0046] Figure 4 FIG. Figure 4 is one of the schematic diagrams of the delivery process of an MPDU provided by an embodiment of the present application;

[0047] Figure 5 FIG. Figure 5 is one of the schematic diagrams of an MPDU delivery scenario provided by an embodiment of the present application;

[0048] Figure 6 FIG. Figure 6 is another of the schematic diagrams of the delivery process of an MPDU provided by an embodiment of the present application;

[0049] Figure 7 FIG. Figure 7 is another of the schematic diagrams of an MPDU delivery scenario provided by an embodiment of the present application;

[0050] Figure 8 FIG. Figure 8 is a schematic flowchart of another method for delivering data frames provided by an embodiment of the present application;

[0051] Figure 9 FIG. Figure 9 is a schematic diagram of the structure of a delivery scoreboard provided by an embodiment of the present application;

[0052] Figure 10 FIG. Figure 10 is yet another of the schematic diagrams of the delivery process of an MPDU provided by an embodiment of the present application;

[0053] Figure 11 FIG. Figure 11 is yet another of the schematic diagrams of an MPDU delivery scenario provided by an embodiment of the present application;

[0054] Figure 12 FIG. Figure 12 is one of the schematic diagrams of the structure of a first device provided by an embodiment of the present application;

[0055] Figure 13It is the second structural schematic diagram of a first device provided by an embodiment of the present application;

[0056] Figure 14 It is the third structural schematic diagram of a first device provided by an embodiment of the present application;

[0057] Figure 15 It is the first structural schematic diagram of a second device provided by an embodiment of the present application;

[0058] Figure 16 It is the second structural schematic diagram of a second device provided by an embodiment of the present application;

[0059] Figure 17 It is the structural schematic diagram of a data frame submission system provided by an embodiment of the present application;

[0060] Figure 18 It is the structural schematic diagram of device 60 provided by an embodiment of the present application;

[0061] Figure 19 It is the structural schematic diagram of communication device 70 provided by an embodiment of the present application;

[0062] Figure 20 It is the structural schematic diagram of a device 80 provided by an embodiment of the present application. Detailed implementation manners

[0063] In order to enable those skilled in the art to better understand the solutions in the present application, the following will clearly and completely describe the technical solutions in the embodiments of the present application with reference to the accompanying drawings in the embodiments of the present application. Obviously, the described embodiments are only a part of the embodiments of the present application, rather than all of the embodiments.

[0064] The term "and / or" in this article is only used to describe the association relationship of associated objects, indicating that there can be three relationships. For example, A and / or B can represent: A exists alone, A and B exist simultaneously, and B exists alone.

[0065] The terms "first" and "second" in the description and claims of the embodiments of the present application are used to distinguish different objects, rather than to describe the specific order of the objects. For example, the first target object and the second target object are used to distinguish different target objects, rather than to describe the specific order of the target objects.

[0066] In the embodiments of the present application, words such as "exemplary" or "for example" are used to represent examples, illustrations or explanations. Any embodiment or design solution described as "exemplary" or "for example" in the embodiments of the present application should not be interpreted as being more preferred or having more advantages than other embodiments or design solutions. Exactly, using words such as "exemplary" or "for example" is intended to present relevant concepts in a specific manner.

[0067] In the description of the embodiments of the present application, unless otherwise specified, "a plurality of" means two or more. For example, a plurality of processing units means two or more processing units; a plurality of systems means two or more systems.

[0068] For the sake of easy understanding, the relevant nouns or terms used in the embodiments of the present application will be explained first as follows:

[0069] 1. In-order delivery

[0070] It includes the in-order delivery mechanism of the MAC layer in the 802.11 standard, including: the sending end will assign an increasing sequence number (Sequence Number, SN) to each MPDU sent, and in-order delivery requires the receiving end to deliver the MDPU to the LLC layer in the order of increasing SN.

[0071] 2. Reordering Buffer queue

[0072] Buffer at least one received MPDU. Only when all the MPDUs at the head of the reordering buffer are received, deliver the continuously received MPDUs to the LLC layer. That is, the receiving end checks whether one or more consecutive MPDUs are received starting from the head of the reordering buffer queue. If received, deliver them to the LLC layer until the first empty buffer position is encountered.

[0073] 3. Out-of-Order Delivery

[0074] It includes that after the receiving end receives the MPDU, it immediately delivers it to the LLC layer.

[0075] When delivering data frames, there are usually two cases. One is that the data frame can be delivered immediately after being received, which can be called out-of-order delivery. The other is that the data frame needs to be delivered in the order of increasing SN, which can be called in-order delivery.

[0076] In the embodiments of the present application, taking the data frame to be transmitted as an MPDU that needs to be transmitted from the MAC layer to the LLC layer as an example, the method for transmitting the data frame is described. For data frames of other layers during transmission, the examples in the embodiments of the present application can be referred to. It is determined whether the data frame needs to be transmitted or discarded by whether the data frame has reached the data frame transmission device (hereinafter simply referred to as the receiving end) set at the receiving end, and different data frames will not be elaborated in detail. In an actual application scenario, the device set at the sending end (hereinafter simply referred to as the sending end) can send a traffic flow including at least one MPDU to the receiving end based on different services, and each MPDU can carry an SN to identify different MPDUs. In the embodiments of the present application, an example is given where the sending end sequentially assigns an increasing SN to each MPDU in the order of service generation, and the order of other SNs can refer to the examples in the embodiments of the present application. In some examples, the SN can be carried in the header of the MPDU.

[0077] Exemplarily, in the scenario of MAC layer transmission, the sending end has two traffic flows that need to be transmitted from the MAC layer to the LLC layer, denoted as traffic flow A and traffic flow B respectively. Among them, traffic flow A requires the receiving end to deliver in order, and traffic flow B requires the receiving end to use an out-of-order delivery mechanism. Then, to transmit and deliver the services of these two traffic flows, there are three cases for the multiple MPDUs sent by the sending end to the receiving end and received by the receiving end: one is that all MPDUs are in-order delivery MPDUs of traffic flow A, one is that all MPDUs are out-of-order delivery MPDUs of traffic flow B, and the other is that the MPDUs are a mixture of in-order delivery MPDUs and out-of-order delivery MPDUs.

[0078] Next, examples are given for each of these three cases respectively to illustrate that when MPDUs are transmitted, problems such as duplicate transmission and abnormal transmission occur, resulting in large transmission overhead and large transmission delay.

[0079] In a possible implementation scenario, the sending end sends traffic flow B carried on at least one MPDU to the receiving end. When the MPDUs of traffic flow B reach the receiving end, they can be transmitted to the LLC layer. However, since there is no mechanism for checking duplicates for out-of-order delivery MPDUs, once an incorrect situation of duplicate sending of MPDUs occurs, it will cause the situation of duplicate transmission of MPDUs. For example, the traffic flow B sent by the sending end is carried on 5 MPDUs, and their SNs are respectively identified as 1, 2, 3, 4, 5 (hereinafter simply referring to the SN identified as 1 as SN = 1, the SN identified as 2 as SN = 2, and so on). After the MPDUs of traffic flow B are transmitted, the sending end mistakenly believes that these five MPDUs have failed to be sent due to not receiving a block acknowledgment frame or other reasons, so it sends them again. When the receiving end receives the MPDUs with SNs identified as SN = 1, SN = 2, SN = 3, SN = 4, SN = 5 again, it will transmit them to the LLC layer again, resulting in duplicate transmission.

[0080] In a possible scenario, the sender sends traffic flow A to the receiver, which is carried by multiple MPDUs. The sender will assign an increasing SN to each sent MPDU. Since traffic flow A needs to be delivered in order, after the receiver receives at least one MPDU, it needs to deliver these multiple MDPUs to the LLC layer in the order of increasing SN. Due to the uncertainty of the wireless link, packet loss and retransmission may occur. The order in which these multiple MPDUs arrive at the receiver may be different from the order of increasing SN. Therefore, the receiver will maintain a buffer queue, such as a reordering buffer queue, to temporarily store the arrived MPDUs and wait for consecutive MPDUs starting from the first MPDU to be delivered. That is, after the MPDUs at the head of the reordering buffer queue are received in full, the receiver will deliver the consecutively received MPDUs to the LLC layer. The receipt in full of the MPDUs at the head of the reordering buffer queue includes: determining whether one or more consecutive MPDUs are cached at their corresponding positions in the reordering buffer queue. If all are present, they will be delivered to the LLC layer until the first position with an empty cache is encountered. Refer to Figure 1 Describe the scenario where multiple MPDUs need to be delivered in order. Figure 1 It is a schematic diagram of storing MPDUs in the reordering buffer queue provided by an embodiment of the present application. As Figure 1 shown, assume that the sender sends 64 MPDUs to carry the traffic of traffic flow A. When sending, SN identifiers S R , S R+1 , S R+2 to S R+63 are assigned to them in the sending order. After these multiple MPDUs arrive at the receiver, they are first stored in the reordering buffer queue. The caching order is: starting from the head of the reordering buffer queue, the first window (which can be denoted as window 1) corresponds to storing the MPDU with the SN identifier S R , the second window (which can be denoted as window 2) corresponds to storing the MPDU with the SN identifier S R+1 , and so on. The receiver can start delivering to the LLC from the MPDU stored in window 1 of the reordering buffer queue. Usually, the receiver can start from the MPDU stored in window 1 of the reordering buffer queue and deliver one or more consecutive MPDUs to the LLC. For example, in this example, after delivering the MPDU stored in window 1, the MPDU stored in window 2 can be delivered, and so on. In another possibility, the receiver can also wait until the MPDUs with S R , S R+1 , S R+2 to S R+63 are received in full and then delivered in order. The embodiment of the present application is described by taking the first way of consecutive delivery as an example.

[0081] If packet loss occurs during transmission, such as the loss of the MPDU with the SN identifier S R+2 in the reordering buffer queue at the receiving end, the third window (which can be denoted as window 3) where the MPDU with S R+2 should be stored is empty. Based on the requirement of delivering in order according to the ascending order of SN, the receiving end can start from the first window at the head of the reordering buffer queue and determine that the windows corresponding to the MPDUs with SN identifiers S R and S R+1 are non-empty, and the window corresponding to the MPDU with the identifier S R+2 is empty. Therefore, starting from the MPDU stored in window 1 in the reordering buffer queue, it is delivered to the LLC layer. After delivering the MPDUs in window 2 (after the stored MPDUs), when encountering the first empty window, the delivery stops, and the windows of the reordering buffer queue are slid. That is, the original window 3 moves forward 2 positions to the first window, the original fourth window (which can be denoted as window 4) moves forward 2 positions to the second window, and the subsequent other windows also move forward similarly. After delivery, the sliding window reaches the head of the reordering buffer queue and is empty, waiting for the first MPDU to be stored at the head to be deposited and then continue the delivery. In some examples, after encountering an empty window during delivery (such as the original window 3 corresponding to the MPDU with S R+2 in this example), a timer can be started, such as timing from 20 milliseconds to 100 milliseconds. If the timer times out and no MPDU is stored in the empty window, the windows of the reordering buffer queue continue to slide, and the next non-empty window is slid to the head and delivery starts. For example, if the MPDU with S R+2 is still not received when the timer times out, referring to Figure 1 the example, the next non-empty MPDU, that is, the original window 4, is slid to the first window of the reordering buffer queue and starts delivery as the head. If the sending end successfully receives the MPDU with S R+2 before the timer times out, it queries the cache situation of the reordering buffer queue. Since the window corresponding to the MPDU with S R+2 has been slid to the first window and is empty, therefore, the MPDU with S R+2 is stored at the head of the reordering buffer queue, and starting from the head, it continues to be delivered to the LLC layer with reference to the above example of in-order delivery. The reordering buffer queue can reduce the possibility of duplicate delivery to a certain extent. For example, in the case of retransmitting an MPDU, if the sending end retransmits and sends the MPDU with the SN identifier S R+2 and the MPDU with S R+63 , the receiving end queries the cache situation of the reordering buffer queue and can determine that the SN identifier is S R+63The position of the MPDU corresponding to the SR+63 in the reordering buffer queue is non-empty. Therefore, the re-received MPDU of SR+63 is discarded to avoid duplicate delivery. However, if all the MPDUs carrying traffic flow A have been delivered, and the sender retransmits 64 identical MPDUs due to some error reasons, when the receiver queries the reordering buffer queue, the buffer status of each window is empty. Then, the receiver may still encounter the situation of duplicate delivery of MPDUs, and the problem of duplicate delivery still exists.

[0082] In a possible scenario, the sender sends MPDUs carrying traffic flow A and traffic flow B to the receiver, that is, the MPDUs of traffic flow A and the MPDUs of traffic flow B are sent in a mixed manner. In this scenario, if it is required that the MPDUs of traffic flow B are also delivered to the LLC layer in an in-sequence manner, it will increase unnecessary latency. Therefore, when the receiver receives an MPDU, the MPDUs of traffic flow A are delivered according to the requirement of in-sequence delivery, while the MPDUs of traffic flow B are delivered immediately after arrival. Since there is traffic with in-sequence delivery, the receiver maintains a reordering buffer queue, and each window in this reordering buffer queue corresponds to a received MPDU. That is to say, the MPDUs of traffic flow B will also correspond to a window in the reordering buffer queue. Also, because the MPDUs of traffic flow B are delivered immediately after arriving at the receiver, after delivery, the buffer situation of the window corresponding to the MPDUs of traffic flow B in the reordering buffer queue is empty. Referring to the requirement of in-sequence delivery introduced in the above example, when the window in the reordering buffer queue is empty, it is possible that the MPDUs of traffic flow A that need to be delivered in-sequence cannot be delivered normally.

[0083] For example, the sending end and the receiving end pre - agree on the SN of the first MPDU among multiple MPDUs to be transmitted. For example, it is pre - agreed that the SN of the first MPDU is SN = 1. Suppose the sending end sends 5 MPDUs with SNs of SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5 respectively. Among them, the MPDUs with SN = 1, SN = 4, and SN = 5 are MPDUs of traffic flow A and need to be delivered in order. The MPDUs with SN = 2 and SN = 3 are MPDUs of traffic flow B and are not delivered in order. This sending is recorded as the first sending. The transmission of the MPDU with SN = 1 has an error, and the receiving end fails to receive the MPDU with SN = 1, while other MPDUs are successfully received. Since the receiving end has not received any MPDUs before the first sending by the sending end, the cache situation of the windows corresponding to each MPDU in its re - ordering cache queue is: all are empty. After the receiving end receives the data frames of the first sending, since each window in the re - ordering cache queue corresponds to an MPDU with an SN, the windows of the re - ordering cache queue are respectively denoted as window 1, window 2, window 3, window 4, and window 5 from the head of the queue. Window 1 corresponds to the MPDU with SN = 1, window 2 corresponds to the MPDU with SN = 2, etc. The receiving end can identify the correctly received MPDUs with SN = 2, SN = 3, SN = 4, and SN = 5. For example, according to the pre - agreed identification bit in the header of each MPDU between the sending end and the receiving end, it is determined whether the MPDU is delivered in order or not. The MPDUs delivered in order, such as the MPDUs with SN = 4 and SN = 5 in this example, are stored in the re - ordering cache queue, and the MPDUs not delivered in order, such as the MPDUs with SN = 2 and SN = 3 in this example, are delivered to the LLC layer. After the MPDUs with SN = 2 and SN = 3 are delivered, the re - ordering cache queue is refreshed. Window 1 is empty, windows 2 and 3 are empty, and windows 4 and 5 are non - empty. Since the MPDU with SN = 1 has not been received, the receiving end generates a block acknowledgment frame to instruct the sending end to re - send the MPDU with SN = 1. According to the indication of the block acknowledgment frame, the sending end re - sends the MPDU with SN = 1 for the second time and sends it successfully. The receiving end correctly receives the MPDU with SN = 1 and stores the MPDU with SN = 1 in the corresponding position in the re - ordering cache queue, that is, the position of window 1. The receiving end judges again whether there are consecutive and complete MPDUs that can be delivered starting from the head of the re - ordering cache queue. For example, after the MPDU with SN = 1 is stored in window 1, window 1 is non - empty and is at the head of the queue, so it can be delivered. However, for the MPDU with SN = 4 stored in window 4 and the MPDU with SN = 5 stored in window 5, since the MPDUs with SN = 2 and SN = 3 with smaller sequence numbers have been delivered, windows 2 and 3 of the re - ordering cache queue are empty, blocking the normal delivery of the MPDUs with SN = 4 and SN = 5. The MPDUs with SN = 4 and SN = 5 can only be forced to be delivered after the timer times out, resulting in a relatively large delivery delay.

[0084] To solve the above problems, an embodiment of the present application provides a method for data frame transmission. Based on whether the MPDU reaches the receiving end for transmission, it can effectively solve the problem of repeated transmission of MPDUs, and can further solve the problem that the in-order MPDUs are blocked and cannot be normally transmitted, reducing the delay of in-order transmission.

[0085] Figure 2 is a schematic flowchart of a method for data frame transmission provided by an embodiment of the present application. As Figure 2 shown, this method can be executed by the receiving end, and this method includes: S101 and S102.

[0086] S101. The receiving end determines whether each data frame in at least one sequence-numbered data frame has arrived according to the arrival situation of the data frames corresponding to the sequence numbers recorded in the block acknowledgment scoreboard.

[0087] Referring to the above example, the sending end assigns an SN to each MPDU. For example, in ascending order, an SN can be carried in the header of each MPDU generated in the service order one by one. The following examples are all described by taking the receiving end and the sending end as an example of pre-agreeing to transmit multiple MPDUs starting from SN = 1, and the sending end sending MPDUs with SNs of SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5 respectively.

[0088] The receiving end maintains a block acknowledgment scoreboard, which includes multiple windows. Each window can correspondingly record the arrival situation of an MPDU to determine whether the MPDUs corresponding to each SN have arrived. Exemplarily, the multiple windows of the block acknowledgment scoreboard include the first window (which can be denoted as scoreboard window 1 for distinguishing from the window of the reordering buffer queue), the second window (which can be denoted as scoreboard window 2) to the sixty-fourth window (which can be denoted as scoreboard window 64), etc. Among them, scoreboard window 1 can be used to record the arrival situation of the MPDU with SN = 1, scoreboard window 2 can be used to record the arrival situation of the MPDU with SN = 2, and so on for other scoreboard windows.

[0089] Optionally, in the scoreboard window of the block acknowledgment scoreboard, different values can be taken to represent the arrival situation of the MPDU. For example, when the value in the scoreboard window is 1, it means the MPDU has arrived; when the value in the scoreboard window is 0, it means the MPDU has not arrived. This value is only an example. It can also take the value of 0 to mean it has arrived, the value of 1 to mean it has not arrived, or take values of different bits, such as 00, 01, 000, etc. to represent the arrival situation of the MPDU, etc. In the embodiment of the present application, an example is given with the value in the scoreboard window being 1 to mean the MPDU has arrived and the value in the scoreboard window being 0 to mean the MPDU has not arrived. In the actual application scenario, the value can be set according to requirements and is not limited by the example of the embodiment of the present application.

[0090] The receiving end confirms the MPDUs that have arrived at this end as the arrived MPDUs, and correspondingly refreshes the block acknowledgment scoreboard. Under normal circumstances, the value of each scoreboard window of the block acknowledgment scoreboard is the initial value. In this example, the initial value is 0. When an MPDU arrives at the receiving end, in the refreshed acknowledgment block scoreboard, the value of the scoreboard window corresponding to the SN of this MPDU is refreshed to 1. That is to say, after an MPDU arrives at the receiving end, whether it is delivered or stored in the reordering buffer queue, the receiving end regards it as an arrived MPDU and refreshes the value of the scoreboard window corresponding to its SN in the block acknowledgment scoreboard to record its arrival situation. For example, assume that among the MPDUs with SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5 sent by the sending end, SN = 1 is lost, and the MPDUs with SN = 2, SN = 3, SN = 4, and SN = 5 arrive successfully, and the MPDUs with SN = 2 and SN = 3 have been delivered, and the MPDUs with SN = 4 and SN = 5 are stored in the reordering buffer queue. The receiving end can refresh the block acknowledgment scoreboard after the MPDUs with SN = 2 and SN = 3 are delivered. The values of multiple scoreboard windows of the block acknowledgment scoreboard are refreshed from the initial 0 to: the value of scoreboard window 1 corresponding to the MPDU with SN = 1 is 0, the value of scoreboard window 2 corresponding to the MPDU with SN = 2 is 1, the value of scoreboard window 3 corresponding to the MPDU with SN = 3 is 1, the value of scoreboard window 4 corresponding to the MPDU with SN = 4 is 1, and the value of scoreboard window 5 corresponding to the MPDU with SN = 5 is 1. It means that the MPDU with SN = 1 has not arrived, and the MPDUs with SN = 2, SN = 3, SN = 4, and SN = 5 have arrived.

[0091] S102. For the first data frame whose arrival situation recorded in the block acknowledgment scoreboard is not arrived, the receiving end performs a delivery operation on it after the first data frame with the corresponding serial number arrives.

[0092] Exemplarily, if the first data frame is the MPDU with SN = 1, and the receiving end determines according to the block acknowledgment scoreboard that the MPDU with SN = 1 has not arrived, then when the sending end resends the MPDU with SN = 1, a delivery operation is performed on it. Suppose the MPDU with SN = 1 needs to be delivered according to the in-sequence service, the receiving end can first store it in the reordering buffer queue and deliver it according to the SN requirement of the in-sequence delivery, such as in the ascending order of SN. Since SN = 1 is the smallest and corresponds to the window at the head of the reordering buffer queue, the receiving end can first deliver the MPDU in the window corresponding to SN = 1 stored in the reordering buffer queue, and then deliver it, or refresh the reordering buffer queue immediately after delivery. Suppose the MPDU with SN = 1 needs to be delivered according to the non-in-sequence service, the receiving end can immediately deliver it to the LLC layer.

[0093] Optionally, after the MPDUs with SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5 all perform the delivery operation, the receiving end can refresh the block acknowledgment scoreboard again, that is, refresh it to: the value of scoreboard window 1 corresponding to the MPDU with SN = 1 is 1, the value of scoreboard window 2 corresponding to the MPDU with SN = 2 is 1, the value of scoreboard window 3 corresponding to the MPDU with SN = 3 is 1, the value of scoreboard window 4 corresponding to the MPDU with SN = 4 is 1, and the value of scoreboard window 5 corresponding to the MPDU with SN = 5 is 1. This indicates that the MPDUs with SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5 have all arrived.

[0094] The first data frame can be delivered in order or out of order, and the sender and the receiver can pre - agree on a method to identify the delivery requirement of the first data frame. For example, indication information can be carried in the first data frame to indicate whether the first data frame is delivered in order or out of order; or, according to a pre - agreement, a field is carried in the first data frame, and this field can identify whether the first data frame is delivered in order or out of order. For example, this field can be a pre - agreed field in the message header. The receiving end performs the delivery operation according to the identified delivery requirement of the first data frame. As long as the receiving end can first determine through querying the block acknowledgment scoreboard that the first data frame is a data frame that has not arrived before, and then perform the delivery operation on it, the possibility of duplicate delivery of the first data frame can be effectively avoided, saving the delivery overhead.

[0095] Figure 3 is a schematic flowchart of another method for data frame delivery provided by an embodiment of the present application. As Figure 3 shown, this method can be executed by the receiving end. The difference between this method and Figure 2 is that after S101, it further includes: S103.

[0096] S103. For the second data frame whose arrival situation recorded in the block acknowledgment scoreboard is "arrived", after the second data frame with the corresponding sequence number arrives again, the receiving end discards it.

[0097] Exemplarily, if the second data frame is any one of the MPDUs with SN = 2, SN = 3, SN = 4, or SN = 5, and the receiving end determines that the second data frame has arrived according to the arrival situation recorded in the block acknowledgment scoreboard, then when it is successfully received again, it is discarded. For example, the second data frame is the MPDU with SN = 2. Due to some error reasons, the sender re - sends the MPDU with SN = 2, and the receiving end receives the MPDU with SN = 2. According to the block acknowledgment scoreboard, it determines that the arrival situation of the MPDU with SN = 2 is "arrived", then discards the second received MPDU with SN = 2.

[0098] The second data frame can be delivered in order or out of order. When the receiving end receives the second data frame and determines that its arrival status is "arrived", it discards it. In this way, the possibility of duplicate delivery of the second data frame can be effectively avoided, saving the delivery overhead.

[0099] Comprehensively Figure 2 and as Figure 3 shown in the method flow, a method for delivering data frames provided by an embodiment of this application includes step S101. When the arrival status of the first data frame is "not arrived", step S102 is executed; when the arrival status of the first data frame is "arrived" for the second data frame, step S103 is executed.

[0100] In some delivery scenarios, data frame delivery can be based on the IEEE protocol, such as the IEEE 802.11 protocol, including 802.11a, 802.11b, 802.11g, 802.11n (Wi-Fi 4), 802.11ac (Wi-Fi 5), 802.11ax (Wi-Fi 6), IEEE 802.11be / Wi-Fi7 / EHT protocol, IEEE 802.11bn / UHR / Wi-Fi 8 protocol, or IEEE802.11bf / sensing / sensing protocol, etc. The delivery method provided by the embodiment of this application can achieve delivery corresponding to the above protocols, achieving the delivery effect of avoiding duplicate delivery and reducing latency.

[0101] Next, several examples are used to illustrate how to determine whether it has arrived based on the block acknowledgment scoreboard and determine whether to perform the delivery operation in the MPDU delivery scenario of Wi-Fi, so as to avoid duplicate delivery and reduce the latency of in-order delivery.

[0102] One example is that multiple MPDUs sent by the sender need to be delivered out of order, that is, they are delivered immediately after reaching the receiver. Figure 4 is one of the schematic diagrams of the MPDU delivery process provided by the embodiment of this application, Figure 5 is one of the schematic diagrams of an MPDU delivery scenario provided by the embodiment of this application, as Figure 4 shown, this method is executed by the sender and the receiver, including: S201 to S207.

[0103] S201. The sender sends multiple MPDUs that need to be delivered out of order.

[0104] Optionally, the sender and the receiver can pre - agree on an identifier used to identify whether an MPDU is to be delivered in order or out of order. For example, the sender and the receiver can pre - agree that in a field (which can be denoted as the agreed - upon field) in the MPDU header, if it is a value, such as 1, it means that the MPDU is an in - order service and needs to be delivered in order. That is, it needs to be stored in the re - order buffer queue first and then delivered according to the sequence number. If it is another value, such as 0, it means that the MPDU is an out - of - order service and can be delivered immediately.

[0105] Optionally, the MPDU can also carry indication information. This indication information is used to indicate an in - order service to instruct the receiver to deliver it in order, or it is used to indicate an out - of - order service to instruct the receiver to deliver it in an out - of - order manner. This indication information can be carried in the header.

[0106] Reference Figure 5 , the number of MPDUs that need to be delivered out of order sent by the sender is 5 MPDUs, namely SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5, and they all correspond to the MPDUs of traffic flow B. And when sent for the first time, all 5 MPDUs are sent successfully.

[0107] S202. The receiver receives multiple MPDUs that need to be delivered out of order, queries the block - acknowledgment scoreboard, and determines whether each MPDU has arrived based on the arrival situation recorded in the block - acknowledgment scoreboard.

[0108] The receiver determines whether an MPDU is an in - order service or an out - of - order service in the same way as the sender. For example, if the sender, according to the pre - agreement, writes 0 in the agreed - upon field of the header of each sent MPDU to indicate that the MPDU is an out - of - order service, the receiver can determine that the MPDU is an out - of - order service according to the value of 0 in the agreed - upon field of the header of each received MPDU and deliver it out of order. Similarly, if the MPDU sent by the sender carries indication information, the receiver determines to deliver the MPDU out of order according to the indication of this indication information.

[0109] Reference Figure 5 , for the block - acknowledgment scoreboard queried by the receiver, since no MPDU has been delivered yet, the values in each window are the initial values, that is, 0. Therefore, it is confirmed that the MPDUs with SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5 have not arrived yet.

[0110] S203. The receiver delivers the MPDUs that have not arrived and refreshes the block - acknowledgment scoreboard.

[0111] Since the receiving end determines that the 5 received MPDUs are all delivered in an out-of-order manner, after receiving these 5 MPDUs that have not been received before, they can be delivered immediately, and the block acknowledgment scoreboard is refreshed. After the block acknowledgment scoreboard is refreshed, as Figure 5 shown in the block acknowledgment scoreboard corresponding to the first transmission of Figure 5 , the scoreboard window values for the MPDUs corresponding to each SN are all refreshed to 1.

[0112] S204. The receiving end generates and feeds back a block acknowledgment frame.

[0113] After refreshing the block acknowledgment scoreboard, the receiving end can send a block acknowledgment frame to the sending end to indicate the situation of the received MPDUs. Usually, the receiving end needs to quickly feed back this block acknowledgment frame, such as within 16 microseconds.

[0114] S205. The sending end retransmits at least one MPDU according to the feedback of the block acknowledgment frame.

[0115] If the block acknowledgment frame indicates that a certain MPDU has not been successfully received, the sending end retransmits that MPDU. When the acknowledgment frame is lost and the sending end does not receive the block acknowledgment frame, it is judged according to the non-receipt of the block acknowledgment frame that the receiving end has not received any MPDUs. Therefore, all the MPDUs sent before are retransmitted. For example, due to reasons such as the loss of the acknowledgment block frame, the sending end does not receive the block acknowledgment frame within 16 microseconds and mistakenly thinks that the receiving end has not received these 5 MPDUs. Therefore, the sending end retransmits the MPDUs with SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5 again.

[0116] S206. The receiving end receives at least one MPDU and queries the block acknowledgment scoreboard, and determines whether at least one MPDU has been received according to the arrival situation recorded in the block acknowledgment scoreboard.

[0117] Exemplarily, if the sending end retransmits the MPDUs with SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5 for the second time, after the receiving end receives the MPDUs with SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5 again, it queries the block acknowledgment scoreboard. Referring to Figure 5 , the block acknowledgment scoreboard was refreshed before the second transmission, and the recorded arrival situation includes that the scoreboard windows corresponding to the MPDUs with SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5 are all 1. Therefore, the receiving end confirms that the MPDUs with SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5 have all been received.

[0118] S207. The receiving end discards the received MPDUs.

[0119] If the receiving end determines that the MPDUs with SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5 have all arrived, then the MPDUs with SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5 can be discarded.

[0120] In the embodiment of the present application, after the sending end sends at least one MPDU for the second time, if the receiving end determines that a certain MPDU has arrived, then S207 is executed for this MPDU; if it is determined that a certain MPDU has not arrived, then S203 is executed for this non-arrived MPDU.

[0121] According to Figure 4 and Figure 5 the delivery process, it can be seen that for the non-in-sequence delivery MPDUs in the embodiment of the present application, it is also necessary to first determine whether they have arrived according to the block acknowledgment scoreboard and then decide whether to deliver. For the MPDUs that have arrived before, even if they have been delivered, but the value in the block acknowledgment scoreboard is 1, indicating that they have arrived. Therefore, when received again, the receiving end can determine that this is a duplicate MPDU and discard it, effectively avoiding the delivery of duplicate non-in-sequence delivery MPDUs.

[0122] One example is that multiple MPDUs sent by the sending end need to be delivered in sequence, that is, they need to be first stored in the reordering buffer queue and then delivered according to the requirements of in-sequence delivery. Since the received MPDUs need to be delivered in sequence, the receiving end maintains a reordering buffer queue (the structure of the reordering buffer queue can refer to Figure 1 or Figure 5Example), the receiving end corresponds a reordering buffer queue window to each MPDU of each SN. Suppose the sending end sends MPDUs with SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5. After the receiving end determines that the MPDUs with SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5 are all in-order delivery MPDUs, it stores the MPDUs corresponding to each SN into the reordering buffer queue respectively. Referring to the above example, the windows of the reordering buffer queue are respectively denoted as window 1, window 2, window 3, window 4, and window 5 starting from the head of the queue. The receiving end starts from window 1 and stores the MPDUs with SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5 respectively. Since there are 5 consecutive non-empty windows in the reordering buffer queue starting from the head of the queue, the MPDUs cached in the consecutive non-empty windows can be delivered together, including: delivering the MPDUs with SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5 one by one in ascending order of SN, or delivering the MPDUs with SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5 together. After delivery, the receiving end refreshes the block acknowledgment scoreboard and the reordering buffer queue. Since the MPDUs with SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5 have all been delivered, the windows corresponding to each MPDU in the reordering buffer queue are all empty, and the windows can slide, that is, the sixth window slides to the first window. The scoreboard windows 1, 2, 3, 4, and 5 of the block acknowledgment scoreboard are all refreshed to 1, indicating that the MPDU has arrived. In this case, if an MPDU corresponding to any one of SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5 is received again, that is, a duplicate-arrival MPDU, the method provided by the embodiments of the present application can effectively avoid duplicate delivery. For example, if an MPDU with SN = 3 is received again, according to the traditional technology, it is judged whether to deliver based on whether the reordering buffer queue is empty. Since the window 3 in the reordering buffer queue is empty, the MPDU with SN = 3 will be delivered again, resulting in duplicate delivery. According to the method provided by the embodiments of the present application, it is judged whether to deliver based on the arrival situation of the MPDU corresponding to the SN recorded in the block acknowledgment scoreboard. Since the arrival situation recorded in the scoreboard window 3 of the block acknowledgment scoreboard is that it has arrived, the receiving end discards the MPDU with SN = 3 received again and will not deliver it again, effectively avoiding the situation of duplicate delivery.

[0123] One example is that among the multiple MPDUs sent by the sending end, there are MPDUs that need to be delivered in order and MPDUs that do not need to be delivered in order mixed. Figure 6 is the second schematic diagram of the delivery process of an MPDU provided by the embodiments of the present application, Figure 7 is the second schematic diagram of the delivery scenario of an MPDU provided by the embodiments of the present application, such as Figure 6As shown, this method is executed by a sending end and a receiving end, and includes: S301 to S310.

[0124] S301. The sending end sends multiple MPDUs, including MPDUs that require non-ordered delivery and MPDUs that require ordered delivery.

[0125] Exemplarily, referring to Figure 7 , the sending end sends 5 MPDUs, namely MPDUs with SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5. Among them, SN = 1, SN = 4, and SN = 5 are MPDUs of the ordered service, that is, they require ordered delivery, and SN = 2 and SN = 3 are MPDUs of the non-ordered service, that is, they require non-ordered delivery. When sending, indication information can be carried in each MPDU. For example, the indication information is carried in the packet header. The indication information in the packet header of the MPDU with SN = 1, SN = 4, or SN = 5 is used to indicate that the MPDU with SN = 1, SN = 4, or SN = 5 is an MPDU of the ordered service, and the indication information in the packet header of the MPDU with SN = 2 or SN = 3 is used to indicate that the MPDU with SN = 2 or SN = 3 is an MPDU of the non-ordered service.

[0126] S302. The receiving end receives multiple MPDUs, queries the block acknowledgment scoreboard, and determines whether each MPDU has arrived according to the arrival situation recorded in the block acknowledgment scoreboard.

[0127] The receiving end determines whether the received MPDU has arrived. If it has arrived, S303 is executed; if it has not arrived, S304 is executed.

[0128] Exemplarily, as in Figure 7 's example, after the sending end sends 5 MPDUs for the first time, assuming that the transmission of the MPDU with SN = 1 has an error and the receiving end does not correctly receive the MPDU with SN = 1, but correctly receives the MPDUs with SN = 2, SN = 3, SN = 4, and SN = 5.

[0129] Referring to Figure 7 , the block acknowledgment scoreboard queried by the receiving end. The scoreboard window 1 of the block acknowledgment scoreboard corresponds to the MPDU with SN = 1, the scoreboard window 2 corresponds to the MPDU with SN = 2, the scoreboard window 3 corresponds to the MPDU with SN = 3, the scoreboard window 4 corresponds to the MPDU with SN = 4, and the scoreboard window 5 corresponds to the MPDU with SN = 5. Before receiving multiple MPDUs sent by the sending end for the first time, the values in each scoreboard window are initial values, such as 0, indicating that the MPDUs with SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5 have not arrived. When the receiving end receives these 4 MPDUs and queries the block acknowledgment scoreboard, it can be determined that the MPDUs with SN = 2, SN = 3, SN = 4, and SN = 5 have not arrived.

[0130] Optionally, the receiving end can also query whether the windows of the MPDUs corresponding to each SN in the reordering buffer queue are empty. Usually, the windows of the MPDUs corresponding to SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5 in the reordering buffer queue can be window 1, window 2, window 3, window 4, and window 5 in sequence. In the initial state, each window is empty.

[0131] S303. The receiving end discards the arrived MPDUs.

[0132] S304. The receiving end refreshes the block acknowledgment scoreboard.

[0133] According to the arrival of the MPDUs with SN = 2, SN = 3, SN = 4, and SN = 5, the arrival situation recorded in the block acknowledgment scoreboard is refreshed. The obtained block acknowledgment scoreboard is as Figure 7 shown. After refreshing, the scoreboard window 1 corresponding to the MPDU with SN = 1 remains 0, and the scoreboard windows corresponding to the MPDUs with SN = 2, SN = 3, SN = 4, and SN = 5 are refreshed to 1, that is, the scoreboard window 2, scoreboard window 3, scoreboard window 4, and scoreboard window 5 are all refreshed to 1.

[0134] After S304, it is judged whether the MPDU is an in-sequence delivery MPDU. If it is an in-sequence delivery MPDU, then S305 is executed; otherwise, S307 is executed.

[0135] The receiving end and the sending end have pre-agreed on indication information. The receiving end determines, according to the indication information carried in the received MPDUs with SN = 2, SN = 3, SN = 4, and SN = 5, that the MPDUs with SN = 2 and SN = 3 need to be delivered out-of-sequence, and the MPDUs with SN = 4 and SN = 5 need to be delivered in-sequence.

[0136] S305. The receiving end correspondingly stores at least one in-sequence delivery MPDU into the window of the reordering buffer queue.

[0137] Suppose the receiving end determines that among the received MPDUs, the MPDUs with SN = 4 and SN = 5 need to be delivered in-sequence. Referring to Figure 7 , the MPDU with SN = 4 is correspondingly stored into window 4 of the reordering buffer queue, and the MPDU with SN = 4 is correspondingly stored into window 5 of the reordering buffer queue.

[0138] S306. The receiving end queries the block acknowledgment scoreboard and judges the reordering buffer queue to determine whether one or more consecutive MPDUs starting from the head of the queue have all arrived. If they have all arrived, then the in-sequence delivery MPDUs among them are delivered.

[0139] Referring to Figure 7For example, if the receiving end queries the block acknowledgment scoreboard and determines that the MPDU at the head of the queue, i.e., in window 1 in the reordering buffer queue, has not arrived, according to the requirement of in-order delivery, such as the in-order delivery process starting from the MPDU with the smallest SN and delivering in sequence, it is affected by the empty head of the queue and cannot be delivered. The receiving end waits until it receives the MPDU with SN = 1, stores it in window 1, and then starts to judge from the head of the queue whether one or more consecutive MPDUs have arrived in the reordering buffer queue. If so, it delivers the MPDUs that need to be delivered in order.

[0140] Exemplarily, if the receiving end queries the block acknowledgment scoreboard and determines that the MPDUs with SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5 have all arrived, then it judges the reordering buffer queue and determines that there are 5 consecutive MPDUs (i.e., the MPDUs with SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5) that have arrived starting from the head of the queue. Among them, the MPDUs with SN = 1, SN = 4, and SN = 5 need to be delivered in order, and the MPDUs with SN = 1, SN = 4, and SN = 5 can be delivered.

[0141] S307. The receiving end immediately delivers at least one MPDU that does not require in-order delivery.

[0142] Suppose the receiving end determines that among the received MPDUs, the MPDUs with SN = 2 and SN = 3 need to be delivered without in-order reference Figure 7 , the receiving end immediately delivers the MPDUs with SN = 2 and SN = 3 after receiving them.

[0143] S308 is executed after S302.

[0144] S308. The receiving end generates a block acknowledgment frame and feeds back this block acknowledgment frame to the sending end.

[0145] In Figure 7 the example shown, this block acknowledgment frame is used to instruct the sending end to retransmit the MPDU with SN = 1.

[0146] S309. The sending end retransmits at least one MPDU according to the feedback of the block acknowledgment frame.

[0147] If the block acknowledgment frame indicates that a certain MPDU has not been successfully received, the sending end retransmits this MPDU. When the block acknowledgment frame is lost and the sending end does not receive the block acknowledgment frame, it judges according to the non-receipt of the block acknowledgment frame that the receiving end has not received any MPDU. Therefore, it retransmits all the MPDUs that have been sent before. This example is illustrated by taking the sending end's second transmission of the MPDU with SN = 1 as an example.

[0148] S310. The receiving end receives at least one MPDU, queries the block acknowledgment scoreboard, and determines whether at least one MPDU has arrived according to the arrival situation recorded in the block acknowledgment scoreboard.

[0149] If the received MPDU has arrived, then execute S303; if the received MPDU has not arrived, then execute S304.

[0150] Refer to Figure 7 For the example in, the sender sends the MPDU with SN = 1 for the second time. After the receiver receives the MPDU with SN = 1, it queries the block acknowledgment scoreboard, confirms the scoreboard window 1 corresponding to the MPDU with SN = 1 in the block acknowledgment scoreboard (the value is 0, that is, it is determined that the MPDU with SN = 1 has not arrived and is the first arrival. Therefore, the MPDU with SN = 1 is stored in the corresponding window of the reordering buffer queue, that is, window 1, and the block acknowledgment scoreboard is refreshed, and the scoreboard window 1 is refreshed to 1, indicating that the MPDU with SN = 1 has arrived.

[0151] Optionally, in Figure 7 For the example shown, the reordering buffer queue includes windows corresponding to MPDUs of multiple SNs. After the sender sends at least one MPDU for the second time, such as the MPDU with SN = 1, the receiver receives and determines that it is the first-arrival MPDU, refreshes the block acknowledgment scoreboard, and stores the MPDU with SN = 1 in window 1 of the reordering buffer queue, that is, the reordering buffer queue is refreshed. After the refresh, the windows 1, 4, and 5 corresponding to the MPDUs with SN = 1, SN = 4, and SN = 5 in the reordering buffer queue are all non-empty, and the in-order delivery can start from window 1. Equivalently, after the sender sends multiple MPDUs for the first time, the receiver waits for the first MPDU for in-order delivery to be stored in the reordering buffer queue. After being stored, based on the fact that the MPDUs with SN = 2 and SN = 3 have been delivered but the block acknowledgment scoreboard records that they have arrived, the receiver believes that 5 consecutive MPDUs starting from the head of the queue have all arrived, and the MPDUs with SN = 1, SN = 4, and SN = 5 can be delivered together. The together delivery in the embodiments of the present application includes two cases: one is simultaneous delivery, and the other is to deliver the MPDUs one by one in the order of SN from small to large (it can also be other agreed orders, etc.). In this example, the together delivery of the MPDUs with SN = 1, SN = 4, and SN = 5 can be to simultaneously deliver the MPDUs with SN = 1, SN = 4, and SN = 5, or to deliver the MPDUs one by one in the order of SN = 1, SN = 4, and SN = 5.

[0152] Optionally, when the receiving end determines that the MPDU with SN = 1 received is the first MPDU for in-order delivery, it can immediately deliver the MPDU with SN = 1 and refresh the reordering buffer queue. If the MPDUs with SN = 2 and SN = 3 have been delivered in an out-of-order manner, for the refreshed reordering buffer queue at this time, the sliding window will slide the window corresponding to the MPDU with SN = 4, that is, from window 4 to the first window. Similarly, the window corresponding to the MPDU with SN = 5, that is, window 5, slides to the second window, and then starts delivering from the head of the queue together, that is, delivers the MPDUs with SN = 4 and SN = 5 together, which can further reduce the latency of in-order delivery of MPDUs.

[0153] Optionally, in an example, the sending end first sends MPDUs with SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5, but the receiving end fails to successfully receive the MPDUs with SN = 1 and SN = 4. The receiving end needs to wait until each MPDU with an SN smaller than that of the MPDU with SN = 5, including the first MPDU, is stored in the reordering buffer queue, and then deliver them together. That is, after the receiving end successfully receives and stores the MPDUs with SN = 1 and SN = 4 in the reordering buffer queue, it delivers them together.

[0154] In a possibly achievable scenario, when the receiving end executes S308, the feedback acknowledgment frame block is lost, and the sending end mistakenly believes that the first transmission fails and retransmits the MPDUs with SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5 for the second time. After the receiving end receives them, it queries the block acknowledgment scoreboard. If the windows corresponding to the MPDUs with SN = 2, SN = 3, SN = 4, and SN = 5 in the block acknowledgment scoreboard are all 1, it can be determined that the MPDUs with SN = 2, SN = 3, SN = 4, and SN = 5 have all arrived, and the MPDUs with SN = 2, SN = 3, SN = 4, and SN = 5 are discarded. The window corresponding to the MPDU with SN = 1 is 0, it is determined that the MPDU with SN = 1 has not arrived, the block acknowledgment scoreboard is refreshed, and then the delivery operation is performed for the MPDU with SN = 1 with reference to the above example. In this way, even if the MPDUs with SN = 2, SN = 3, SN = 4, and SN = 5 are received repeatedly, duplicate delivery can be avoided.

[0155] Optionally, after each MPDU is delivered, the receiving end can refresh its arrival status in the block acknowledgment scoreboard, that is, update its arrival status to arrived. For example, in Figure 7In the example shown, after the sender sends 5 MPDUs for the first time, the receiver receives and delivers the MPDUs with SN = 2 and SN = 3. After that, the receiver refreshes the block acknowledgment scoreboard, refreshing the window 2 corresponding to SN = 2 and the window 2 corresponding to SN = 3 to 1, indicating that the MPDUs with SN = 2 and SN = 3 have arrived. After the sender sends the MPDU with SN = 1 again and it is successfully received by the receiver, the receiver delivers the MPDUs with SN = 1, SN = 4, and SN = 5 together, and refreshes the block acknowledgment scoreboard again, updating the windows corresponding to the MPDUs with SN = 1, SN = 4, and SN = 5 to 1, that is, indicating that the MPDUs with SN = 1, SN = 4, and SN = 5 have arrived. Refreshing the block acknowledgment scoreboard in a timely manner according to the delivery situation can improve the judgment accuracy of whether the MPDU has arrived.

[0156] In the embodiment of the present application, among the multiple MPDUs sent by the sender, there are MPDUs with SN = 1, SN = 4, and SN = 5 that need to be delivered in order, and MPDUs with SN = 2 and SN = 3 that are not delivered in order. The MPDUs with SN = 2 and SN = 3 are delivered immediately after arrival. After the MPDUs with SN = 1, SN = 4, and SN = 5 all arrive at the receiver, since the MPDUs with consecutive SNs have all arrived, in this case, the receiver does not have to wait for the time of forced delivery due to the empty window of the reordering buffer queue caused by the delivery of SN = 2 and SN = 3, and then deliver the MPDUs with SN = 4 and SN = 5, reducing the delivery delay of the MPDUs delivered in order. The delivery method provided by the embodiment of the present application determines whether to deliver or discard the MPDU based on whether the MPDU has arrived.

[0157] After the MPDUs with SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5 have all arrived, that is, after being received and delivered, the receiver refreshes the reordering buffer queue again, and the window of the reordering buffer queue slides, that is, slides the sixth window to the current first window, to prepare for receiving subsequent data frames.

[0158] Figure 8 is a schematic flowchart of another data frame delivery method provided by the embodiment of the present application, as Figure 8 shown, this method can be executed by the receiver, and this method includes: S401 and S402.

[0159] S401. The receiver determines whether each data frame in at least one numbered data frame has arrived according to whether the window of the data frame corresponding to the sequence number in the reordering buffer queue is non-empty and the delivery situation of the data frame corresponding to the sequence number recorded in the delivery scoreboard.

[0160] For example, the sender assigns an SN to each data frame and sends it. The following examples will illustrate with the sender sending MPDUs with SNs of SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5 respectively.

[0161] The receiver maintains a delivery scoreboard, which includes multiple scoreboard windows. Each scoreboard window records the delivery status of the MPDU corresponding to a sequence number. The delivery scoreboard can be refreshed after each MPDU is delivered to update the recorded delivery status of the MPDU corresponding to the sequence number to maintain the accuracy of the record. Different from the block acknowledgment scoreboard that records the arrival status of the MPDU corresponding to each sequence number in the above example, the delivery scoreboard is mainly used to record the delivery status of the MPDU and cannot be used alone to determine whether the MPDU has reached the receiver. Instead, it needs to be jointly judged with whether the window of the MPDU corresponding to the sequence number in the reordering buffer queue is non-empty.

[0162] As Figure 9 shown, the delivery scoreboard includes multiple scoreboard windows. Each scoreboard window can correspondingly record the delivery status of an MPDU to determine whether the MPDU corresponding to each SN is delivered. As Figure 9 in the example of Figure 9 , the starting position of the delivery scoreboard, that is, from scoreboard window 1 ( Figure 9 denoted as w = 1 in

[0163] to scoreboard window 64 ( Figure 9 denoted as w = 64 in

[0163] ) includes the positions of 64 windows. Among them, scoreboard window 1 can be used to record the delivery status of the MPDU with SN = 1, scoreboard window 2 can be used to record the delivery status of the MPDU with SN = 2, and so on.

[0163] Optionally, in the scoreboard windows of the delivery scoreboard, different values can be taken to represent the delivery status of the MPDU. For example, a value of 1 in the scoreboard window indicates that the MPDU has been delivered, and a value of 0 in the scoreboard window indicates that the MPDU has not been delivered. This value is only an example. It can also take 0 to indicate that the MPDU has been delivered, take 1 to indicate that the MPDU has not been delivered, or take other values such as 00, 01, 000, etc. to represent the delivery status of the MPDU. In the embodiments of this application, it is exemplified that a value of 1 in the scoreboard window indicates that the MPDU has been delivered, and a value of 0 in the scoreboard window indicates that the MPDU has not been delivered. In the actual application scenario, the value can be set according to requirements and is not limited by the example of the embodiments of this application.

[0164] The receiver also maintains a reordering buffer queue, which can include window 1, window 2, window 3, window 4, and window 5 etc. starting from the head of the queue with reference to the above example.

[0165] The receiving end can jointly determine whether an MPDU has arrived by checking whether the window corresponding to each received MPDU with a specific SN in the reordering buffer queue is empty and whether the value in the delivery scoreboard window corresponding to the SN indicates that it has been delivered. Based on whether an MPDU has arrived, it can then determine what operations to perform on this MPDU. Querying the delivery scoreboard and the reordering buffer queue to jointly determine whether an MPDU has arrived includes: If, in the delivery scoreboard, the value of the window corresponding to the MPDU of an SN is 0, and the window corresponding to the MPDU of the SN in the reordering buffer queue is empty, it can be determined that the MPDU of this SN has not arrived; otherwise, it is determined that the MPDU has arrived.

[0166] For example, the sending end sends MPDUs with SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5. The MPDU with SN = 1 corresponds to scoreboard window 1 in the delivery scoreboard and window 1 in the reordering buffer queue. The MPDU with SN = 2 corresponds to scoreboard window 2 in the delivery scoreboard and window 2 in the reordering buffer queue. The MPDUs of other SNs follow the same pattern. Suppose the receiving end receives the MPDUs with SN = 1, SN = 2, and SN = 3. If, in the delivery scoreboard, the value of the window corresponding to the MPDU with SN = 1 in scoreboard window 1 is 0, and the window corresponding to the MPDU with SN = 1 in the reordering buffer queue is empty, it can be determined that the MPDU with SN = 1 has not arrived; if, in the delivery scoreboard, the value of the window corresponding to the MPDU with SN = 2 in scoreboard window 2 is 1, and the window corresponding to the MPDU with SN = 2 in the reordering buffer queue is empty, it can be determined that the MPDU with SN = 2 has arrived and has been delivered, that is, it is determined to have arrived; if, in the delivery scoreboard, the value of the window corresponding to the MPDU with SN = 3 in scoreboard window 3 is 0, and the window corresponding to the MPDU with SN = 3 in the reordering buffer queue is non-empty, it can be determined that the MPDU with SN = 3 has arrived and is cached in the reordering buffer queue, and it is determined to have arrived.

[0167] S402. For the first data frame whose arrival status is determined to be not arrived by the receiving end for the delivery scoreboard and the reordering buffer queue, perform a delivery operation on it after the first data frame with the corresponding sequence number arrives.

[0168] If the receiving end determines that the first data frame is a data frame that has not arrived, then after the first data frame arrives, perform a delivery operation. This step can refer to S102 and will not be elaborated further.

[0169] Optionally, the method further includes: For the second data frame whose arrival status is determined to have arrived by the delivery scoreboard and the reordering buffer queue, discard it after the second data frame with the corresponding sequence number arrives again.

[0170] Exemplarily, if the second data frame is any one of the MPDUs with SN = 2, SN = 3, SN = 4, or SN = 5. For example, if the second data frame is the MPDU with SN = 2, referring to the determination method in S401, if it is determined that the MPDU with SN = 2 has arrived, then after the receiving end receives the MPDU with SN = 2 again, the MPDU with SN = 2 is discarded. Whether the second data frame is delivered in order or not in order, when the receiving end receives the second data frame, as long as it is determined that its arrival status is "arrived", it is discarded. In this way, the possibility of duplicate delivery of the second data frame can be effectively avoided, and the delivery overhead is effectively saved.

[0171] Next, several examples are used to illustrate how to jointly determine whether an MPDU has arrived based on the delivery scoreboard and the reordering cache queue in the Wi-Fi MPDU delivery scenario, so as to determine whether to perform the delivery operation, and how to avoid duplicate delivery and reduce the delay of in-order delivery.

[0172] Optionally, in the embodiments of the present application, the sending end and the receiving end can pre-agree on an identifier for identifying whether the MPDU is delivered in order or not in order. For example, the sending end and the receiving end can pre-agree that in a predefined field in the MPDU header, if it is 0, it means that the MPDU is an in-order service and needs to be delivered in order; if it is 1, it means that the MPDU is a non-in-order service and can be delivered immediately. Alternatively, the MPDU carries indication information, which is used to indicate that the in-order service needs to be delivered in order, or the indication information is used to indicate that the non-in-order service can be delivered immediately. Among them, in the scenario where in-order delivered MPDUs and non-in-order delivered MPDUs are mixed for delivery, the method of carrying indication information in the MPDU is usually used to indicate whether the MPDU needs to be delivered in order or not in order.

[0173] Exemplarily, when all MPDUs in Wi-Fi are non-in-sequence delivery MPDUs, determining whether to perform the delivery operation based on whether the MPDU has arrived can effectively avoid duplicate delivery. Before the sender sends an MPDU, the delivery scoreboard maintained by the receiver includes scoreboard window 1, scoreboard window 2, scoreboard window 3, scoreboard window 4, scoreboard window 5, etc., and their values are all initial values, that is, 0. In the delivery method that needs to jointly determine whether an MPDU has arrived based on the delivery scoreboard and the reordering buffer queue, regardless of whether the MPDU sent by the sender includes an in-sequence delivery MPDU, the receiver needs to maintain a reordering buffer queue. Before receiving the MPDU sent for the first time, each window starting from the head of the reordering buffer queue, including window 1, window 2, window 3, window 4, window 5, etc., is empty. Suppose the sender sends SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5 for the first time, and they are all non-in-sequence delivery MPDUs. After the first transmission, the receiver successfully receives these 5 MPDUs. Based on the fact that they are 5 non-in-sequence delivery MPDUs, they are immediately delivered, and the delivery scoreboard is refreshed after delivery. In the delivery scoreboard, scoreboard window 1, scoreboard window 2, scoreboard window 3, scoreboard window 4, and scoreboard window 5 corresponding to the MPDUs of SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5 are all refreshed to 1, indicating that they have been delivered. At this time, each window in the reordering buffer queue is still empty. If the receiver sends a block acknowledgment frame to the sender indicating that the MPDUs of SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5 have been successfully received, but the block acknowledgment frame transmission fails, such as being lost, and the sender does not receive this block acknowledgment frame and mistakenly believes that the receiver has not received successfully. Therefore, the sender sends the MPDUs of SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5 for the second time. After the receiver receives the MPDUs of SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5 again, it queries the delivery scoreboard and the reordering buffer queue. According to the fact that the scoreboard window 1 corresponding to the MPDU of SN = 1 in the delivery scoreboard is 1 and the window 1 corresponding to the reordering buffer queue is empty, it determines that the MPDU of SN = 1 has arrived and discards the MPDU of SN = 1. The same applies to the MPDUs of SN = 2, SN = 3, SN = 4, and SN = 5. The receiver jointly determines whether an MPDU has arrived based on the delivery scoreboard and the reordering buffer queue, and can discard the repeatedly arrived MPDUs of SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5, effectively avoiding duplicate delivery.

[0174] Exemplarily, when implementing MPDUs with in-order delivery in Wi-Fi, determining whether to perform the delivery operation based on whether the MPDU has arrived can effectively avoid duplicate delivery. Before the sender sends an MPDU, the delivery scoreboard maintained by the receiver includes scoreboard windows 1, 2, 3, 4, and 5, etc. Each scoreboard window has an initial value of 0. The maintained reordering buffer queue, including windows 1, 2, 3, 4, and 5, etc., is empty. Suppose the sender first sends MPDUs with SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5, all of which are in-order delivered MPDUs, but the MPDU with SN = 1 fails to be sent, and the MPDUs with SN = 2, SN = 3, SN = 4, and SN = 5 are all successfully sent. After the receiver receives them, it stores the MPDUs with SN = 2, SN = 3, SN = 4, and SN = 5 into windows 2, 3, 4, and 5 of the reordering buffer queue respectively, and refreshes the delivery scoreboard and the reordering buffer queue. At this time, since no MPDU is delivered, the values in each scoreboard window of the delivery scoreboard are still 0. The window 1 corresponding to the MPDU with SN = 1 in the reordering buffer queue is empty, and windows 2, 3, 4, and 5 are non-empty. Equivalently, the MPDU with SN = 1 has not arrived, and the MPDUs with SN = 2, SN = 3, SN = 4, and SN = 5 have all arrived. In this case, the receiver sends a block acknowledgment frame to the sender, instructing it to re-send the MPDU with SN = 1. When the sender re-sends for the second time, it erroneously re-sends the MPDU with SN = 2, that is, it sends the MPDUs with SN = 1 and SN = 2 for the second time. After the receiver receives the MPDUs with SN = 1 and SN = 2, it queries the delivery scoreboard and the reordering buffer queue, and determines that the MPDU with SN = 1 has not arrived, and the MPDUs with SN = 2, SN = 3, SN = 4, and SN = 5 have all arrived. Therefore, it discards the MPDU with SN = 2, stores the MPDU with SN = 1 into window 1 of the reordering buffer queue, and performs delivery according to the delivery method of the in-order delivered MPDU in the above example. After the delivery, the first five scoreboard windows in the delivery scoreboard are all refreshed to 1. Exemplarily, if at this time, the block acknowledgment frame feedback by the receiver is lost, and the sender sends the MPDUs with SN = 1 and SN = 2 again, then the receiver can determine that the MPDUs with SN = 1 and SN = 2 have arrived and are duplicate-arrived MPDUs based on the fact that the corresponding windows of SN = 1 and SN = 2 in the reordering buffer queue are empty, but the values of the corresponding scoreboard windows in the delivery scoreboard are 1, and discards the MPDUs with SN = 1 and SN = 2, effectively avoiding duplicate delivery.

[0175] Exemplarily, when implementing MPDUs in Wi-Fi including in-order delivery MPDUs and out-of-order delivery MPDUs, determining whether to perform the delivery operation based on whether the MPDU has arrived can effectively avoid duplicate delivery, ensure the normal delivery of in-order delivery MPDUs, and reduce latency. Figure 10 It is the third schematic diagram of the delivery process of an MPDU provided by an embodiment of the present application. Figure 11 It is the third schematic diagram of the delivery scenario of an MPDU provided by an embodiment of the present application. As Figure 10 shown, this method is executed by a sending end and a receiving end, and includes: S501 to S509.

[0176] S501. The sending end sends multiple MPDUs, including MPDUs that need to be delivered out of order and MPDUs that need to be delivered in order.

[0177] Referring to Figure 10 , the sending end sends 5 MPDUs, namely MPDUs with SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5. Among them, SN = 1, SN = 4, and SN = 5 are MPDUs of in-order services, that is, they need to be delivered in order, and SN = 2 and SN = 3 are MPDUs of out-of-order services, that is, they need to be delivered out of order. When sending, indication information can be carried in each MPDU. For example, indication information is carried in the packet header. The indication information of SN = 1, SN = 4, or SN = 5 is used to indicate that SN = 1, SN = 4, or SN = 5 is an MPDU of in-order service, and the indication information of SN = 2 or SN = 3 is used to indicate that SN = 2 or SN = 3 is an MPDU of out-of-order service.

[0178] As Figure 10 in the example, when the sending end sends for the first time, the transmission of the MPDU with SN = 1 has an error, and the other MPDUs are sent correctly.

[0179] S502. The receiving end receives multiple MPDUs, queries the delivery scoreboard and the reordering buffer queue, and determines whether the MPDU has arrived based on the delivery situation of the MPDU corresponding to the sequence number recorded in the delivery scoreboard and whether the window of the MPDU corresponding to the sequence number in the reordering buffer queue is empty.

[0180] Assume that the receiving end does not correctly receive the MPDU with SN = 1 and correctly receives the MPDUs with SN = 2, SN = 3, SN = 4, and SN = 5.

[0181] Referring to Figure 10 , the receiving end queries the delivery scoreboard. Referring to the above example, in the initial state of the delivery scoreboard, each scoreboard window is 0. The receiving end queries the reordering buffer queue. In the initial state of the reordering buffer queue, each window is empty.

[0182] The receiving end determines whether the received MPDU has arrived based on both the delivery scoreboard and the reordering buffer queue. Specifically, if in the delivery scoreboard, the value of the scoreboard window corresponding to the MPDU of a certain SN is 0, and the window corresponding to the MPDU of this SN in the reordering buffer queue is empty, it can be determined that the MPDU of this SN has not arrived; otherwise, it is determined that the MPDU has arrived. If the receiving end determines that the MPDU has arrived, it executes S503. If it determines that the MPDU has not arrived, it determines whether the MPDU is an in-sequence delivery MPDU. If it is an in-sequence delivery MPDU, it executes S504; otherwise, it executes S506.

[0183] For Figure 10 example, after the receiving end receives the MPDUs with SN = 2, SN = 3, SN = 4, and SN = 5, and determines that the MPDUs with SN = 2, SN = 3, SN = 4, and SN = 5 have not arrived, it executes S505.

[0184] S503: The receiving end discards the arrived MPDU.

[0185] S504: The receiving end stores at least one in-sequence delivery MPDU into the window of the reordering buffer queue.

[0186] S505: The receiving end combines the delivery scoreboard and the reordering buffer queue to determine whether, starting from the head of the queue, one or more consecutive MPDUs in the reordering buffer queue have all arrived. If they have arrived, it delivers the MPDUs that need to be delivered in sequence and refreshes the delivery scoreboard.

[0187] S506: The receiving end immediately delivers at least one non-in-sequence delivery MPDU and refreshes the delivery scoreboard.

[0188] For Figure 10 example, after the receiving end receives the MPDUs with SN = 2, SN = 3, SN = 4, and SN = 5, and determines that the MPDUs with SN = 2 and SN = 3 need to be delivered non-in-sequence, it immediately delivers the MPDUs with SN = 2 and SN = 3 and refreshes the delivery scoreboard. At this time, the delivery scoreboard is refreshed to: the value of the scoreboard window 2 for SN = 2 and the scoreboard window 3 for SN = 3 is 1, and the others remain 0.

[0189] The MPDUs with SN = 4 and SN = 5 need to be delivered in sequence, so they are stored into the corresponding windows of the reordering buffer queue, that is, the MPDU with SN = 4 is stored into the window 4 of the reordering buffer queue, and the MPDU with SN = 5 is stored into the window 5 of the reordering buffer queue. The reordering buffer queue is refreshed to: the windows 4 and 5 of the reordering buffer queue are non-empty, and the others remain empty. Referring to the determination method provided in the above example, it can be determined that the MPDUs with SN = 2, SN = 3, SN = 4, and SN = 5 have arrived, and the MPDU with SN = 1 has not arrived. InFigure 10 In the example shown, when the receiving end queries the reordering buffer queue and finds that the first window at the head of the queue, i.e., window 1, is empty, the in-order delivery process, such as starting from the MPDU with the smallest SN, cannot start according to the requirements of in-order delivery. It is necessary to wait for the MPDU with SN = 1 to be stored in window 1 before starting the in-order delivery.

[0190] S507 is executed after S502.

[0191] S507: The receiving end generates a block acknowledgment frame and feeds back the block acknowledgment frame to the sending end.

[0192] In this example, the block acknowledgment frame is used to instruct the sending end to retransmit the MPDU with SN = 1.

[0193] S508: The sending end retransmits at least one MPDU according to the feedback of the block acknowledgment frame.

[0194] The method for the sending end to determine the MPDU to be retransmitted according to the block acknowledgment frame can refer to the above example and will not be elaborated here. In this example, the sending end retransmits the MPDU with SN = 1 for the second time according to the indication of the block acknowledgment frame and the transmission is successful.

[0195] S509: The receiving end receives at least one MPDU, queries the delivery scoreboard and the reordering buffer queue, and determines whether the MPDU has arrived according to the delivery status of the MPDU corresponding to the sequence number recorded in the delivery scoreboard and whether the window of the MPDU corresponding to the sequence number in the reordering buffer queue is empty.

[0196] Refer to Figure 10For example, at least one MPDU sent by the sender for the second time is the MPDU with SN = 1. After the receiver receives the MPDU with SN = 1, based on the delivery scoreboard, the scoreboard window 1 corresponding to the MPDU with SN = 1 is 0, and the window 1 corresponding to the MPDU with SN = 1 in the reordering buffer queue is empty. By jointly judging, it is determined that the MPDU with SN = 1 has not arrived before, that is, it arrives for the first time, and according to the indication information carried by the MPDU with SN = 1, it is determined that it is the MPDU that needs to be delivered in order. The MPDU with SN = 1 is stored in window 1 of the reordering buffer queue, and the reordering buffer queue is refreshed. After the reordering buffer queue is refreshed, window 1, window 4, and window 5 are non-empty, and window 2 and window 3 are empty. The delivery situation of the delivery scoreboard is: the values of scoreboard window 2 for SN = 2 and scoreboard window 3 for SN = 3 are 1, and the others are still 0. The receiver can determine that the MPDUs with SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5 have all arrived. Although the windows 2 and 3 corresponding to the MPDUs with SN = 2 and SN = 3 in the reordering buffer queue are empty, the delivery scoreboard shows that the MPDUs with SN = 2 and SN = 3 have been delivered, indicating that the MPDUs with SN = 2 and SN = 3 have arrived. Therefore, it can be regarded that the consecutive SNs in the in-order delivery are received, and it does not affect the delivery of the MPDUs in window 4 and window 5. The receiver can perform the delivery operation of the MPDUs with SN = 1, SN = 4, and SN = 5 according to the requirements of in-order delivery.

[0197] Optionally, when delivering the in-order delivery MPDU, the receiver can wait until the first in-order delivery MPDU is stored in the reordering buffer queue and then deliver them together. The way of delivering them together can refer to the example of S308 and will not be elaborated here.

[0198] Optionally, when the receiver determines that the received MPDU with SN = 1 is the first in-order delivery MPDU, it can immediately deliver the MPDU with SN = 1 and refresh the reordering buffer queue and the delivery scoreboard. If the MPDUs with SN = 2 and SN = 3 have been delivered according to the non-in-order delivery, at this time, after the reordering buffer queue is refreshed, the window slides, and the window 4 corresponding to the MPDU with SN = 4 slides to the first window. Similarly, the window 5 corresponding to the MPDU with SN = 5 slides to the second window, and then the MPDUs with SN = 4 and SN = 5 are delivered together, which can reduce the delay of in-order delivery MPDUs.

[0199] After the MPDUs with SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5 are all delivered, the delivery scoreboard and the reordering buffer queue are refreshed. The delivery scoreboard is refreshed as follows: the scoreboard window values corresponding to the MPDUs with SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5 are 1, and the others remain 0. The reordering buffer queue is refreshed as follows: the corresponding positions of the MPDUs with SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5 are empty. The window of the reordering buffer queue slides, that is, the sixth window slides to the position of the first window, to prepare for receiving the next data frame group.

[0200] The delivery method provided by the embodiments of this application can jointly determine whether an MPDU has arrived through the delivery scoreboard and the reordering buffer queue. By using this method for MPDU delivery, the delivery situation of the existing delivery scoreboard and the cache situation of whether the window in the reordering buffer queue is empty can be used to jointly determine the arrival situation of the MPDU, which can avoid duplicate delivery of the MPDU. This method can also, based on the logic of whether the reordering buffer queue is empty in the 802.11 protocol, add the delivery situation of the delivery scoreboard to jointly determine the arrival situation of the MPDU. This is equivalent to making relatively few modifications to the current delivery method, which can effectively avoid duplicate delivery and ensure a relatively low delay for in-order delivery during hybrid delivery. Therefore, the cost of using this method for delivery can be effectively reduced.

[0201] Optionally, in the scenario of jointly determining the arrival situation of the MPDU according to the delivery situation of the delivery scoreboard and the cache situation in the reordering buffer queue provided by the embodiments of this application, the receiving end can also maintain a block acknowledgment scoreboard. This block acknowledgment scoreboard is refreshed once after each MPDU arrives to record the arrival situation of each MPDU, mainly for generating block acknowledgment frames to feedback the situation of receiving MPDUs to the sending end. In this scenario, assume that the sending end first sends MPDUs with SN = 1, SN = 2, SN = 3, SN = 4, and SN = 5, but the MPDU with SN = 1 is lost. After the receiving end correctly receives the MPDUs with SN = 2, SN = 3, SN = 4, and SN = 5, the block acknowledgment scoreboard is refreshed to record that the MPDU with SN = 1 has not arrived and the MPDUs with SN = 2, SN = 3, SN = 4, and SN = 5 have arrived. Refer to Figures 8 - 10Examples of in-order delivery, out-of-order delivery, or mixed delivery. The reordering buffer queue is refreshed every time an MPDU is stored, and the delivery scoreboard is refreshed every time an MPDU is delivered. At this time, the MPDU with SN = 1 has not reached the receiving end, so it has not been stored in the reordering buffer queue and has not been delivered. The MPDUs with SN = 2 and SN = 3 are out-of-order delivery MPDUs and will not be stored in the reordering buffer queue but will be directly delivered. The MPDUs with SN = 4 and SN = 5 are in-order delivery MPDUs, which are stored in the reordering buffer queue and are not delivered for the time being. At this time, the records on the delivery scoreboard are that the MPDU with SN = 1 has not been delivered, the MPDU with SN = 2 has been delivered, the MPDU with SN = 3 has been delivered, the MPDU with SN = 4 has not been delivered, and the MPDU with SN = 5 has not been delivered.

[0202] The sender retransmits the MPDU with SN = 1 for the second time. After the receiving end correctly receives the MPDU with SN = 1, the block acknowledgment scoreboard is refreshed to record that the MPDU with SN = 1 has arrived. The receiving end does not perform operations on the MPDU with SN = 1 according to the block acknowledgment scoreboard. Instead, based on the delivery status recorded in the delivery scoreboard and the caching status in the reordering buffer queue, where the reordering buffer queue for the MPDU with SN = 1 is empty, and the MPDUs with SN = 4 and SN = 5 are being cached (i.e., not empty), it is determined that the MPDU with SN = 1 has not been delivered, the MPDUs with SN = 2 and SN = 3 have been delivered, and the MPDUs with SN = 4 and SN = 5 have not been delivered but are in the cache. Then, in-order delivery is performed on the MPDUs with SN = 1, SN = 4, and SN = 5, and then the delivery scoreboard is refreshed to record that the MPDUs with SN = 1, SN = 4, and SN = 5 have been delivered.

[0203] In this scenario, the block acknowledgment scoreboard is mainly used to record the arrival status of MPDUs for each SN.

[0204] The method involved in the above embodiments can be applied to a data frame delivery device. The data frame delivery device can be a communication device acting as a Non-AP station (logical function). The communication device can be a terminal or a communication module in the terminal, or a circuit or chip responsible for the communication function therein (such as a modulation / demodulation (Modem) chip, also known as a baseband chip, or a system-on-chip (SoC) chip or system-in-package (SIP) chip containing a modem core).

[0205] The device for transmitting the data frame may also be a communication device acting as an access point AP (logical function). The communication device may be an AP device or a communication module in the AP device, or a circuit or chip responsible for the communication function (such as a modulation / demodulation (Modem) chip, also known as a baseband chip, or a system-on-chip (SoC) chip or system-in-package (SIP) chip containing a modem core).

[0206] An embodiment of the present application provides a device for transmitting a data frame. Figure 12 It is one of the structural schematic diagrams of a first device provided by an embodiment of the present application. The first device 10 includes at least one control module, and the control modules are coupled to each other. As Figure 12 shown, the control module includes a block acknowledgment scoreboard control module 101 and a reordering buffer queue control module 102.

[0207] The block acknowledgment scoreboard control module 101 is used to refresh the arrival status of the data frame corresponding to the sequence number recorded in the block acknowledgment scoreboard. For example, it is refreshed each time a data frame is received, including being refreshed after the transmission of a non-in-sequence data frame, such as an MPDU, and being refreshed after the storage of an in-sequence data frame, such as an MPDU, in the reordering buffer queue. Optionally, the refresh of the block acknowledgment scoreboard by the block acknowledgment scoreboard control module 101 may refer to the examples of S101 to S103, S201 to S207, and S301 to S308.

[0208] The reordering buffer queue control module 102 is used to determine whether each data frame in at least one numbered data frame has arrived according to the arrival status of the data frame corresponding to the sequence number recorded in the block acknowledgment scoreboard.

[0209] The reordering buffer queue control module 102 is used to perform a transmission operation on a first data frame whose arrival status recorded in the block acknowledgment scoreboard has not arrived after the arrival of the first data frame with the corresponding sequence number.

[0210] In a possible implementation manner, the reordering buffer queue control module 102 is further used to discard a second data frame whose arrival status recorded in the block acknowledgment scoreboard has arrived after the second data frame with the corresponding sequence number arrives again.

[0211] The first device can be applied in Figures 2 - 7In the delivery methods shown in the examples such as S101 to S103, S201 to S207, S301 to S308, etc. shown. Among them, the first device may further include a transceiver module, which is mainly used to receive data frames with multiple different SNs sent by the sending end, such as MPDUs. After receiving the MPDU, the reordering buffer queue control module 102 queries the block acknowledgment scoreboard to determine whether the MPDU received for each SN has arrived. If it has arrived, it is discarded. If it has not arrived, that is, if it is the first arrival, then according to the above examples, it is judged whether it is an in-order delivery MPDU or a non-in-order delivery MPDU, and then the in-order delivery MPDUs are stored in the reordering buffer queue, or the non-in-order delivery MPDUs are delivered immediately. After each in-order delivery MPDU is stored in the reordering buffer queue by the reordering buffer queue control module 102, it controls to refresh the reordering buffer queue once. Optionally, the refresh of the reordering buffer queue control module 102 may refer to the examples of S201 to S207, S301 to S308. The block acknowledgment scoreboard control module 101 controls the block acknowledgment scoreboard to be refreshed after each MPDU is delivered or the in-order delivery MPDUs are stored in the reordering buffer queue. The arrival situation recorded after the refresh may refer to Figures 2 - 7 the example of, which will not be elaborated here.

[0212] In a possible implementation manner, the reordering buffer queue control module 102 is specifically configured to, after the transceiver module receives the first data frame with the corresponding serial number, determine that the first data frame is an in-order delivery data frame, and store the first data frame in the reordering buffer queue; after waiting for the first data frame of the in-order delivery to be stored in the reordering buffer queue, the first data frame and the first data frame are delivered together. The specific delivery method may refer to the examples of S301 to S308.

[0213] In a possible implementation manner, the reordering buffer queue control module 102 is specifically configured to, after the transceiver module receives the first data frame with the corresponding serial number, determine that the first data frame is an in-order delivery data frame, and store the first data frame in the reordering buffer queue; after waiting for each data frame including the first data frame and with a serial number smaller than that of the first data frame to be stored in the reordering buffer queue, the first data frame and the previous data frames are delivered together, and the foregoing data frames include the first data frame and each data frame with a serial number smaller than that of the first data frame. The specific delivery method may refer to the examples of S301 to S308.

[0214] In a possible implementation manner, the reordering buffer queue control module 102 is specifically configured to refresh the reordering buffer queue after the first data frame and the first data frame are delivered together, and the sliding of the buffer queue window may refer to the above examples.

[0215] In a possible implementation, the reordering buffer queue control module 102 is specifically configured to, after the transceiver module receives the first data frame with the corresponding sequence number, determine that the first data frame is the first data frame for in-order delivery; deliver the first data frame, and refresh the reordering buffer queue. For example, when the receiving end determines that the MPDU with SN = 1 received is the first MPDU for in-order delivery, it can immediately deliver the MPDU with SN = 1 and refresh the reordering buffer queue, which can further reduce the delay of in-order delivery of MPDUs.

[0216] In a possible implementation, after receiving the first data frame with the corresponding sequence number, if it is determined that the first data frame is a non-in-order delivery data frame, the first data frame is immediately delivered. The specific delivery method can refer to the examples in S201 to S207.

[0217] In a possible implementation, the block acknowledgment scoreboard control module 101 is further configured to, after successfully delivering the first data frame, update the arrival status corresponding to the first data frame in the block acknowledgment scoreboard to "arrived".

[0218] When the first device receives a data frame, the block acknowledgment scoreboard control module 101 is further configured to generate and send a block acknowledgment frame. The delay requirement for the block acknowledgment frame is relatively high. For example, it needs to complete the feedback within 16 microseconds. Therefore, the block acknowledgment scoreboard control module 101 that generates and sends the block acknowledgment frame is usually implemented by hardware. The operations performed by the reordering buffer queue control module have relatively loose delay requirements and can be implemented by either software or hardware.

[0219] Therefore, the first device can be implemented in the following ways:

[0220] One example Figure 13 is the second structural schematic diagram of a first device provided by an embodiment of the present application. As Figure 13 shown, the block acknowledgment scoreboard control module 101 in the first device 10 is a hardware module, and the reordering buffer queue control module 102 is also a hardware module. For example, the block acknowledgment scoreboard control module 101 can be a chip manufactured according to different standards (including), such as a hardware module in an 802.11 chip, and the reordering buffer queue control module 102 can be another hardware module in the 802.11 chip. Or, the block acknowledgment scoreboard control module 101 and the reordering buffer queue control module 102 are integrated into a hardware module in an 802.11 chip, etc.

[0221] One example Figure 14 is the third structural schematic diagram of a first device provided by an embodiment of the present application. As Figure 14As shown, the first device 20 includes a first block acknowledgment scoreboard control module 201, a second block acknowledgment scoreboard control module 202, and a reorder buffer queue control module 203. Since the reorder buffer queue control operation of the reorder buffer queue control module can be implemented in software, but the latency requirement for block acknowledgment frames is relatively high and needs to be implemented in hardware to minimize latency, therefore, in the embodiments of this application, the control operation of the acknowledgment scoreboard control module 202 is divided into two parts. The first block acknowledgment scoreboard control module 201 is used to generate and send block acknowledgment frames, and the second block acknowledgment scoreboard control module 202 is used for writing and reading the block acknowledgment scoreboard, that is, refreshing the arrival situation record and providing the arrival situation of the data frames that need to be queried to the reorder buffer queue control module 203. Refer to Figure 14 , the first block acknowledgment scoreboard control module 201 is a hardware module, and the second block acknowledgment scoreboard control module 202 and the reorder buffer queue control module 203 are software modules that can run on the CPU. In this case, the first block acknowledgment scoreboard control module 201 can be integrated with the software modules, that is, the second block acknowledgment scoreboard control module 202 and the reorder buffer queue control module 203, in one chip, or can be separately provided in two chips. Refer to the submission method in the above example, and the interaction completes the submission of data frames. The second block acknowledgment scoreboard control module 202 and the reorder buffer queue control module 203 refer to the above embodiments and interact at the software level to complete the submission of data frames, while avoiding the bottleneck in the speed of generating block acknowledgment frames by software, which affects the speed of generating block acknowledgment frames and feedback.

[0222] It should be understood that Figures 12 - 14 the modules shown are only examples, and each module can perform its operations or variations of its operations with reference to the method part in the embodiments of this application. In the examples provided in the embodiments of this application, the block acknowledgment scoreboard control module (or the first block acknowledgment scoreboard control module and the second block acknowledgment scoreboard control module). It is mainly responsible for recording the arrival situation of the block acknowledgment scoreboard and replying the block acknowledgment frame to the sender; the reorder buffer queue control module is mainly responsible for MPDU submission, duplicate removal, and reordering of in-sequence service MPDUs, etc. In practical applications, these modules can also perform other operations, which are not limited by the examples in the embodiments of this application.

[0223] The embodiments of this application provide another data frame submission device, Figure 15 which is one of the structural schematic diagrams of a second device provided in the embodiments of this application. The second device 30 includes at least one control module, and the control modules are coupled to each other, as Figure 15 shown, the control module includes a submission scoreboard control module 301 and a reorder buffer queue control module 302.

[0224] A submission scoreboard control module 301 is used to control the submission situation of data frames corresponding to serial numbers recorded in the submission scoreboard.

[0225] A reordering buffer queue control module 302 is used to control the reordering buffer queue, and the reordering buffer queue is used to cache data frames corresponding to serial numbers.

[0226] The reordering buffer queue control module 302 is further used to determine whether each data frame in at least one serial-numbered data frame has arrived according to the caching situation of the window of the data frame corresponding to the serial number in the reordering buffer queue and the submission situation of the data frame corresponding to the serial number recorded in the submission scoreboard; for the first data frame whose arrival situation determined for the submission scoreboard and the reordering buffer queue is not arrived, perform a submission operation on it after the first data frame corresponding to the serial number arrives.

[0227] In a possible implementation manner, the reordering buffer queue control module 302 is further used to discard the second data frame whose arrival situation determined for the submission scoreboard and the reordering buffer queue is arrived after the second data frame corresponding to the serial number arrives again.

[0228] This second device can be applied in Figures 8 - 11 the submission methods shown in the examples such as S401 to S402, S501 to S508, etc. shown. Among them, the second device may further include a transceiver module, which is mainly used to receive data frames with multiple different SNs sent by a sending end, such as MPDUs. After receiving an MPDU, the reordering buffer queue control module 302 queries the submission scoreboard and the reordering buffer queue to determine whether the MPDU received for each SN has arrived. For example, if in the submission scoreboard, the value of the window corresponding to the MPDU of an SN is 0, and the window corresponding to the MPDU of the SN in the reordering buffer queue is empty, it can be determined that the MPDU of this SN has not arrived; otherwise, it is determined that the MPDU has arrived. If it is determined that the MPDU has arrived, it is discarded. If it is determined that the MPDU has not arrived, that is, the MPDU that arrives for the first time, then according to the above examples, it is determined whether the MPDU is an in-sequence submission MPDU or a non-in-sequence submission MPDU. If it is an in-sequence submission, the MPDU is stored in the reordering buffer queue. If it is a non-in-sequence submission, it is immediately submitted. After each submission, the submission scoreboard control module 301 controls to refresh the submission scoreboard once. After each in-sequence submission MPDU is stored, the reordering buffer queue control module 302 controls to refresh the reordering buffer queue once, and after the MPDU in the reordering buffer queue is submitted, the reordering buffer queue control module 302 controls to refresh the reordering buffer queue once. Optionally, the refresh of the submission scoreboard control module 301 and the reordering buffer queue control module 302 can refer to the examples of S501 to S508 and the reference Figures 8 - 11 of the examples, which will not be elaborated here.

[0229] In a possible implementation manner, the reordering buffer queue control module 302 is specifically configured to, after the receiving module receives the first data frame with the corresponding sequence number, determine that the first data frame is an in-order delivery data frame, store the first data frame in the reordering buffer queue; after waiting for the first data frame waiting for in-order delivery to be stored in the reordering buffer queue, deliver the first data frame and the first data frame together according to the reordering buffer queue and the delivery scoreboard.

[0230] In a possible implementation manner, the reordering buffer queue control module 302 is specifically configured to, after the receiving module receives the first data frame with the corresponding sequence number, determine that the first data frame is an in-order delivery data frame, store the first data frame in the reordering buffer queue; if at least one data frame with a sequence number smaller than that of the first data frame has completed delivery, refresh the reordering buffer queue, and update the delivery status of at least one data frame in the delivery scoreboard to delivered; after waiting for each in-order delivery data frame including the first data frame and with a sequence number smaller than that of the first data frame to be stored in the reordering buffer queue, deliver the first data frame and the previous data frames together, where the previous data frames include the first data frame and each in-order delivery data frame with a sequence number smaller than that of the first data frame.

[0231] In a possible implementation manner, after the first data frame and the first data frame are delivered together, the reordering buffer queue control module 302 refreshes the reordering buffer queue, and the delivery scoreboard control module 301 refreshes the delivery scoreboard.

[0232] In a possible implementation manner, after the transceiver module receives the first data frame with the corresponding sequence number, the reordering buffer queue control module 302 determines that the first data frame is the first data frame for in-order delivery; delivers the first data frame, refreshes the reordering buffer queue, and the delivery scoreboard control module 301 delivers the delivery scoreboard.

[0233] In the above possible implementation manners, for the specific delivery method, the method for refreshing the reordering buffer queue, and the method for refreshing the delivery scoreboard, reference can be made to the examples of S301 to S308.

[0234] In a possible implementation manner, after receiving the first data frame with the corresponding sequence number, if it is determined that the first data frame is a non-in-order delivery data frame, the first data frame is delivered immediately. Reference can be made to Figures 8 - 11 the delivery method of the non-in-order delivery MPDU in the example in

[0235] In a possible implementation manner, the delivery scoreboard control module 301 is further configured to, after the reordering buffer queue control module 302 successfully delivers the first data frame, update the delivery status of the first data frame in the delivery scoreboard to delivered, and the reordering buffer queue control module 302 updates the cache status corresponding to the first data frame in the reordering buffer queue to empty.

[0236] Both the submission scoreboard control module 301 and the reorder buffer queue control module 302 in the second device 30 can be implemented by software or hardware. For example: the submission scoreboard control module 301 can be a hardware module, and the reorder buffer queue control module 302 can also be a hardware module. For instance, the submission scoreboard control module 301 can be a chip manufactured according to different standards (including), such as a hardware module in an 802.11 chip, and the reorder buffer queue control module 302 can be another hardware module in the 802.11 chip. Or, the submission scoreboard control module 301 and the reorder buffer queue control module 302 are integrated into a hardware module in an 802.11 chip. Or, both the submission scoreboard control module 301 and the reorder buffer queue control module 302 are software modules that can run on the CPU. Or, one of the submission scoreboard control module 301 and the reorder buffer queue control module 302 is a software module and the other is a hardware module, etc.

[0237] It should be understood that Figure 15 The modules shown are only examples, and each module can perform its operations or variations of its operations with reference to the method part in the embodiments of the present application. Figure 15 The functions implemented by the modules shown are also an example. In a possible implementation manner, after the second device 30 receives a data frame, the submission scoreboard control module 301 can also submit the data frame according to the data frame not arriving, or discard the data frame according to the data frame having arrived, etc., without being limited to the above examples.

[0238] Furthermore, when the second device receives a data frame, it is also necessary to maintain a block acknowledgment scoreboard control module for generating and sending block acknowledgment frames. The latency requirement for block acknowledgment frames is relatively high. Therefore, as Figure 16 shown, the second device 30 further includes a block acknowledgment scoreboard control module 303 for generating and sending block acknowledgment frames, which is implemented by hardware. Both the submission scoreboard control module 301 and the reorder buffer queue control module 302 can be implemented by software or hardware.

[0239] Optionally, the block acknowledgment scoreboard control module 303 can also control the block acknowledgment scoreboard to record the arrival situation when each data frame corresponding to the sequence number arrives. This control function can be implemented by software or hardware.

[0240] Figure 17It is a schematic structural diagram of a data frame transmission system provided by an embodiment of the present application. The transmission method provided by the embodiment of the present application can be applied to the scenario of this system. The system includes a sending end 40 and a receiving end 50. Among them, both the sending end 40 and the receiving end 50 are devices supporting the IEEE 802.11be / Wi-Fi 7 / EHT protocol, the IEEE 802.11bn / UHR / Wi-Fi 8 protocol, and the IEEE 802.15 / UWB protocol. For example, the sending end 40 can be a communication device serving as an Access Point (AP) station (logical function). This communication device can be a terminal or a communication module in the terminal, or a circuit or chip responsible for the communication function (such as a modulation and demodulation (Modem) chip, also known as a baseband chip, or a System on Chip (SoC) chip containing a modem core or a System in Package (SIP) chip).

[0241] The receiving end 50 can be a communication device serving as a Non-AP station (logical function). This communication device can be a terminal or a communication module in the terminal, or a circuit or chip responsible for the communication function (such as a modulation and demodulation (Modem) chip, also known as a baseband chip, or a System on Chip (SoC) chip containing a modem core or a System in Package (SIP) chip).

[0242] The sending end 40 is mainly used to generate a Sequence Number (SN) for each data frame to be sent, such as an MPDU, in the order generated by the service, such as generating an increasing SN. And it is responsible for the sending of the MPDU, re-sending the MPDU that fails to be sent according to the block acknowledgment frame, etc.

[0243] The receiving end 50 is mainly used to determine whether to deliver according to whether the MPDU has arrived. It can also be responsible for reading and writing (i.e., querying and refreshing) the arrival status of the block acknowledgment scoreboard, controlling the reordering cache of the reordering cache queue for in-sequence service MPDUs, and reading and writing the delivery status of the delivery scoreboard, etc. Specifically, refer to the above Figures 1 - 16 example to implement the delivery of the MPDU.

[0244] In addition, as Figure 18 shown, Figure 18 it is a schematic structural diagram of the device 60 according to an embodiment of the present application. Figure 18The device 60 shown includes a transceiver unit 601 and a processing unit 602. The device 60 can be used to execute the methods S101 to S103, or S201 to S207, or S301 to S310, or S401 to S402, or S501 to S509 in the above embodiments. When the device 60 is used to execute the methods S101 to S103, or S201 to S207, or S301 to S310 in the above embodiments, it is equivalent to the first device exemplified in the method. When the device 60 is used to execute the methods S401 to S402, or S501 to S509 in the above embodiments, it is equivalent to the second device exemplified in the method.

[0245] It should be noted that the division of units in the embodiments of the present application is illustrative, only a logical function division, and there may be other division methods in actual implementation. Each functional unit in the embodiments of the present application can be integrated in a processing unit, or each unit can exist physically alone, or two or more units can be integrated in one unit. For example, in the above embodiment, the device 60 including the transceiver unit 601 and the processing unit 602 can be the same unit or different units; the device 60 including the transceiver unit 601 and the processing unit 602 can be the same unit or different units. The above integrated unit can be implemented in the form of hardware, such as a chip, or in the form of a software functional unit.

[0246] In addition, the embodiments of the present application also provide a communication device 70, refer to Figure 19 shown in Figure 19 is a schematic structural diagram of the communication device 70 in the embodiments of the present application. The communication device 70 includes a storage medium 701 and a processor 702 connected to the storage medium 701. The storage medium 701 can cache data frames, such as MPDUs. The processor 702 can be used to execute various operations in the methods in the above embodiments.

[0247] In addition, the embodiments of the present application also provide a device 80, see Figure 20 shown in Figure 20 is a schematic structural diagram of a device 80 provided in the embodiments of the present application. As Figure 20As shown, the device 80 may include a processor 801, a memory 802 coupled to the processor 801, and a transceiver 803. The transceiver 803 may be a communication interface, an optical module, etc., for receiving packets or data information, etc. The processor 801 may be a Central Processing Unit (CPU), a Network Processor (NP), or a combination of a CPU and an NP, for performing the forwarding processing related steps in the device exemplified in the above embodiments. The processor may also be an Application-Specific Integrated Circuit (ASIC), a Programmable Logic Device (PLD), or a combination thereof. The above PLD may be a Complex Programmable Logic Device (CPLD), a Field-Programmable Gate Array (FPGA), a Generic Array Logic (GAL), or any combination thereof. The processor 801 may refer to a single processor or may include multiple processors. The memory 802 may include volatile memory, such as Random-Access Memory (RAM); the memory may also include non-volatile memory, such as Read-Only Memory (ROM), flash memory, a Hard Disk Drive (HDD), or a Solid-State Drive (SSD); the memory 802 may also include a combination of the above types of memory. The memory 802 may refer to a single memory or may include multiple memories, for storing program instructions. In one embodiment, computer-readable instructions are stored in the memory 802, and the computer-readable instructions include multiple software modules, such as a sending module, a processing module, and a receiving module. After the processor 801 executes each software module, it may perform corresponding operations according to the instructions of each software module. In this embodiment, the operations performed by a software module actually refer to the operations performed by the processor 801 according to the instructions of the software module. Optionally, the processor 801 may also store the program code or instructions for implementing the solution of the embodiments of the present application. In this case, the processor 801 does not need to read the program code or instructions from the memory 802.

[0248] The device 80 can be used to execute the methods in the above embodiments. Specifically, the device 80 can execute the operations performed by the receiving end in methods S101 to S103, or execute S201 to S207, or execute S301 to S310, or execute S401 to S402, or execute S501 to S509.

[0249] An embodiment of the present application further provides a computer-readable storage medium. Instructions are stored in the computer-readable storage medium, and when they run on a processor, they implement some or all of the operations in any one of the methods in any one of the embodiments described above.

[0250] An embodiment of the present application further provides a computer program product, including a computer program, which when running on a processor, implements some or all of the operations in any one of the methods in any one of the embodiments described above.

[0251] An embodiment of the present application further provides a chip, including: an interface circuit and a processor. The interface circuit is connected to the processor, and the processor is configured to cause the chip to execute some or all of the operations in any one of the methods in any one of the embodiments described above.

[0252] An embodiment of the present application further provides a chip system, including: a processor, the processor is coupled to a memory, and the memory is used to store programs or instructions. When the programs or instructions are executed by the processor, the chip system implements some or all of the operations in any one of the methods in any one of the embodiments described above.

[0253] Optionally, the processor in the chip system can be one or more. The processor can be implemented by hardware or by software. When implemented by hardware, the processor can be a logic circuit, an integrated circuit, etc. When implemented by software, the processor can be a general-purpose processor that implements by reading software code stored in the memory.

[0254] Optionally, the memory in the chip system can also be one or more. The memory can be integrated with the processor or separately arranged from the processor, which is not limited in the embodiments of the present application. Exemplarily, the memory can be a non-transitory processor, such as a read-only memory ROM, which can be integrated with the processor on the same chip or separately arranged on different chips. The embodiments of the present application do not specifically limit the type of the memory and the setting manner of the memory and the processor.

[0255] Exemplarily, the chip system can be an FPGA, an ASIC, a system on chip (SoC), a CPU, an NP, a digital signal processor (DSP), a microcontroller unit (MCU), a programmable logic device (PLD), or other integrated chips.

[0256] In the description of the present application, the terms "first", "second", "third", "fourth", etc. (if any) in the specification, claims and the above drawings are used to distinguish similar objects, and do not necessarily describe a specific order or sequence. It should be understood that the data used in this way can be interchanged under appropriate circumstances, so that the embodiments described herein can be implemented in an order different from that shown or described herein. In addition, the terms "comprising" and "having" and any variations thereof are intended to cover non-exclusive inclusion. For example, a process, method, system, product or device that includes a series of steps or units does not necessarily have to be limited to those steps or units clearly listed, but may include other steps or units not clearly listed or inherent to these processes, methods, products or devices.

[0257] Those skilled in the art can clearly understand that for the convenience and brevity of description, the specific working processes of the systems, devices and units described above can refer to the corresponding processes in the foregoing method embodiments, and will not be elaborated herein.

[0258] In several embodiments provided in the present application, it should be understood that the disclosed systems, devices and methods can be implemented in other ways. For example, the device embodiments described above are merely illustrative. For example, the division of units is only a logical service division, and there can be other division methods in actual implementation. For example, multiple units or components can be combined or integrated into another system, or some features can be ignored or not executed. Another point is that the displayed or discussed couplings or direct couplings or communication connections between each other can be indirect couplings or communication connections through some interfaces, devices or units, and can be in electrical, mechanical or other forms.

[0259] The units described as separate components may or may not be physically separated, and the components shown as units may or may not be physical units, that is, they can be located in one place, or distributed to multiple network units. Some or all of the units can be selected according to actual needs to achieve the purpose of the solution of this embodiment.

[0260] In addition, in each embodiment of the present application, each service unit can be integrated into one processing unit, or each unit can exist physically alone, or two or more units can be integrated into one unit. The above-mentioned integrated units can be implemented in the form of hardware or in the form of software service units.

[0261] If the integrated unit is implemented in the form of a software service unit and sold or used as an independent product, it can be stored in a computer-readable storage medium. Based on such an understanding, all or part of the technical solution of the present application can be embodied in the form of a software product. The computer software product is stored in a storage medium and includes several instructions for causing a computer device (which can be a personal computer, a server, or a network device, etc.) to execute all or part of the steps of the methods in the various embodiments of the present application. The foregoing storage medium includes: USB flash drives, mobile hard disks, ROM, RAM, Random Access Memory, magnetic disks, or optical discs, etc., various media that can store program codes.

[0262] Those skilled in the art should be able to realize that in the above one or more examples, the services described in the present application can be implemented by hardware, software, firmware, or any combination thereof. When implemented using software, these services can be stored in a computer-readable medium or transmitted as one or more instructions or codes on a computer-readable medium. The computer-readable medium includes computer storage media and communication media, where the communication media includes any medium that facilitates the transmission of a computer program from one place to another. The storage medium can be any available medium that can be accessed by a general-purpose or special-purpose computer.

[0263] The above specific implementation manners further elaborate on the purpose, technical solution, and beneficial effects of the present application. It should be understood that the above is only the specific implementation manners of the present application.

[0264] The above, the above embodiments are only used to illustrate the technical solutions of the present application and are not intended to limit them; although the present application has been described in detail with reference to the foregoing embodiments, those of ordinary skill in the art should understand that they can still modify the technical solutions recorded in the foregoing embodiments, or perform equivalent replacements for some of the technical features; and these modifications or replacements do not cause the essence of the corresponding technical solutions to deviate from the scope of the technical solutions of the various embodiments of the present application.

Claims

1. A method for delivering data frames, characterized in that, comprising: determining whether each data frame in at least one numbered data frame has arrived according to the arrival situation of the data frame corresponding to the sequence number recorded in the block acknowledgment scoreboard; for a first data frame whose arrival situation recorded in the block acknowledgment scoreboard is not arrived, performing a delivery operation on it after the first data frame corresponding to the sequence number arrives.

2. The method for delivering data frames according to claim 1, characterized in that, the method further comprises: for a second data frame whose arrival situation recorded in the block acknowledgment scoreboard is arrived, discarding it after the second data frame corresponding to the sequence number arrives again.

3. The method for delivering data frames according to claim 1 or 2, characterized in that, performing the delivery operation on the first data frame whose arrival situation recorded in the block acknowledgment scoreboard is not arrived after the first data frame corresponding to the sequence number arrives, comprising: after receiving the first data frame corresponding to the sequence number, determining that the first data frame is an in-order delivery data frame, and storing the first data frame in a reordering buffer queue; after waiting for the first data frame for in-order delivery to be stored in the reordering buffer queue, delivering the first data frame and the first data frame together.

4. The method for delivering data frames according to claim 1 or 2, characterized in that, performing the delivery operation on the first data frame whose arrival situation recorded in the block acknowledgment scoreboard is not arrived after the first data frame corresponding to the sequence number arrives, comprising: after receiving the first data frame corresponding to the sequence number, determining that the first data frame is an in-order delivery data frame, and storing the first data frame in a reordering buffer queue; after waiting for each data frame including the first data frame and having a sequence number smaller than that of the first data frame to be stored in the reordering buffer queue, delivering the first data frame and the previous data frames together, where the previous data frames include the first data frame and each data frame having a sequence number smaller than that of the first data frame.

5. The method for delivering data frames according to claim 3 or 4, characterized in that, after the first data frame and the first data frame are delivered together, refreshing the reordering buffer queue.

6. The method for delivering data frames according to any one of claims 1 to 5, characterized in that, performing the delivery operation on the first data frame whose arrival situation recorded in the block acknowledgment scoreboard is not arrived after the first data frame corresponding to the sequence number arrives, comprising: after receiving the first data frame corresponding to the sequence number, determining that the first data frame is the first data frame for in-order delivery; delivering the first data frame and refreshing the reordering buffer queue.

7. The method for delivering data frames according to claim 1 or 2, characterized in that, performing the delivery operation on the first data frame whose arrival situation recorded in the block acknowledgment scoreboard is not arrived after the first data frame corresponding to the sequence number arrives, comprising: after receiving the first data frame corresponding to the sequence number, determining that the first data frame is a non-in-order delivery data frame, and immediately delivering the first data frame.

8. The method for delivering data frames according to any one of claims 1 to 7, Characterized in that, The method further includes: After successfully transmitting the first data frame, updating the arrival status corresponding to the first data frame in the block acknowledgment scoreboard to "arrived".

9. A method for transmitting a data frame, Characterized in that, Including: Determining whether each data frame in at least one sequence-numbered data frame has arrived based on the caching status of the window of the data frame corresponding to the sequence number in the reordering buffer queue and the transmission status of the data frame corresponding to the sequence number recorded in the transmission scoreboard; For a first data frame whose arrival status determined for the transmission scoreboard and the reordering buffer queue is "not arrived", performing a transmission operation on the first data frame after the first data frame corresponding to the sequence number arrives.

10. The method for transmitting a data frame according to claim 9, Characterized in that, The method further includes: For a second data frame whose arrival status determined for the transmission scoreboard and the reordering buffer queue is "arrived", discarding the second data frame after the second data frame corresponding to the sequence number arrives again.

11. The method for transmitting a data frame according to claim 9 or 10, Characterized in that, The step of performing a transmission operation on the first data frame whose arrival status determined for the transmission scoreboard and the reordering buffer queue is "not arrived" after the first data frame corresponding to the sequence number arrives includes: After receiving the first data frame corresponding to the sequence number, determining that the first data frame is an in-sequence transmission data frame, and storing the first data frame in the reordering buffer queue; After the first data frame and the first data frame in the reordering buffer queue are stored, waiting for the first data frame to be transmitted together with the first data frame.

12. The method for transmitting a data frame according to claim 9 or 10, Characterized in that, The step of performing a transmission operation on the first data frame whose arrival status determined for the transmission scoreboard and the reordering buffer queue is "not arrived" after the first data frame corresponding to the sequence number arrives includes: After receiving the first data frame corresponding to the sequence number, determining that the first data frame is an in-sequence transmission data frame, and storing the first data frame in the reordering buffer queue; If at least one data frame with a sequence number smaller than that of the first data frame has completed transmission, refreshing the reordering buffer queue and updating the transmission status corresponding to the at least one data frame in the transmission scoreboard to "transmitted"; After each in-sequence transmission data frame including the first data frame and with a sequence number smaller than that of the first data frame is stored in the reordering buffer queue, transmitting the first data frame together with the previous data frames, where the previous data frames include the first data frame and each in-sequence transmission data frame with a sequence number smaller than that of the first data frame.

13. The method for transmitting a data frame according to claim 11 or 12, Characterized in that, After the first data frame is transmitted together with the first data frame, refreshing the reordering buffer queue and the transmission scoreboard.

14. The method for transmitting a data frame according to any one of claims 9 to 13, Characterized in that, For the first data frame determined to have not arrived at the submission scoreboard and the reordering buffer queue, after the first data frame with the corresponding sequence number arrives, performing a submission operation on it, including: After receiving the first data frame with the corresponding sequence number, determining that the first data frame is the first data frame for in-order submission; Submitting the first data frame and refreshing the reordering buffer queue and the submission scoreboard.

15. The method for data frame submission according to claim 9 or 10, wherein, For the first data frame determined to have not arrived at the submission scoreboard and the reordering buffer queue, after the first data frame with the corresponding sequence number arrives, performing a submission operation on it, including: After receiving the first data frame with the corresponding sequence number, determining that the first data frame is a non-in-order submission data frame and immediately submitting the first data frame.

16. The method for data frame submission according to any one of claims 9 to 15, wherein, The method further includes: After successfully submitting the first data frame, updating the submission status corresponding to the first data frame in the submission scoreboard to submitted and updating the buffer status corresponding to the first data frame in the reordering buffer queue to empty.

17. A first device, including at least one control module, where the at least one control module includes a coupled block acknowledgment scoreboard control module and a reordering buffer queue control module, wherein, The at least one control module implements the method according to any one of claims 1 to 8.

18. A second device, including at least one control module and a transceiver module, where the at least one control module includes a coupled block acknowledgment scoreboard control module and a reordering buffer queue control module, wherein, The at least one control module implements the method according to any one of claims 9 to 16.

19. A communication device, wherein, The communication device includes a processor and a storage medium, and the storage medium stores instructions, and when the instructions are run by the processor, the method according to any one of claims 1 to 8 is implemented, or the method according to any one of claims 9 to 16 is implemented.

20. A computer-readable storage medium, wherein, The computer-readable storage medium includes instructions, and when the instructions are run by the processor, the method according to any one of claims 1 to 8 is implemented, or the method according to any one of claims 9 to 16 is implemented.

21. A computer program product, wherein, The computer program product includes instructions, and when the instructions are run by the processor, the method according to any one of claims 1 to 8 is implemented, or the method according to any one of claims 9 to 16 is implemented.