Communication device, control method, and program

JP7686380B2Active Publication Date: 2025-06-02CANON KK
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2020166969
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Filing Date
2020-10-01
Publication Date
2025-06-02
Estimated Expiration
2040-10-01

AI Technical Summary

Technical Problem

Embedded products face memory resource constraints when implementing A-MSDU aggregation for multiple destinations, leading to inefficient throughput due to insufficient memory resources or inappropriate frame mixing.

Method used

A communication apparatus manages transmission queues and MAC frames based on destination information, optimizing aggregation by linking frames within a specified size and selectively inputting address information into the queue, thereby reducing memory requirements.

Benefits of technology

This approach enables efficient aggregation to multiple destinations while minimizing memory usage, improving throughput and communication speed.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000012_0000
    Figure 00000012_0000
  • Figure 00000013_0000
    Figure 00000013_0000
  • Figure 00000014_0000
    Figure 00000014_0000
Patent Text Reader

Abstract

To provide a communication device, a control method, and a program that optimize aggregation to a plurality of destinations while suppressing an increase in memory resources.SOLUTION: In an aggregation process of a wireless driver, a communication device determines based on the destination and aggregation size of a MAC frame whether to put address information that has not been put into a transmission queue into the transmission queue, and puts the address information into the transmission queue if it is determined to put the address information into the transmission queue.SELECTED DRAWING: Figure 3
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention relates to a communication device capable of aggregating MAC (Media Access Control) frames.

Background Art

[0002] In wireless LAN standards (IEEE802.11n and ac), A-MSDU (Aggregation-MAC Service Data Unit) is defined to improve the communication speed by bundling MAC frames to increase the data transmission efficiency. By aggregating MAC frames with A-MSDU, it is possible to reduce the periods required by the protocol such as the transmission waiting time and the ACK waiting time with respect to the data transmission period, and improve the communication speed.

[0003] For example, Patent Document 1 discloses a technique for determining the maximum length of a frame while complying with the constraints of the transmission time defined by the standard, and combining data frames within that range to improve throughput.

[0004] On the other hand, in order to implement A-MSDU, it is necessary to concatenate the MAC frames generated by the upper-layer protocol stack during transmission in the wireless driver according to the frame format of A-MSDU. As a general implementation, the MAC frames generated by the protocol stack are put into a queue, the wireless driver takes them out from the queue, concatenates a predetermined number of MAC frames, adds a wireless header to generate a wireless communication frame, and transfers it to the wireless device. Also, when performing wireless communication with multiple destinations, multiple queues are prepared and MAC frames are concatenated for each destination.

Prior Art Documents

Patent Documents

[0005]

Patent Document 1

Summary of the Invention

[0006] However, in embedded products, the available memory capacity is limited, so having a separate queue for each destination may lead to insufficient memory resources. On the other hand, if aggregation is implemented with a small number of queues, MAC frames destined for multiple destinations may become mixed within the queue, preventing proper aggregation and potentially reducing throughput.

[0007] In view of the above-mentioned problems, the present invention aims to optimize aggregation to multiple destinations while suppressing an increase in memory resources. [Means for solving the problem]

[0008] A communication device according to one aspect of the present invention includes: a first management means for managing a transmission queue into which address information accessible to MAC frames is entered; a second management means for managing MAC frames destined for the same destination by linking them together in an aggregate size or less based on the address information entered into the transmission queue; a determination means for determining whether or not to enter address information not yet entered into the transmission queue into the transmission queue based on the destination of the MAC frame and the aggregate size; and an entry means for entering address information into the transmission queue if the determination means determines that address information not yet entered into the transmission queue should be entered into the transmission queue. [Effects of the Invention]

[0009] According to the present invention, aggregation to multiple destinations can be optimized while suppressing an increase in memory resources. [Brief explanation of the drawing]

[0010] [Figure 1] A block diagram showing an example of the configuration of a communication network according to the embodiment. [Figure 2]A block diagram showing an example configuration of a communication device according to the embodiment. [Figure 3] A flowchart illustrating the aggregation process of the wireless driver according to the embodiment. [Figure 4] A diagram showing a packet management structure according to an embodiment. [Figure 5] A diagram showing an example of transmission queue and list management according to the embodiment. [Figure 6] A diagram showing the aggregation processing sequence of a wireless driver according to an embodiment. [Modes for carrying out the invention]

[0011] Embodiments of the present invention will be described in detail below with reference to the attached drawings. Note that the following embodiments are not limiting to the present invention, and not all combinations of features described in the embodiments are essential to the solutions of the present invention. The configuration of the embodiments may be modified or changed as appropriate depending on the specifications and various conditions (usage conditions, usage environment, etc.) of the apparatus to which the present invention is applied. The technical scope of the present invention is determined by the claims and is not limited by the following individual embodiments.

[0012] Figure 1 is a block diagram showing an example of the configuration of a communication network according to an embodiment. In Figure 1, the communication system 11 includes communication devices 1 to 4. In the example in Figure 1, communication device 1 is an access point, and communication devices 2 to 4 are stations. Communication devices 1 to 4 are devices equipped with communication functions, such as cameras, printers, tablets, and PCs (Personal Computers). In this case, the communication system 11 can configure a wireless network in infrastructure mode. Infrastructure mode is one of the operating modes of wireless LANs as defined by IEEE 802.11. In infrastructure mode, communication between stations takes place via the access point. For example, in infrastructure mode, video images captured by a camera (communication device 2) can be transmitted to communication devices 3 and 4 via communication device 1 and displayed on multiple displays (communication devices 3 and 4). Alternatively, content edited on a tablet (communication device 2) can be transmitted to communication devices 3 and 4 via communication device 1 and printed on multiple printers (communication devices 3 and 4) according to their intended use.

[0013] Communication device 2 transmits video or print data as wireless packets to communication devices 3 and 4 via communication device 1. At this time, communication device 1 handles wireless packets from each communication device 3 and 4 simultaneously, thereby streamlining aggregation processing and improving communication speed. For example, communication device 1 can improve communication speed by transmitting wireless packets of the largest possible aggregation size to each communication device 3 and 4.

[0014] Furthermore, communication device 2 can also transmit aggregated packets to each communication device 3 and 4 at the maximum possible aggregation size for each destination, so that communication device 1 can efficiently send aggregated packets to each communication device 3 and 4. Here, the maximum aggregation size that each communication device 1 to 4 can handle is predetermined by the device specifications and communication link method. For example, when connecting using IEEE802.11ac as the communication link method, the maximum aggregation size of A-MSDU is 10K bytes, and in the case of IEEE802.11n, the maximum aggregation size is 8K bytes.

[0015] Furthermore, a wireless link 12 is established between communication devices 1 and 2, a wireless link 13 is established between communication devices 1 and 3, and a wireless link 14 is established between communication devices 1 and 4. In this case, each communication device 1 to 4 can determine the maximum aggregation size on wireless links 12 to 14 by exchanging capabilities in advance. For example, wireless links 12 and 13 are connected using IEEE 802.11ac, and wireless link 14 is connected using IEEE 802.11n. However, communication device 4 is limited by its specifications to support aggregation up to 6K bytes. In this case, each communication device 1 and 2 maintains a table for managing the maximum aggregation size for each destination, and performs aggregation up to 10K bytes when the destination is communication device 3, and up to 6K bytes when the destination is communication device 4.

[0016] Figure 2 is a block diagram showing an example configuration of a communication device according to an embodiment. Although Figure 2 uses communication device 1 from Figure 1 as an example, communication devices 2 to 4 can be configured similarly. Among the functional modules of the communication device 1 shown in FIG. 2, for the functions implemented by software, a program for providing the functions of each functional module is stored in a memory such as a ROM (Read Only Memory). Then, the program is read into a RAM (Random Access Memory) and executed by a CPU (Central Processing Unit) to be realized. For the functions implemented by hardware, for example, by using a predetermined compiler, a dedicated circuit can be automatically generated on an FPGA from a program for realizing the functions of each functional module. FPGA is the abbreviation of Field Programmable Gate Array. Also, a Gate Array circuit may be formed in the same manner as the FPGA and realized as hardware. Also, it may be realized by an ASIC (Application Specific Integrated Circuit). Note that the configuration of the functional blocks shown in FIG. 2 is an example, and a plurality of functional blocks may constitute one functional block, or any functional block may be divided into blocks that perform a plurality of functions.

[0017] In FIG. 2, the communication device 1 includes a CPU 21, an on-chip memory 22, a main memory 23, and a radio control unit 24. The CPU 21, the on-chip memory 22, the main memory 23, and the radio control unit 24 are connected to each other via a system bus 25. The system bus 25 is a transfer path for various data.

[0018] The CPU 21 comprehensively controls each hardware component via an OS (Operating System) or a device driver and controls the communication device 1. The CPU 21 may be a GPU (Graphics Processing Unit). The CPU 21 includes an application 210, a protocol stack 211, and a radio driver 212. The radio driver 212 includes a connection size determination unit 213, a queue management unit 214, a list management unit 215, and a management type selection unit 216.

[0019] The on-chip memory 22 stores control programs such as the OS and device drivers executed by the CPU 21. The on-chip memory 22 includes a transmission queue 217. The main memory 23 stores various programs and data of the application 210, protocol stack 211, and wireless driver 212 executed by the CPU 21, and provides a work area.

[0020] The wireless control unit 24 communicates with a counterpart communication device via a wireless network. The wireless control unit 24 is composed of an interface such as SDIO, PCIe, or USB for connecting to a host system composed of the CPU 21, on-chip memory 22, and main memory 23. SDIO is Secure Digital Input / Output, PCIe is Peripheral Component Interconnect-Express, and USB is Universal Serial Bus.

[0021] In the communication device 1, when performing data communication, the socket API (Application Programming Interface) is called by the application 210. The protocol stack 211 performs protocol processing such as TCP / IP (Transmission Control Protocol / Internet Protocol) and generates a MAC frame.

[0022] The wireless driver 212 receives MAC frames from the protocol stack 211 and performs aggregation processing on multiple MAC frames when generating a wireless communication frame. At this time, the wireless driver 212 aggregates the MAC frames in the order they are placed in the transmission queue 217, adds a wireless header, and forwards it to the wireless control unit 24 as a wireless communication frame. In this aggregation processing, the wireless driver 212 concatenates the MAC frames for each destination, with an aggregation size less than or equal to that of each destination. At this time, in order to realize A-MSDU, the wireless driver 212 concatenates the MAC frames generated by the protocol stack 211 according to the A-MSDU frame format.

[0023] The aggregation size determination unit 213 determines the aggregation size for each of the multiple destination nodes. For example, when communication device 1 in Figure 1 sends MAC frames to each of the communication devices 3 and 4, the destination nodes are each of the communication devices 3 and 4. The aggregation size determination unit 213 may include a table that stores the aggregation sizes set for each of the multiple destination nodes. The aggregation size determination unit 213 may also determine the minimum aggregation size from the aggregation sizes for each of the multiple destination nodes and apply the minimum aggregation size to all destinations.

[0024] The queue management unit 214 manages the transmission queue 217 into which address information that can access MAC frames is entered. This address information is, for example, the starting address of the packet management structure in which the MAC frame is stored.

[0025] The list management unit 215 manages MAC frames in a list format by associating them with the same destination based on the address information accessible to the MAC frame. For example, if the first address information of the first MAC frame has already been placed in the transmission queue 217, the list management unit 215 manages the first MAC frame and the second MAC frame with the same destination in a list. In this case, the second address information of the second MAC frame being managed in the list is not placed in the transmission queue 217. The list management unit 215 also manages MAC frames with the same destination by associating them with an aggregation size or less. At this time, MAC frames are managed by the queue management unit 214 and the list management unit 215 so that aggregation can be properly performed for each destination.

[0026] The management type selection unit 216 selects whether or not to add address information not yet placed in the transmission queue 217 to the transmission queue 217, based on the destination and aggregation size of the MAC frame. For example, if the first address information of the first MAC frame has already been placed in the transmission queue 217, and it is possible to associate the second MAC frame with the same destination as the first MAC frame within an aggregation size of less than or equal to the aggregation size, the management type selection unit 216 selects not to add the second address information of the second MAC frame to the transmission queue 217. In this case, the list management unit 215 associates the second MAC frame with the first MAC frame and manages it in a list. Furthermore, if the management type selection unit 216 has already placed the first address information of the first MAC frame into the transmission queue 217, and it is not possible to associate the first MAC frame with the second MAC frame destined for the same destination within the aggregation size, it selects to place the second address information of the second MAC frame into the transmission queue 217. Furthermore, if the management type selection unit 216 has not yet placed the first address information of the first MAC frame and the second address information of the second MAC frame to the same destination into the transmission queue 217, it selects to place the first address information into the transmission queue 217.

[0027] The transmit queue 217 receives address information that allows access to the MAC frame. For example, the transmit queue 217 receives the starting address of the packet management structure where the MAC frame is stored. Let's assume there are multiple MAC frames destined for the same destination. In this case, the transmit queue 217 will only store the starting address of the packet management structure that is the destination of one of the multiple packet management structures that are the destinations of each of those MAC frames.

[0028] Figure 3 is a flowchart illustrating the aggregation process of the wireless driver according to this embodiment. Here, we explain the process from when the protocol stack 211 in Figure 2 generates MAC frames, when the wireless driver 212 acquires them, when they are managed for each destination and aggregated, and when they are forwarded to the wireless control unit 24.

[0029] Each step in Figure 3 is realized by the CPU 21 reading and executing a program stored in the memory unit of the communication device 1. Alternatively, at least a portion of the flowchart shown in Figure 3 may be implemented in hardware. In the case of hardware implementation, for example, a dedicated circuit can be automatically generated on the FPGA from the program required to implement each step by using a predetermined compiler. Alternatively, a Gate Array circuit may be formed in a similar manner to the FPGA, and the implementation may also be carried out using an ASIC. In this case, each block in the flowchart shown in Figure 3 can be considered a hardware block. Note that multiple blocks may be combined to form a single hardware block, or a single block may be composed of multiple hardware blocks.

[0030] In S1 of Figure 3, the wireless driver 212 in Figure 2 determines whether the MAC frame generated by the protocol stack 211 can be obtained. If it can be obtained, the process proceeds to S2; otherwise, the process proceeds to S6. In S2, the wireless driver 212 refers to the MAC header or IP (Internet Protocol) header in the MAC frame and determines whether a MAC frame for that destination is in the transmission queue 217. At this time, the wireless driver 212 may refer to the destination MAC address or destination IP address to identify the destination.

[0031] The wireless driver 212 proceeds to S3 if there is no MAC frame for the same destination in the transmit queue 217, and to S4 if there is. In S3, the wireless driver 212 sends the starting address of the packet management structure in which the MAC frame is stored to the transmit queue 217 and returns to S1. In S4, the wireless driver 212 determines whether the total MAC frame size, including the MAC frames associated with the same destination MAC frame, is less than or equal to the aggregation size determined by the concatenation size determination unit 213. If the total MAC frame size exceeds the aggregation size, the wireless driver 212 proceeds to S3; otherwise, it proceeds to S5.

[0032] In S5, the wireless driver 212 associates MAC frames added to the list with MAC frames already sent to the transmit queue 217, and manages the list. The method of managing MAC frames as a list by associating them will be described later.

[0033] In S6, the wireless driver 212 dequeues the starting address of the packet management structure in which the MAC frame is stored from the transmit queue 217 and proceeds to S7. In S7, the wireless driver 212 performs aggregation processing, including the MAC frame associated with the MAC frame whose starting address in the destination packet management structure is dequeued, and then proceeds to S8. In S8, the wireless driver 212 adds a wireless header to the aggregated MAC frame to generate a wireless communication frame, and then proceeds to S9. In S9, the wireless driver 212 transfers the wireless communication frame to the wireless control unit 24 and terminates processing.

[0034] Here, in S1, a determination may be made as to whether or not the data can be forwarded to the wireless control unit 24. That is, if it can be forwarded to the wireless control unit 24, the starting address of the packet management structure in which the MAC frame is stored may be immediately dequeued from the transmission queue 217, aggregated, and then forwarded with a wireless header added. Furthermore, while the determination was made based on the aggregation size in S4, the determination could also be made based on the number of aggregations. For example, assuming the MAC frame size is 1.5K bytes and the maximum aggregation size is 6K bytes, the determination could be made by setting the number of aggregations to 4.

[0035] Figure 4 shows a packet management structure according to an embodiment. Here, we will describe the packet management structure 40 that stores MAC frames in the main memory 23 of Figure 2. In Figure 4, the packet management structure 40 comprises a management information unit 41 and a data unit 42.

[0036] The management information unit 41 includes the size of the data unit 42, the data length of the frame stored in the data unit 42, the starting address of the data unit 42, and the starting address of the next packet management structure 40. The data section 42 is a buffer sized to store frames. The data section 42 stores the MAC header, IP header, TCP / UDP header, and payload as packets.

[0037] MAC frames generated by the protocol stack 211 are stored in the packet management structure 40, and the wireless driver 212 retrieves the MAC frame from the starting address of the data section 42. In S5, the wireless driver 212 associates MAC frames in a list format using the starting address of the next packet management structure 40. In the last packet management structure 40 in the list, the wireless driver 212 manages the starting address of the next packet management structure 40 as NULL or 0.

[0038] Here, the transmission queue 217 is configured as a FIFO (First In First Out) with a predetermined size and holds the starting address of the packet management structure that stores the MAC frame. The wireless driver 212 performs list management by associating the starting addresses of other packet management structures with the packet management structure. Since list management allows for the management of MAC frames for each destination by adding only the information of the starting address, it is possible to reduce the required memory size compared to implementing a FIFO for MAC frames in the transmission queue 217.

[0039] Figure 5 shows an example of transmission queue and list management according to the embodiment. Here, we will explain how, in communication device 1 of Figure 2, the process of Figure 3 is executed to manage MAC frames destined for communication devices 3 and 4 so that they can be appropriately aggregated for each destination. Furthermore, it will be explained assuming that all MAC frames are 1.5K bytes in size.

[0040] In Figure 5, packet management structures 504 to 510 are generated by the protocol stack 211 in numerical order and retrieved by the wireless driver 212 in the order they were generated. Packet management structures 504 and 508 store MAC frames destined for communication device 3, while packet management structures 505 to 507, 509, and 510 store MAC frames destined for communication device 4.

[0041] The following describes how to generate a list associated with the starting address stored in the transmission queue 217 in Figure 5. The wireless driver 212 obtains the packet management structure 504 and places the starting address 503 of the packet management structure 504 into the transmission queue 217. Next, the wireless driver 212 obtains the packet management structure 505. At this time, the destination of the packet management structure 505 is different from the destination of the packet management structure 404 that has already been placed in the transmission queue 217, so the wireless driver 212 places the starting address 502 of the packet management structure 505 into the transmission queue 217.

[0042] Next, the wireless driver 212 obtains the packet management structure 506. At this time, a packet management structure 505 with the same destination as the packet management structure 506 already exists in the transmission queue 217. Therefore, the wireless driver 212 uses the starting address of the packet management structure 506 to associate it with the starting address 512 of the next packet management structure 40 in the management information unit 41.

[0043] Next, the wireless driver 212 sequentially associates packet management structures 507 and 509, which have the same destination as packet management structure 505. Furthermore, the wireless driver 212 associates the packet management structure 504 with the packet management structure 508 which has the same destination. Furthermore, the wireless driver 212 obtains a packet management structure 510. At this time, there is a packet management structure 509 with the same destination as the packet management structure 510, but associating them would exceed the maximum aggregation size of 6K bytes. In this case, the wireless driver 212 does not perform list management to associate the packet management structure 510 with the packet management structure 509, and instead places the starting address 501 of the packet management structure 510 into the transmission queue 217.

[0044] Through the above operations, a list is generated that is linked to the starting address stored in the transmission queue 217 in Figure 5, while staying within the maximum aggregation size. Subsequently, the wireless driver 212 dequeues MAC frames sequentially from the transmit queue 217 and aggregates the MAC frames stored in the packet management structure 40, which is managed in a list. This allows the wireless driver 212 to perform aggregation processing appropriately for each destination using only one transmit queue 217, thereby improving data transmission throughput while suppressing an increase in memory resources.

[0045] Figure 6 shows the aggregation processing sequence of the wireless driver according to the embodiment. Here, we will explain the transmission operation including aggregation processing of multiple MAC frames F1 to F7 to communication devices 3 and 4 in communication device 1 of Figure 1. MAC frames F1 and F5 are destined for communication device 3, and MAC frames F2 to F4, F6, and F7 are destined for communication device 4. Furthermore, the storage location of each MAC frame is assumed to be the packet management structure 504 to 510 in Figure 5.

[0046] In Figure 6, in S10 and S11, the protocol stack 211 in Figure 2 generates a MAC frame F1 destined for communication device 3 in the main memory 23. In S12, the wireless driver 212 acquires MAC frame F1, and in S13, it places the starting address 503 of the stored packet management structure 504 into the transmit queue 217.

[0047] In S14 and S15, the protocol stack 211 generates a MAC frame F2 destined for communication device 4 in the main memory 23. In S16, the wireless driver 212 receives MAC frame F2, and in S17, it places the starting address 502 of the stored packet management structure 505 into the transmit queue 217.

[0048] In S18 and S19, the protocol stack 211 generates a MAC frame F3 destined for communication device 4 in the main memory 23. In S20, the wireless driver 212 obtains MAC frame F3, and in S21, associates the starting address of the stored packet management structure 506 with the packet management structure 505.

[0049] In S22 and S23, the protocol stack 211 generates a MAC frame F4 destined for communication device 4 in the main memory 23. In S24, the wireless driver 212 obtains MAC frame F4, and in S25, it associates the starting address of the stored packet management structure 507 with the packet management structure 506.

[0050] In S26 and S27, the protocol stack 211 generates MAC frame F5 destined for communication device 3 in main memory 23. In S28, the wireless driver 212 obtains MAC frame F5, and in S29, associates the starting address of the stored packet management structure 508 with the packet management structure 504.

[0051] In S30 and S31, the protocol stack 211 generates a MAC frame F6 destined for communication device 4 in main memory 23. In S32, the wireless driver 212 obtains MAC frame F6, and in S33, associates the starting address of the stored packet management structure 509 with the packet management structure 507.

[0052] In S34 and S35, the protocol stack 211 generates MAC frame F7 destined for communication device 4 in main memory 23. In S36, the wireless driver 212 acquires MAC frame F7. At this time, if the wireless driver 212 associates the starting address of the packet management structure 510 of MAC frame F7 with the packet management structure 509, the number of frames listed and managed starting with MAC frame F2 will exceed the aggregation size. Therefore, in S37, the wireless driver 212 puts the starting address 501 of the stored packet management structure 510 into the transmission queue 217.

[0053] In S38 and S39, the wireless driver 212 was unable to obtain the MAC frame, so it dequeues the starting address 503 of the packet management structure 504 from the transmission queue 217 and aggregates the MAC frames F1 and F5. Furthermore, the wireless driver 212 dequeues the starting address 502 of the packet management structure 505 from the transmission queue 217 and aggregates MAC frames F2-F4 and F6. Furthermore, the wireless driver 212 dequeues the starting address 501 of the packet management structure 510 from the transmission queue 217, and since there is no association with the packet management structure 510, it does not perform aggregation processing of MAC frame F7.

[0054] In S40 and S41, the wireless driver 212 adds a wireless header to the aggregated MAC frame and the unaggregated MAC frame F7 to generate a wireless communication frame. In S42, the wireless driver 212 issues a transfer command to the wireless control unit 203, and in S43 and S44, the wireless communication frame is transferred from the main memory 23 to the wireless control unit 203.

[0055] As described above, according to the embodiment described above, the queue management unit manages the transmission queue into which address information accessible to MAC frames is entered, and the list management unit associates and manages MAC frames for the same destination based on the address information entered into the transmission queue. This makes it possible to manage MAC frames for each destination while reducing the amount of data entered into the transmission queue, thereby optimizing aggregation to multiple destinations while suppressing an increase in memory resources.

[0056] In the embodiment described above, the aggregation size for each destination communication device 3 and 4 is determined and managed in a table, and in S4 of Figure 3, the determination is made using the aggregation size for each destination. In addition to this method, for example, the smallest aggregation size may be determined from the aggregation sizes of all destinations, and the determination in S4 may be made using the smallest aggregation size for all destinations. Alternatively, an individual aggregation size may be applied to the destination with the most accesses, and the smallest aggregation size may be applied to the other destinations.

[0057] Furthermore, the above-described embodiment took the example of the case where communication devices 1 to 4 operate in infrastructure mode. In addition to this, communication devices 1 to 4 may also operate in combination of multiple BSS (Basic Service Set) modes. The multiple BSS modes are a combination of at least two of the following: infrastructure mode, WiFi direct mode, and ad-hoc mode. For example, when WiFi direct mode is used simultaneously between communication devices 1 and 4 in addition to infrastructure mode, communication devices 1 to 4 may generate and operate two transmission queues for each mode.

[0058] Furthermore, the list management unit 215 may choose not to perform list management for MAC frames that are of high urgency. MAC frames of high urgency are, for example, MAC frames that contain synchronization information or control information.

[0059] The present invention may also provide a program that implements one or more of the functions of the above-described embodiments to a system or device via a network or storage medium. Furthermore, one or more of the functions of the above-described embodiments can also be implemented by a process in which one or more processors in the computer of the system or device read and execute the program. [Explanation of Symbols]

[0060] 11 Communication system, 1-4 Communication device, 12-14 Wireless link, 21 CPU, 22 On-chip memory, 23 Main memory, 24 Wireless control unit, 25 System bus, 210 Application, 211 Protocol stack, 212 Wireless driver, 213 Link size determination unit, 214 Queue management unit, 214 List management unit, 216 Management type selection unit, 217 Transmit queue

Claims

1. a first management means for managing a transmission queue into which address information accessible to a MAC (Media Access Control) frame is input; a second management means for managing MAC frames having the same destination by linking them together within an aggregation size based on address information entered into the transmission queue; a determination means for determining whether or not to put address information that has not been put into the transmission queue into the transmission queue based on the destination of the MAC frame and the aggregation size; an input means for inputting the address information into the transmission queue when the determination means determines that the address information not yet input into the transmission queue should be input into the transmission queue; A communication device comprising:

2. The communication device according to claim 1 , further comprising: a determining unit for determining an aggregation size for each of a plurality of destination nodes.

3. 3. The communication device according to claim 1, further comprising a transfer unit that links the MAC frames for each destination within an aggregation size of each destination and transfers the linked MAC frames as a communication frame.

4. 4. The communication device according to claim 1, wherein the address information is address information of a storage destination of the MAC frame.

5. the determination means determines not to put the second address information of the second MAC frame into the transmission queue when the first address information of the first MAC frame has already been put into the transmission queue and a second MAC frame having the same destination as the first MAC frame can be associated with the first MAC frame within the aggregation size; 5. The communication device according to claim 1, wherein the second management unit manages the second MAC frames in a list.

6. The communication device according to any one of claims 1 to 4, characterized in that when the first address information of a first MAC frame has already been put into the transmission queue, if it is not possible to link a second MAC frame having the same destination as the first MAC frame within the aggregation size, the determination means determines to put the second address information of the second MAC frame into the transmission queue.

7. The communication device according to any one of claims 1 to 4, characterized in that the determination means determines that the first address information should be put into the transmission queue when the second address information of a second MAC frame having the same destination as the first address information of a first MAC frame has not yet been put into the transmission queue.

8. 8. The communication device according to claim 6, wherein the determining unit includes a table that stores the aggregation size set for each of a plurality of destination nodes.

9. 9. The communication device according to claim 6, wherein the determining means determines a minimum aggregation size from aggregation sizes for each of a plurality of destination nodes and applies the minimum aggregation size to all destinations.

10. The wireless communication device further includes an execution means for executing a plurality of BSS (Basic Service Set) modes in parallel; The communication device according to claim 1 , wherein the transmission queue is generated for each of the BSS modes.

11. The communication device according to claim 10, wherein the plurality of BSS modes are a combination of at least two of an infrastructure mode, a WiFi Direct mode, and an ad-hoc mode.

12. 12. The communication device according to claim 1, wherein the second management unit does not perform list management of MAC frames that include synchronization information or control information.

13. 13. The communication device according to claim 1, wherein the second management unit identifies the destination of the MAC frame based on a destination MAC address or a destination IP address included in the MAC frame.

14. managing a transmission queue into which address information accessible to a MAC (Media Access Control) frame is placed; managing MAC frames having the same destination by associating them with each other within an aggregation size based on address information entered into the transmission queue; determining whether or not to put address information that has not been put into the transmission queue into the transmission queue based on the destination of the MAC frame and the aggregation size; a step of putting the address information that has not been put into the transmission queue into the transmission queue when it is determined that the address information should be put into the transmission queue; A control method comprising:

15. A program for causing a computer to operate as the communication device according to any one of claims 1 to 13.