Systems for and methods for large packet support over wi-fi
By increasing MPDU size and employing advanced CRC polynomials, the limitations of IEEE 802.11 specifications are overcome, enhancing throughput and error detection for larger packets in wireless communication.
Patent Information
- Application Number
- JP2025066185
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2024-10-29
- Filing Date
- 2025-04-14
- Publication Date
- 2025-11-11
AI Technical Summary
The existing IEEE 802.11 specifications limit the maximum MAC Protocol Data Unit (MPDU) length to 11,454 bytes, restricting throughput in wireless communication devices, and the current 32-bit CRC polynomial is inadequate for error detection in larger MPDUs.
Increase the MPDU size beyond 11,454 bytes and use factorizable or prime factor polynomials for CRC to enhance error detection, allowing devices to communicate larger payloads while maintaining interoperability with legacy systems.
Enables efficient transmission of larger packets, improving throughput and error detection capabilities without compromising compatibility with existing devices.
Smart Images

Figure 2025168647000001_ABST
Abstract
Description
[Technical Field]
[0001] Field of Disclosure This application claims the benefit of and priority to Indian Provisional Patent Application No. 2024-21033845, filed on April 29, 2024, which is incorporated herein by reference in its entirety.
[0002] Field of Disclosure This disclosure relates generally to systems and methods for communication between devices, such as Wi-Fi devices, and more particularly to frame aggregation, such as MAC Service Data Unit (MSDU) aggregation. [Background technology]
[0003] Background to the disclosure Over the past few decades, the market for wireless communication devices has grown by orders of magnitude, fueled by the use of portable devices and the increasing connectivity and data communication between devices of all kinds. Improvements in digital radio frequency (RF) circuit manufacturing, as well as advances in circuit integration and other aspects, have made wireless equipment smaller, cheaper, and more reliable. However, the widespread adoption of these devices can lead to congested transmission media for wireless communications, such as those in homes, offices, and industrial environments. Summary of the Invention [Means for solving the problem]
[0004] overview The 802.11 Wireless Local Area Network (WLAN) specification limits the maximum supported MAC Protocol Data Unit (MPDU) length to 11,454 bytes. This limit was imposed as part of the 802.11n (HT) and ac (VHT) protocol specifications. The same limit was carried over to the 802.11ax (HE) and 802.11be (EHT) specifications. This limit is due to the use of the current IEEE-CRC-32 polynomial used to calculate the MPDU's Frame Check Sequence (FCS).
[0005] The current 32-bit CRC (Cyclic Redundancy Check) uses a polynomial that can detect up to 4 errors for MPDU sizes up to 11,454 bytes. To improve throughput between 802.11-enabled WLAN devices with fixed PHY performance, devices can increase the number of MSDUs within an Aggregate MSDU (A-MSDU) and extend the length of the A-MSDU. The increase in the number (and length) of MSDUs within an Aggregate MAC Service Data Unit (A-MSDU) is subject to specification and peer capabilities and is limited. For example, the WiFi-7 specification does not provide for MPDUs larger than 11,454 bytes for the wide variety of STAs and APs deployed in many consumer devices. WiFi-6 and 7 introduce newer, higher data rates (13x2) and higher bandwidths (320 MHz), but do not increase the MAC byte limit.
[0006] According to the present disclosure, the maximum size of an MPDU or A-MSDU is increased to improve throughput between two WLAN devices without increasing the negotiated Block ACK window size (or the number of MPDUs in an A-MPDU). Updating the existing IEEE-CRC-32 polynomial improves error detection for relatively large MPDU sizes. While the Wi-Fi physical layer (PHY) can decode these long packets, the MAC layer is limited by the MPDU's 11,454-byte limit. Embodiments of the present disclosure can help the MAC free up more bytes to the PHY layer, which can then utilize the PHY's longer packet capabilities.
[0007] Peer negotiation is performed using special capability bit flags or other indications in the association request or response frames, or in the A-MPDU setup frames (which add block acknowledgment requests / responses), to allow devices to exchange larger payloads. Once this exchange is complete, a Wi-Fi station (STA) like the WiFi-8STA can send and receive frames containing MPDUs larger than 11,454 bytes (e.g., 64-kb MPDUs) to and from another node, such as another STA device or an AP in an ad-hoc network.
[0008] The IEEE 802.11 (e.g., 802.11be) protocol defines an MPDU formed by encapsulating an MSDU (or A-MSDU) with a MAC header and a Frame Check Sequence (FCS). The FCS serves as a packet integrity check and may be placed as a suffix on each MPDU. A 32-bit CRC polynomial (IEEE-CRC-32) is used to calculate the FCS. Prime factor polynomials were first introduced in the 802.11 amendments in the 1990s. The traditional IEEE-CRC-32 polynomial has a minimum Hamming distance of 4 or greater up to a maximum packet size of 11,454 bytes (which corresponds to the maximum MPDU size). Beyond this packet length, the number of detectable bits is reduced to 3. According to the present disclosure, factorizable polynomials can improve detection capabilities for MPDUs larger than 11,454 bytes while maintaining interoperability with devices that may not be configured to use factorizable polynomials.
[0009] In some aspects, the techniques described herein relate to a system including a first device configured to: advertise a first information element indicating a first maximum size of a MAC Protocol Data Unit (MPDU) frame of the first device; select a first polynomial for a cyclic redundancy check (CRC) of an MPDU frame received from a second device based on at least the first maximum size; calculate a CRC of the received MPDU frame using the selected first polynomial; and detect errors in the MPDU frame based on at least the calculated CRC.
[0010] In some aspects, the techniques described herein relate to a system in which the first device is configured to: advertise the first information element associated with a Media Access Control (MAC) association between the first device and the second device; select the first polynomial in response to receiving a first response to the first information element indicating the first maximum size of an MPDU frame of the second device; and select a second polynomial different from the first polynomial in response to receiving a second response to the first information element indicating a second maximum size of an MPDU frame of the second device.
[0011] In some aspects, the technology described herein relates to a system in which the first device is configured to transmit beacon frames or probe response frames using the second polynomial; and transmit other frames to the second device using the first polynomial.
[0012] In some embodiments, the technology described herein relates to a system in which the first polynomial is a factorizable polynomial and the second polynomial is a prime factor polynomial.
[0013] In some embodiments, the technology described herein relates to a system in which the first maximum size is greater than 11,454 bytes.
[0014] In some embodiments, the technology described herein relates to a system wherein said first maximum size is selected from the group consisting of 16 kilobytes, 24 kilobytes, and 32 kilobytes.
[0015] In some embodiments, the technology described herein relates to a system in which the second maximum size is 11,454 bytes.
[0016] In some embodiments, the technology described herein relates to a system in which the first polynomial is 0xC9D204F5.
[0017] In some aspects, the techniques described herein relate to a system in which the first information element is included in any one of a beacon frame, a probe response frame, a reassociation request frame, a reassociation response frame, an additional block acknowledgment (ADDBA) request frame, or an ADDBA response frame.
[0018] In some embodiments, the technology described herein relates to a system in which the first device is an AP device and the second device is a non-AP device.
[0019] In some aspects, the technology described herein relates to a system in which the MPDU frame includes channel state information for a beamforming feedback matrix.
[0020] In some aspects, the techniques described herein relate to a method that includes: advertising, by a first device, a first maximum size of a MAC Protocol Data Unit (MPDU) frame of the first device; selecting a first polynomial for a cyclic redundancy check (CRC) of an MPDU frame received from a second device based at least on the first maximum size; calculating a CRC of the received MPDU frame using the selected first polynomial; and detecting an error in the MPDU frame based at least on the calculated CRC.
[0021] In some aspects, the techniques described herein relate to a method further comprising receiving, by the first device, from the second device a response indicating a second maximum size of an MPDU frame of the second device; and selecting a second polynomial based on at least the second maximum size, wherein the first maximum size exceeds the second maximum size.
[0022] In some aspects, the techniques described herein relate to a method in which the advertisement of the first maximum size is provided in a first information element associated with a media access control (MAC) association between the first device and the second device.
[0023] In some embodiments, the techniques described herein relate to a method further including: transmitting, by the first device, a beacon frame or a probe response frame using a second polynomial that is smaller than the first polynomial; and transmitting, by the first device, another frame to the second device using the first polynomial.
[0024] In some embodiments, the techniques described herein relate to methods further comprising using the second polynomial for either CRC encoding or CRC decoding, or both, and wherein the first polynomial is 0xC9D204F5.
[0025] In some embodiments, the technology described herein relates to a method in which the first device is an AP device and the second device is a non-AP device.
[0026] In some aspects, the technology described herein relates to a method in which the MPDU includes an entire beamforming feedback matrix that includes channel state information for multiple channels.
[0027] In some aspects, the techniques described herein relate to a device configured to: advertise a first information element indicating a first maximum size of a MAC Protocol Data Unit (MPDU) frame of the device; select a factorizable polynomial for a cyclic redundancy check (CRC) of an MPDU frame received from a second device based on at least the first maximum size; calculate a CRC of the received MPDU frame using the factorizable polynomial; and detect errors in the MPDU frame based on at least the calculated CRC.
[0028] In some aspects, the techniques described herein relate to a device further configured to: advertise the first maximum size of an MPDU frame to a third device; select a prime factor polynomial for a cyclic redundancy check (CRC) of a second MPDU frame received from the third device based on at least a response from the third device; calculate a second CRC of the received MPDU frame using the prime factor polynomial; and detect an error in the second MPDU frame based on at least the second calculated CRC.
[0029] In some aspects, the techniques described herein relate to a device where the first information element is a beacon frame and the response is included in a probe response frame that corresponds to the beacon frame.
[0030] In some aspects, the techniques described herein relate to a device in which the MPDU frame includes channel state information for a beamforming feedback matrix. [Brief explanation of the drawings]
[0031] BRIEF DESCRIPTION OF THE DRAWINGS Various objects, aspects, features, and advantages of the present disclosure will become more apparent and better understood by reference to the detailed description in conjunction with the accompanying drawings, in which reference characters identify corresponding elements throughout, and in which like reference numbers generally indicate identical, functionally similar, and / or structurally similar elements.
[0032] [Figure 1A] 1 is a block diagram illustrating a network environment including one or more access points that communicate with one or more devices or stations, according to some embodiments.
[0033] [Figure 1B]FIG. 1 is a block diagram illustrating a computing device useful in connection with the methods and systems described herein, according to some embodiments. [Figure 1C] FIG. 1 is a block diagram illustrating a computing device useful in connection with the methods and systems described herein, according to some embodiments.
[0034] [Figure 2] FIG. 1 is a register diagram of an aggregated frame, according to some embodiments.
[0035] [Figure 3] 10 is a graph of the Hamming distance of selected polynomials applied to variable length codewords, according to some embodiments.
[0036] [Figure 4] 10 is a graph of undetectable errors for selected polynomials applied to variable length codewords, according to some embodiments.
[0037] [Figure 5] FIG. 10 is a register diagram of an MPDU delimiter according to some embodiments.
[0038] [Figure 6] FIG. 2 is a sequence diagram of data transmission according to some embodiments.
[0039] The details of various embodiments of the methods and systems are set forth in the accompanying drawings and the description below. DETAILED DESCRIPTION OF THE INVENTION
[0040] Detailed Description The following disclosure provides many different embodiments or examples for implementing different features of the provided subject matter. Specific examples of components and arrangements are described below to simplify the disclosure. These are, of course, merely examples and are not intended to be limiting. For example, in the following description, a first feature in communication with or communicatively coupled to a second feature may include embodiments in which the first feature is in direct communication with or directly coupled to the second feature, as well as embodiments in which additional features intervene between the first and second features such that the first feature is in indirect communication with or indirectly coupled to the second feature. Furthermore, the disclosure may repeat reference numerals and / or characters in various examples. This repetition is for the purposes of brevity and clarity and does not in itself dictate a relationship between the various embodiments and / or configurations described.
[0041] In reading the following description of the various embodiments, the following sections of this specification and the following descriptions of their respective contents may be helpful. Section A describes network and computing environments useful for implementing the embodiments described herein. Section B describes embodiments relating to large packet support over Wi-Fi.
[0042] A. Computing and Network Environment The following IEEE standards (including draft versions of such standards) are incorporated herein by reference in their entirety and made part of this disclosure for all purposes: IEEE 802.11™, IEEE 802.14™, IEEE P802.3™, and IEEE Ethernet standard systems (including but not limited to LRM, VSR, SR, MR, LR, ZR, KR). While this disclosure may reference aspects of these standards, this disclosure is in no way limited by these standards.
[0043] Before describing specific embodiments of the present solution, it may be helpful to describe aspects of the operating environment associated with the methods and systems described herein, as well as associated system components (e.g., hardware elements, etc.). Referring to FIG. 1A, one embodiment of a network environment is illustrated. Briefly, the network environment includes a wireless communication system including one or more access points (APs) or network devices 106, one or more stations or wireless communication devices 102, and network hardware components or network hardware 192. The wireless communication devices 102 may include, for example, laptop computers, tablets, personal computers, and / or mobile phone devices. Details of embodiments of each station or wireless communication device 102 and AP or network device 106 are described in further detail with reference to FIGS. 1B and 1C. In one embodiment, the network environment may be an ad-hoc network environment, an infrastructure wireless network environment, a subnet environment, etc. The network device 106 or AP may be operably coupled to the network hardware 192 via a local area network connection. In some embodiments, the network device 106 may be a 5G base station. The network hardware 192 may include a router, a gateway, a switch, a bridge, a modem, a system controller, an appliance, etc. The network hardware 192 may provide a local area network connection to the communication system. Each of the network devices 106 or APs may have an associated antenna or antenna array for communicating with wireless communication devices within its area. The wireless communication device 102 may register with a particular network device 106 or AP to receive service from the communication system (e.g., via a SU-MIMO or MU-MIMO configuration). In the case of a direct connection (e.g., point-to-point communication), some wireless communication devices may communicate directly via an assigned channel and communication protocol.Some of the wireless communication devices 102 may be mobile or relatively static relative to the network devices 106 or APs.
[0044] In some embodiments, a device may refer to and / or include at least one integrated circuit, general-purpose processor, multi-core processor, software programmable device, or programmable logic controller, among other possible circuits and / or hardware configured to communicate incident to the execution of instructions. In some embodiments, a network device 106 or AP may include a device or module (including a combination of hardware and software) that enables a wireless communication device 102 to connect to a wired network using Wi-Fi or other standards. A network device 106 or AP may also be referred to as a wireless access point (WAP). A network device 106 or AP may be implemented (e.g., configured, designed, and / or built) to operate in a wireless local area network (WLAN). In some embodiments, a network device 106 or AP may be capable of connecting to a router (e.g., via a wired network) as a standalone device. In other embodiments, a network device 106 or AP may be a component of a router. A network device 106 or AP may provide access to a network for multiple devices. For example, a network device 106 or AP may connect to a wired Ethernet connection and provide wireless connectivity using a radio frequency link so that other devices 102 can utilize the wired connection. A network device 106 or AP may be implemented to support standards for transmitting and receiving data using one or more radio frequencies. These standards and the frequencies they use may be defined by the IEEE (e.g., the IEEE 802.11 standard, etc.). A network device 106 or AP may be configured and / or used to support public internet hotspots and / or may be configured and / or used on a network to extend the Wi-Fi signal range of the network.
[0045] In some embodiments, the access points or network devices 106 may be used in a wireless network (e.g., in a home, car, or building) (e.g., IEEE 802.11, Bluetooth, ZigBee, any other radio frequency-based network protocol and / or variations thereof). Each wireless communication device 102 may include and / or be coupled to a built-in radio. Such wireless communication devices 102 and / or access points or network devices 106 may operate in accordance with various aspects of the disclosure presented herein to improve performance, reduce cost and / or size, and / or enhance broadband applications. Each wireless communication device 102 may be capable of functioning as a client node seeking access to resources (e.g., data, connections to network nodes such as servers, etc.) via one or more access points or network devices 106.
[0046] The network connection may include any type and / or format of network. For example, it may include any of a point-to-point network, a broadcast network, a telecommunications network, a data communication network, and a computer network. The topology of the network may be bus, star, or ring. The network may be any such network topology known to those skilled in the art that can support the operations described herein. In some embodiments, different types of data may be transmitted using different protocols. In other embodiments, the same type of data may be transmitted using different protocols.
[0047] The communication device 102 and the access point or network device 106 may be arranged and / or implemented as any type and form of computing device, such as a computer, network device, or appliance, capable of communicating over any type and form of network and performing the operations described herein. FIGS. 1B and 1C are block diagrams illustrating computing devices 100 useful for implementing an embodiment of the wireless communication device 102 or the network device 106. As shown in FIGS. 1B and 1C, each computing device 100 includes a processor 121 (e.g., a central processing unit) and a main memory unit 122. As shown in FIG. 1B, the computing device 100 may include a storage device 128, an installation device 116, a network interface 118, an I / O controller 123, display devices 124a-124n, a keyboard 126, and a pointing device 127, such as a mouse. The storage device 128 may include an operating system and / or software. As shown in FIG. 1C, each computing device 100 may further include additional optional elements. Optional components may include, for example, memory port 103, bridge 170, one or more input / output devices 130a-130n, and cache memory 140 in communication with central processing unit or processor 121.
[0048] Central processing unit or processor 121 is any logic circuitry that responds to and processes instructions fetched from main memory unit 122. In many embodiments, central processing unit or processor 121 is provided by a microprocessor unit, which may include, for example, those manufactured by Intel® Corporation of Santa Clara, California, IBM® (International Business Machines) of White Plains, New York, or AMD® (Advanced Micro Devices) of Sunnyvale, California. Computing device 100 may be based on any of these processors or any other processor capable of operating as described herein.
[0049] Main memory unit 122 is one or more memory chips that store data and allow the microprocessor or processor 121 to directly access any storage location. Main memory unit 122 can be any type or variety of static random access memory (SRAM), dynamic random access memory (DRAM), ferroelectric RAM (FRAM), NAND flash, NOR flash, solid-state drive (SSD), etc. Main memory unit 122 can be based on any of the memory chips described above or any other available memory chip capable of operating as described herein. In the embodiment shown in FIG. 1B, processor 121 communicates with main memory unit 122 via system bus 150 (described in more detail below). FIG. 1C illustrates an embodiment of computing device 100 in which the processor communicates directly with main memory unit 122 via memory port 103. For example, in FIG. 1C, main memory unit 122 can be DRAM.
[0050] FIG. 1C illustrates an embodiment in which main processor 121 communicates directly with cache memory 140 through a secondary bus, sometimes referred to as a backside bus. In other embodiments, main processor 121 communicates with cache memory 140 using system bus 150. Cache memory 140 typically has a faster response time than main memory unit 122 and is provided, for example, by SRAM, BSRAM, or EDRAM. In the embodiment illustrated in FIG. 1C, processor 121 communicates with various I / O devices 130 through local system bus 150. Various buses can be used to connect central processing unit or processor 121 to any of I / O devices 130. Examples of buses that can be used include a VESAVL bus, an ISA bus, an EISA bus, a Micro Channel Architecture (MCA) bus, a PCI bus, a PCI-X bus, a PCI-Express bus, or a NuBus. In an embodiment in which the I / O device is a video display 124, processor 121 can communicate with display 124 using an Advanced Graphics Port (AGP). 1C illustrates an embodiment of computer or computer system 100 in which main processor 121 can communicate directly with I / O device 130b using communications technologies such as HYPER TRANSPORT, RAPID IO, or INFINI BAND. FIG. 1C also illustrates an embodiment in which local bus and direct communication are mixed: processor 121 communicates with I / O device 130a using a local interconnect bus, but communicates directly with I / O device 130b.
[0051] A wide variety of I / O devices 130a-130n may be present on computing device 100. Input devices include keyboards, mice, trackpads, trackballs, microphones, dials, touchpads, touchscreens, and drawing tablets. Output devices include video displays, speakers, inkjet printers, laser printers, projectors, and dye-sublimation printers. As shown in FIG. 1B, the I / O devices may be controlled by I / O controller 123. The I / O controller may control one or more I / O devices, such as keyboard 126 and pointing device 127, such as a mouse or optical pen. Additionally, the I / O devices may provide storage or installation media for computing device 100. In yet another embodiment, computing device 100 may include a USB connection (not shown) for accepting handheld USB storage devices, such as devices from the USB flash drive line manufactured by TwinTec Industries, Inc. of Los Alamitos, California.
[0052] Referring again to FIG. 1B , computing device 100 may support any suitable installation device 116, such as a disk drive, CD-ROM drive, CD-R / RW drive, DVD-ROM drive, flash memory drive, various types of tape drives, USB devices, hard drives, network interfaces, or other devices suitable for installing software or programs. Computing device 100 may also include a storage device, such as one or more hard disk drives or a redundant array of independent disks, for storing an operating system and other related software, as well as application software programs, such as any programs and software 120 for implementing (e.g., configured and / or designed for) the systems and methods described herein. Optionally, any of installation devices 116 may be used as a storage device. Additionally, the operating system and software may be executed from bootable media.
[0053] Additionally, computing device 100 may include a network interface 118 that connects to a network via a variety of connections, including, but not limited to, standard telephone lines, LAN or WAN links (e.g., 802.11, T1, T3, 56 kb, X.25, SNA, DECNET), broadband connections (e.g., ISDN, Frame Relay, ATM, Gigabit Ethernet, Ethernet-over-SONET), wireless connections, or any or all combinations thereof. Connections can be established using a variety of communication protocols (e.g., TCP / IP, IPX, SPX, NetBIOS, Ethernet, ARCNET, SONET, SDH, Fiber Distributed Data Interface (FDDI), RS232, IEEE 802.11, IEEE 802.11a, IEEE 802.11b, IEEE 802.11g, IEEE 802.11n, IEEE 802.11ac, IEEE 802.11ad, CDMA, GSM, WiMax, and direct asynchronous connections). In one embodiment, computing device 100 communicates with other computing devices 100' via any type and / or form of gateway or tunneling protocol, such as Secure Socket Layer (SSL) or Transport Layer Security (TLS). Network interface 118 may include an internal network adapter, a network interface card, a PCMCIA network card, a card bus network adapter, a wireless network adapter, a USB network adapter, or a modem, or any other device suitable for connecting computing device 100 to any type of network with the capabilities to communicate and perform the various operations described herein.
[0054] In some embodiments, computing device 100 may include or be connected to one or more display devices 124a-124n. Accordingly, any of I / O devices 130a-130n and / or I / O controller 123 may include any type and / or form of suitable hardware, software, or combination of hardware and software to support, enable, or provide for the connection and use of display devices 124a-124n by computing device 100. For example, computing device 100 may include any type and / or form of video adapter, video card, driver, and / or library for coupling with, communicating with, connecting to, or otherwise using display devices 124a-124n. In one embodiment, a video adapter may include multiple connectors for connecting with display devices 124a-124n. In other embodiments, computing device 100 may include multiple video adapters, each connected to display device(s) 124a-124n. In some embodiments, any portion of the operating system of computing device 100 may be configured to use multiple display devices 124a-124n. In yet another embodiment, I / O device 130 may be a bridge between system bus 150 and an external communications bus, such as a USB bus, an Apple Desktop Bus, an RS-232 serial connection, a SCSI bus, a FireWire® bus, a FireWire 800 bus, an Ethernet bus, an AppleTalk® bus, a Gigabit Ethernet bus, an Asynchronous Transfer Mode bus, a Fibre Channel bus, a Fiber Optic bus, a serially connected Small Computer System Interface bus, a USB connection, or an HDMI bus.
[0055] 1B and 1C may operate under the control of an operating system that controls task scheduling and access to system resources. Any operating system may be executed on the computing device 100, such as any version of the MICROSOFT® WINDOWS® operating system, various releases of the Unix® and Linux® operating systems, any version of MACOS® for Macintosh® computers, any embedded operating system, any real-time operating system, any open source operating system, any proprietary operating system, any operating system for mobile computing devices, or any other operating system capable of running on a computing device and performing the various operations described herein. Common operating systems include, but are not limited to, Android®, manufactured by Google®, Inc.; WINDOWS 7, 8, and 10, manufactured by Microsoft Corporation of Redmond, Washington; MACOS, manufactured by Apple Computer, Inc. of Cupertino, California; WebOS®, manufactured by Research In Motion (RIM), Inc.; OS / 2, manufactured by IBM (International Business Machines), Inc. of Armonk, New York; and Linux, a freely available operating system distributed by Caldera Corp. of Salt Lake City, Utah; or any type and / or form of Unix operating system.
[0056] Computer system or computing device 100 may be any workstation, telephone, desktop computer, laptop or notebook computer, server, handheld computer, or mobile phone, or other portable telecommunications device, media playback device, gaming system, or mobile computing device, or any other type and / or form of computing device, telecommunications device, or media device capable of communications. In some embodiments, computing device 100 may have a variety of processors, operating systems, and input devices appropriate for the device. For example, in one embodiment, computing device 100 is a smartphone, mobile device, tablet, or personal digital assistant (PDA). Furthermore, computing device 100 may be any workstation, desktop computer, laptop or notebook computer, server, handheld computer, or mobile phone, or other form of computing or telecommunications device with communications capabilities and sufficient processor power and memory capacity to perform the various operations described herein.
[0057] Aspects of the above operating environment and components will become apparent in the context of the systems and methods disclosed herein.
[0058] aB Support for large packets over Wi-Fi Disclosed herein are systems and methods for frame aggregation. Frame aggregation allows network communications to be consolidated into fewer transmissions. Such aggregation reduces overhead compared to providing multiple individual transmissions. For example, overhead reduction may be achieved by eliminating headers or other frame portions that may be repeated when transmitting multiple packets, and by eliminating negotiations for access to a shared medium, such as in the case of transmit opportunities (TXOPs) in Wi-Fi networks. On the other hand, communicating excessively large data structures can also reduce effective network throughput due to prolonged medium usage caused by data retransmissions. Furthermore, legacy devices using communication protocol parameters can be substantial, and adjusting aggregation size limits can create interoperability issues with legacy devices and other layers of the stack. For example, PHY operation must support application-level aggregation sizes (and vice versa). Similarly, checksums and other non-payload information must also support the selected aggregation level.
[0059] A checksum may include a cyclic redundancy check (CRC). A CRC is an error-detecting code that can be appended to data as a transmission CRC. The CRC can be calculated by dividing the data by a given polynomial. If the bits of the data (and the transmitted CRC) are not corrupted, the transmitted CRC should equal the calculated CRC. If the data is corrupted, the corruption can be detected (and possibly corrected) based on a mismatch between the transmitted and calculated CRC. Different polynomials may be more or less suitable for detecting particular types of errors. For example, prime factor (or prime number) polynomials are very effective at detecting burst errors, in which a sequence of consecutive bits is corrupted. Factorable polynomials (e.g., those divisible by (x+1)) are useful for detecting odd-bit errors, because such errors produce a remainder on division.
[0060] According to the present disclosure, a first polynomial (e.g., a prime factor polynomial) can be selected to generate a CRC for an aggregated frame. The first polynomial can be selected for frames smaller than a predetermined size or for communication links that do not support the second polynomial. For example, an AP or a non-AP device can transmit a beacon frame, a probe response frame, or a frame addressed to a device that does not support the second polynomial. A second polynomial (e.g., a factorizable polynomial) can be selected to further generate a CRC for the aggregated frame. For example, the second polynomial can be selected on a frame-by-frame basis (e.g., for frames larger than a predetermined size) or on a connection-by-connection basis (e.g., for all communications with a particular device). The use of the second polynomial can help increase the detectability of errors and may also contribute to frame retransmission and correctability.
[0061] 2, a register diagram 200 of an aggregated frame is shown in accordance with some embodiments. The register diagram 200 includes a MAC service data unit (MSDU) field that includes a first MSDU subfield 202A and a second MSDU subfield 202B, which are commonly referred to as an aggregated MSDU (A-MSDU) subfield 202. The A-MSDU subfield 202 can include any number of MSDUs, depending on the maximum length of the A-MSDU subfield 202. For example, in some cases, tens or hundreds of additional MSDUs can be included (referred to, in order, as MSDU-1, MSDU-2, ..., MSDU-n). In some cases, the illustrated second MSDU subfield 202B may be located immediately following the first MSDU subfield 202A (e.g., the second MSDU subfield 202B may be an MSDU-2).
[0062] Each MSDU in the A-MSDU subfield 202 corresponds to further subfields of the A-MSDU subfield 202. For example, the A-MSDU subfield 202 may include a destination address subfield 210 indicating the destination of the MSDU, a source address subfield 212 indicating the source of the MSDU, a length subfield 214 indicating the length of the MSDU, and a payload portion (the MSDU subfield 216 itself). In some embodiments, one or more of the MSDU subfields 216 in the A-MSDU subfield 202 may include padding 218 to align the MSDU subfields 216 to a boundary (e.g., to align each MSDU subfield 216 to a word boundary, such as a 32-bit word). In many cases, the repeated address subfields corresponding to different MSDU subfields 216 may overlap each other. However, in some cases (e.g., routers), data from different flows may be aggregated in the same A-MSDU subfield 202. Furthermore, the repeated data may be useful for fragmentation, retransmission, or verification of received MSDU data.
[0063] A MAC protocol data unit (MPDU) 220 packetizes the A-MSDU subfield 202 to further include a MAC header 222 that may contain, for example, frame control data, duration and identification fields, individual source / destination addresses of the packet, a sequence number, or other data. The MPDU 220 may include a security header 224 for an initialization vector or key ID, a message integrity code (MIC) 226 for maintaining data integrity, and a frame check sequence (FCS) subfield 228. The FCS subfield 228 points to a cyclic redundancy check (CRC) checksum subfield, which is determined by calculating the CRC according to a predetermined polynomial.
[0064] According to some embodiments, a cyclic redundancy check (CRC) may refer to or include an error-detecting code that divides data by a predetermined binary polynomial to generate a checksum and uses the remainder to detect transmission errors. Calculating a CRC may refer to or include performing binary division of input data, such as a data frame, by the predetermined binary polynomial. In some embodiments, detecting an error in the context of a CRC may refer to or include a mismatch between a calculated CRC checksum and a received CRC checksum. For example, the received CRC checksum may correspond to the frame check sequence (FCS) of a received MPDU in an MPDU frame, and the calculated CRC checksum may correspond to the checksum of the MPDU using the predetermined polynomial.
[0065] A polynomial, in some embodiments, may refer to or include an algebraic expression that includes variables and coefficients. For example, a binary polynomial includes a series of bits (0 and 1) that correspond to terms that are present and terms that are absent. For example, (1)x 3 +(0)x 2 +(0)x 1 +(1)x 0 can be expressed as 1001. In some embodiments, a prime factor polynomial refers to a polynomial that cannot be factored into simpler polynomials in a particular field, much like how prime numbers cannot be divided evenly in arithmetic. In the context of a cyclic redundancy check (CRC), a prime factor binary polynomial may be used as a divisor in an error checking process, which may exceed the performance of a factorizable polynomial depending on the application and type of error. In some embodiments, a factorizable polynomial is one that can be decomposed into simpler polynomials in a particular field (e.g., a factorizable polynomial can be expressed as a product of lower-order polynomials). In the context of a CRC, a factorizable binary polynomial can be useful for improved computational efficiency and can distinguish certain error patterns, such as odd errors at large frame sizes.
[0066] With further reference to the FCS subfield 228, the FCS can refer to a CRC checksum calculated according to any of a variety of polynomials. For example, a prime factor polynomial may be selected for at least some communications. Such communications may include communications with devices implementing different versions of the protocol (sometimes referred to, without limiting effect, as legacy devices). For example, a device implementing the methods of the present disclosure can communicate with previously deployed AP or non-AP STA devices using an FCS determined according to a prime factor polynomial. The same device can use an FCS determined using a factorizable polynomial for at least some frames or types of frames (e.g., frames that exceed the length of the A-MSDU subfield 202) to communicate with other devices that support the use of that factorizable polynomial. If a device is unaware of the capabilities of other devices (e.g., when providing beacon or probe request frames), it can use a prime factor polynomial to ensure that all devices can decode such frames (alternatively, it can use a factorizable polynomial to prevent those devices from receiving the message).
[0067] Thus, an AP or non-AP device may generate the FCS subfield 228 according to various polynomials, configuration settings, or device-to-device arbitration processes, some examples of which are provided herein. For example, including a particular factorial polynomial may aid in detecting multi-bit errors in the A-MSDU subfield 202 that may not be detectable by an FCS subfield 228 embedded with a CRC generated according to a prime factor polynomial. Some examples of selected polynomials are provided below, e.g., with respect to Figures 3 and 4.
[0068] Various MPDUs 220 may be framed together by separating the constituent MPDUs 220 with MPDU delimiters 232 to form subframes 230 (or frames 240 in the case of a single MPDU 220 frame). The MPDU delimiters 232 may include, for example, a length field, a delimiter checksum, and a further set of flags or other indicators. As described above with respect to the A-MSDU subfield 202, the subframe 230 may include padding subfields 234 to align the MPDU 220 to a word boundary, such as 32 bits. A frame 240 may include any number (e.g., one or more) of subframes 230. The frame 250 may be provided to a physical layer (PHY) device for transmission. A frame may be referred to as an MPDU frame 220 because it includes one or more MSDU subfields 216, which may be aggregated into the A-MSDU subfield 202. Such designations may refer to frames containing any number of MSDU subfields 216, including frames with a single MSDU.
[0069] The contents (e.g., payload) of frame 240 may include various information that may be generated by one or more devices (e.g., an endpoint device, or multiple endpoint devices communicating with a switch or router). In some embodiments, this information may include various aspects of a beamforming feedback matrix. This increase in MPDU size may be applied to various frames, such as HE-compressed beamforming CQI frames. For example, a device operating according to the methods disclosed herein may provide channel state information in a beamforming feedback matrix that may be fragmented into fewer frames than with other approaches. In some cases, the entire beamforming feedback matrix may be provided in a single frame, but such a matrix may occupy a size on the order of hundreds of kilobytes to megabytes. For example, for a multiple-input, multiple-output device with 128 transmit antennas, 16 receive antennas, 240 subcarriers, and 16-bit resolution per element, the beamforming feedback matrix may occupy approximately 1 megabyte.
[0070] A beamforming feedback matrix may refer to or include a set of values transmitted by a receiving device in a network, the set of values providing information about channel conditions between a transmitter (e.g., an AP) and a receiver (e.g., a STA device other than the AP). By providing data from this matrix to a transmitter, the transmitter can adjust beamforming parameters to improve signal direction and strength for improved transmission efficiency and interference management. The feedback matrix may include various channel conditions. In some embodiments, channel state information (CSI) may refer to or include characteristics of a particular communication channel. For example, CSI may include factors such as signal attenuation, interference, and fading. The CSI may be used by a transmitter to adjust transmission parameters to the particular channel conditions to improve data rates and reliability.
[0071] Referring now to FIG. 3, a graph 300 of Hamming distances for selected polynomials applied to variable-length codewords is shown. The codeword may include, for example, the A-MSDU subfield 202 of FIG. 2, which may include one or more MSDU subfields 216, such as the first MSDU subfield 216A and the second MSDU subfield 216B in the illustrated example. The first of the selected polynomials corresponds to a prime factor polynomial (more specifically, 0xC9D204F5). The second of the selected polynomials corresponds to a factorizable polynomial (more specifically, 0x82608EDB). The Hamming distance axis 302 indicates the number of positional changes in the codeword (e.g., the A-MSDU subfield 202) corresponding to the checksum calculated according to the particular polynomial.
[0072] The codeword length axis 304 may correspond to the byte length of the codeword for which the CRC is generated (e.g., the value stored in the FCS subfield 228 or the value calculated for comparison thereto). The first MPDU length 310 is shown as 11,454 to indicate the limit for a particular device, which corresponds to a reduction to a Hamming distance of 4 by the prime factor polynomial. The second MPDU length 312 is shown as 2 16 (64 kilobytes), and the third MPDU length 314 is 2 24 (16MB) and shows the relative performance of each polynomial.
[0073] A change to an A-MSDU subfield 202 (or other codeword) can be detected if the number of position changes (e.g., bit flips or bit transpositions) is less than the Hamming distance. Conversely, if the number of position changes is equal to or greater than the Hamming distance, the corrupted A-MSDU subfield 202 may not be detected (because the received CRC may be close to the corrupted A-MSDU subfield 202 or other potential A-MSDU subfields 202).
[0074] The first Hamming distance curve 306 corresponds to a first polynomial. As shown, the first Hamming distance curve 306 maintains a Hamming distance of at least 5 bits for codewords of 11,454 bytes or less (e.g., A-MSDU subfield 202). Therefore, for codewords of 11,454 bytes or less, at least three position changes can be detected. The second Hamming distance curve 308 corresponds to a second polynomial. As shown, the second Hamming distance curve 308 maintains a Hamming distance of at least 6 bits for codewords of more than 11,454 bytes, such as 64 kilobytes or 16 megabytes. Therefore, errors causing up to five position changes can be detected even for codewords of more than 16 megabytes.
[0075] FIG. 4 illustrates a graph 400 of undetectable errors for selected polynomials applied to variable-length codewords, according to some embodiments. The graph 400 is provided corresponding to a 1 percent packet error rate (PER). The undetectable error rate axis 402 plots the probability of undetectable errors against the codeword length axis 304. Compared to the Hamming distance graph 300 of FIG. 3, this diagram is more complex due to various factors, such as burst errors, interleaving effects, and uneven error distribution. Furthermore, the undetectable error graph 400 may be nonlinearly modulated with changes in the PER or with various error factors (such as transposition errors, delay offset errors, or single-bit flip errors). Each of these error factors, and various combinations thereof, may benefit from different error detectability of CRCs calculated using different polynomials.
[0076] A first undetectable error curve 406 illustrates the probability of an undetectable error corresponding to a prime factor polynomial (0x82608EDB), and a second undetectable error curve 408 illustrates the probability of an undetectable error corresponding to a factorizable polynomial (0xC9D204F5). The illustrated example polynomials are provided in little-endian format, with the least significant bit aligned with the constant term, indicating that the coefficients are ordered from lowest to highest degree. Specifically, the 0x82608EDB polynomial can be expressed as follows:
number
number
number
[0077] Various codeword lengths may correspond to various lengths of the MSDU subfield 216 or A-MSDU subfield 202. The probability of undetectable errors (e.g., the number of position changes exceeding the Hamming distance) is provided for various codeword lengths. For some codeword lengths, the prime factor polynomial may be superior to the factorizable polynomial (as shown by the fact that the second undetectable error curve 408 exceeds the first undetectable error curve 406). For example, for codewords less than approximately 20 bytes or from approximately 1,000 bytes to 11,454 bytes, the prime factor polynomial is superior to the factorizable polynomial. Meanwhile, for other codeword sizes, the factorizable polynomial is superior to the prime factor polynomial. In particular, for values greater than 11,454 bytes, the factorizable polynomial exhibits an improved (lower) probability of undetectable errors, at least up to the limit of approximately 16 megabytes of the codeword length axis 304.
[0078] Although each of the selected polynomials is superior to the other of the selected polynomials in at least some regions of the codeword major axis 304, the current graph is presented according to an exponential scale. Thus, the difference between the first undetectable error curve 406 and the second undetectable error curve 408 for values from 11,454 bytes to 16 megabytes varies by several hundred times. The opposite is true for a packet size of 20 bytes, but the absolute probability is much lower, as is evident from the undetectable error rate axis 402. If the PER is 1 percent and the absolute probability of an undetectable error is 10 -24 , an undetectable error occurs on average once every billion years (for continuous transmission over a gigabit link). In contrast, if the PER is 1 percent and the absolute probability of an undetectable error is 10 -16 , an undetectable error is expected to occur once every decades or centuries. Thus, choosing a second polynomial can improve the undetectable error rate for large codewords (greater than 11,454 bytes) while having little effect on smaller codewords. Furthermore, some embodiments of the present disclosure allow for the selection of different polynomials for different packet sizes, thereby further improving performance (e.g., using a prime factor polynomial for codewords less than 11,454 bytes realizes a detectability benefit for packets larger than about 1,000 bytes).
[0079] 5 is a register diagram 200 of the MPDU delimiter 232 subfield according to some embodiments. The MPDU delimiter 232 subfield may be placed before each MPDU 220 in a subframe 230 of a frame 240. The MPDU delimiter 232 subfield includes an end-of-frame (EOF) subfield 502 (e.g., a bit flag) that indicates a frame boundary. The MPDU delimiter 232 subfield includes a length subfield 504 that indicates the length (in bytes or octets) of the A-MSDU subfield 202. The length of the A-MSDU subfield 202 may be explicitly specified or may be specified by the length of the MPDU 220, from which the length of the A-MSDU may be determined (e.g., by subtracting predetermined lengths of the MAC header 222, security header 224, MIC 226, and FCS subfield 228). In the illustrated example, a 15-bit length field is provided that can be used to indicate an MPDU length of up to approximately 32 kilobytes (e.g., 16 kilobytes (16,384 bytes), 24 kilobytes (24,576 bytes), or 32 kilobytes (32,768 bytes)). In some embodiments, the length subfield 504 may contain additional or fewer bytes depending on the number of bits contained therein or on the byte multiple (e.g., whether the length is set in words or double words).
[0080] The checksum subfield 506 (shown as a CRC) can provide verification of the data integrity of the MPDU delimiter 232 itself. Such a CRC should not be confused with a separate CRC in the FCS subfield 228. The delimiter signature subfield 508 can provide a recognizable bit pattern to mark the delimiter or may contain flags, such as quality of service (QoS) attributes, security settings, or other control information. Although not shown, the MPDU delimiter 232, like other subfields of this disclosure, may include padding bits to align the MPDU delimiter 232 to a double-word or other boundary. More generally, the illustrated example of the MPDU delimiter 232 should not be construed as limiting. According to various embodiments of the present disclosure, the MPDU delimiter 232 information may be conveyed in other ways, such as according to different subfield sizes, such as the illustrated example of a 1-bit EOF subfield 502, a 15-bit length subfield 504, an 8-bit CRC subfield 506, and a 3-bit delimiter signature subfield 508.
[0081] Referring now to FIG. 6, a sequence diagram 600 of data transmission according to some embodiments is shown. The sequence diagram 600 may correspond to an environment including various devices. FIG. 6 illustrates an example in which a first device 602, as an AP device, is combined with non-AP devices (shown as a first STA device 604 and a second STA device 606). Various embodiments of the present disclosure also contemplate a sequence of operations performed pursuant to a permutation (e.g., reversal) of the roles of the AP device and the STA devices. That is, the operations disclosed herein may be performed symmetrically between the AP device and the non-AP STA device. Also, the operations may be performed between two AP devices for AP-to-AP communication or between two non-AP STA devices, as in an ad-hoc network. Thus, although the sequence diagram 600 refers to communication between the AP device 602 and one or more STA devices 604, 606 for the sake of simplicity of disclosure, the operations provided herein may be performed between any two AP devices or non-AP STA devices.
[0082] In some embodiments, an “access point” (AP) may refer to a device that communicatively couples one or more “non-AP” devices (e.g., client devices) to a network. More specifically, an AP may enable non-AP devices to connect to and communicate with the network. In some embodiments, an AP may be a “wireless access point” (WAP) configured to enable wireless communication between non-AP devices. APs include, but are not limited to, mobile, portable, or fixed hotspot devices, router devices, bridge devices, or other communication devices. In some embodiments, a non-AP device (sometimes referred to as a station or STA device) may refer to or include a device that utilizes services provided by a network other than an AP device, such as data exchange, Internet access, file sharing, etc. For example, in the context of a Wi-Fi network, a client device may include a variety of non-AP STA devices, such as a mobile phone, a tablet, a laptop or desktop computer, or an Internet of Things (IoT) device.
[0083] Briefly, operations 608, 610, 612, and 614 illustrate associations (e.g., MAC associations) between various devices. Operations 616, 618, 620, and 622 illustrate a first sequence of operations that may be performed in response to a determination that the CRC polynomial between at least two devices is supported or a comparison of the size of the MPDU subfield 220 to a threshold value (e.g., greater than 11,454 bytes). Operations 624, 626, 628, and 630 illustrate a second sequence of operations that may be performed in response to a determination that the CRC polynomial between at least two devices is not supported or a comparison of the size of the MPDU subfield 220 to a threshold value (e.g., less than or equal to 11,454 bytes).
[0084] In some embodiments, MAC association may refer to or include a process, which may be performed in accordance with the IEEE 802.11 standard, by which a wireless device (STA) establishes a logical connection with an access point (AP) in a wireless network. During association, the station may exchange capability information, supported data rates, and other parameters with the AP so that the device can participate in network communications and the AP can manage and track the station's presence on the network. For example, MAC association may be accomplished using a beacon frame, a reassociation request frame, an add block acknowledgment (ADDBA) request frame, or a response frame such as a probe response frame, a reassociation response frame, or an ADDBA response frame.
[0085] In some embodiments, a beacon frame may refer to or include a management frame (e.g., for IEEE 802.11 wireless networks) to announce the presence of a network or its capabilities. Beacon frames are periodically transmitted by access points (APs) and provide information such as the network SSID, supported data rates, and timing synchronization. Such data may be provided according to various information elements (IEs) included in the frame. These frames help other devices (e.g., STA devices) discover, identify, join, or operate on the wireless network.
[0086] In some embodiments, a response frame (e.g., a probe response frame) may refer to or include a type of management frame used in wireless communications in response to another frame, such as an association request or probe request. The response frame may carry information that acknowledges receipt of the initiation frame and provides the data necessary to complete the requested action. This data may be provided in one or more IEs to confirm network association and share network parameters (e.g., support for one or more predefined polynomials or lengths for fields such as the MPDU subfield 220).
[0087] In some embodiments (e.g., management and control frames of the IEEE 802.11 protocol), an information element (IE) may refer to or include a unit of data carried within a frame, such as a management or control frame. An IE (information element) may include a type identifier (element ID), a length field, and a corresponding data field. Each information element may include specific parameters such as capabilities, supported data rates, security settings, or network configurations that help devices establish and maintain communications (e.g., Wi-Fi communications). Information elements are used during processes such as authentication, association, beaconing, and roaming.
[0088] At operations 608 and 610, a device may advertise an information element (IE) indicating a maximum size of an MPDU frame 240 (e.g., a portion thereof). More specifically, according to the illustrated sequence diagram 600, at operation 608, the AP device 602 may advertise the maximum size to a first STA device 604. At operation 610, the AP device 602 may advertise the maximum size to a second STA device 606. In some embodiments, operations 608 and 610 may be performed simultaneously (e.g., pursuant to the transmission of a broadcast frame). In some embodiments, operations 608 and 610 may be performed separately (e.g., pursuant to the transmission of separate frames). The maximum size may correspond to an A-MSDU subfield 202 of the MPDU frame 240 (e.g., the byte length of the MPDU subfield 202 included in the frame 240). The MPDU frame 240 may refer to or include an MPDU frame 240 that includes one or more A-MSDU subfields 202. Each A-MSDU subfield 202 may include one or more MSDU subfields 216. The A-MSDU subfields 202 are then aggregated with any number of other A-MSDU subfields 202 into at least one MPDU subframe 230 that is included in a frame 240.
[0089] The announcement may refer to or include indicating support, such as whether or not a certain subfield length is supported. For example, the announcement may be provided in a beacon frame provided from an AP device to another device (e.g., another AP device or a non-AP STA device). In some embodiments, the announcement may be provided in response to another communication. For example, the announcement (or a response to those announcements in operations 612 or 614) may be provided in a probe response frame provided in response to a probe request frame. Alternatively, the announcement IE (information element) may be announced in the probe request frame itself. The IE may include a maximum MPDU 220 length subfield (or a maximum MPDU length subfield). For example, in some exemplary embodiments, the IE may include any of a high throughput (HT) capability IE, a very high throughput (VHT) capability IE, a high efficiency (HE) capability IE, or an extended capabilities IE. In some cases, two devices may inform each other of the maximum size of an MPDU 220 frame according to a pair of frames (e.g., by transmitting the second frame of a pair of frames to the other device in response to receiving the first frame of the pair from the other device).
[0090] The maximum size may refer to or include the maximum size of a frame or a portion thereof. For example, the maximum size may refer to the maximum size (e.g., byte length) of the MPDU 220, the A-MSDU subfield 202, or other aspects of the frame 240. The maximum size may correspond to the largest length that can be encoded or decoded (e.g., decodable with an error detection confidence above a threshold). In some cases, the maximum size may correspond to the availability of a selected polynomial for the device's CRC function. However, in some embodiments, other device attributes may define a smaller maximum size. For example, in some embodiments, the maximum supported size may correspond to a buffer size, PHY support size, or other characteristics of the device, even if the CRC function can provide error detection for a larger size. According to various embodiments, the maximum size may be announced according to a bit flag, a multi-bit selection, or the literal length of various announcement frame subfields (e.g., IEs). CRC encoding may refer to or include the calculation of the remainder of a codeword divided by a generator polynomial. For example, a codeword may represent an MPDU 220 with a series of zeros appended that correspond to the degree of a generator polynomial. CRC decoding may refer to or include calculating the remainder of dividing a received codeword by a generator polynomial. For example, a received codeword may represent an MPDU 220 with a CRC checksum. If the division remainder is zero, the codeword is considered valid; otherwise, an error is detected.
[0091] At operation 612, the first STA device 604 returns the maximum size that it supports in response to the advertisement made at operation 608. At operation 614, the second STA device 606 returns the maximum size that it supports in response to the advertisement made at operation 610. More specifically, it returns a maximum size that is less than or equal to 11,454 bytes. The maximum size included in this response may be greater than, equal to, or less than the maximum size in operations 608 and 610. According to the example referenced below, the maximum size of the first STA device 604 (at operation 612) is greater than or equal to the maximum size advertised at operation 608 (e.g., greater than 11,454 bytes), and the maximum size of the second STA device 606 (at operation 614) is less than the maximum size advertised at operation 610 (e.g., less than or equal to 11,454 bytes).
[0092] A device may determine a maximum supported size based on the smaller of the lengths supported by the two communicating devices (e.g., itself and the other device). When communicating with the first STA device 604, the AP device 602 may determine that the maximum supported size exceeds 11,454 bytes. Therefore, a maximum supported size of, for example, 64 kilobytes may be selected in conjunction with mutual support (e.g., one of the AP device 602 or the first STA device 604 may support a maximum size of 16 megabytes, and the other of the AP device 602 or the first STA device 604 may support a maximum size of 64 kilobytes). Thus, the AP device 602 and the first STA device 604 may each determine a first maximum size for communication between them (e.g., a maximum size corresponding to the selection of a particular polynomial for CRC check (e.g., an illustrative example of a factorizable polynomial provided herein)). Similarly, the AP device 602 and the second STA device 606 may each determine a second maximum size of communications between them (e.g., a maximum size corresponding to the selection of a particular polynomial for the CRC check (such as the illustrative example of a prime factor polynomial provided herein)).
[0093] Based on the determined maximum size (which may be determined according to the advertised maximum size and the maximum size of the response), the device can select a polynomial for the cyclic redundancy check (CRC) of the MPDU frame 240 .
[0094] Communications sent and received by the AP device 602 to and from the first STA device 604 may be performed according to the maximum share size based at least on the information exchanged in operation 612. For example, the AP device 602 may use a factorizable polynomial to calculate a CRC (for the FCS subfield 228) and include the calculated CRC in its transmission to the first STA device 604. In some embodiments, the AP device 602 may use the same polynomial for all communications with the first AP STA 604 on a per-device basis. In some embodiments, the AP device 602 may use a polynomial for each frame or portion of a frame, e.g., for each A-MSDU subfield 202 or MPDU 220, when communicating with the first STA device 604. Thus, the same frame 240 may include some MPDUs 220 that include an FCS subfield 228 determined by a CRC calculation using a first polynomial and some MPDUs 220 that include an FCS subfield 228 determined by a CRC calculation using a second polynomial. For example, according to such an embodiment, various communications of the endpoint devices may be aggregated by a router, switch, or other device.
[0095] Communications sent to and received from the AP device 602 with the second STA device 606 may be conducted in accordance with the maximum shared size based at least on performance of operation 614. For example, the AP device 602 may calculate a CRC using a prime factor polynomial and include the calculated CRC in the FCS subfield 228 transmitted to the second STA device 606 (e.g., at operation 622). Similarly, the second STA device 606 may calculate a CRC using a prime factor polynomial and include the calculated CRC in the FCS subfield 228 of the frame 240 transmitted to the AP device 602 (e.g., at operation 630).
[0096] At operation 616, the AP device 602 receives the MPDU frame 240 from the first STA device 604. In response to receiving the A-MSDU frame, the AP device 602 performs operation 618. At operation 618, the AP device 602 determines whether an error exists in the received frame. To determine the presence of an error, the AP device 602 may be configured to decode at least a portion of the A-MSDU frame according to a polynomial. For example, the AP device 602 may calculate a CRC for one or more MPDU subfields 220 of the received frame using a selected polynomial (e.g., a factorizable polynomial) and compare it with the value received in the FCS subfield 228. Concomitant with detecting an error, the AP device 602 may further perform error correction coding or indicate a non-acknowledgement (NACK) to the receipt of the data. Such a non-acknowledgement may be provided according to other indications, such as, for example, omission of an ACK, communication of a non-acknowledgement (NACK), or a bit flag for retransmission. Operations 616 and 618 may be repeated for various frames 240 that may be communicated from the first STA device 604 to the AP device 602 .
[0097] At operation 620, the AP device 602 uses the selected polynomial to calculate a CRC checksum for data intended to be transmitted to the first STA device 604 (e.g., data accompanying the transmission before transmitting the frame to the first STA device 604 at operation 622). At operation 622, the AP device 602 transmits a frame including the calculated CRC to the first STA device 604. For example, the CRC can be communicated in the FCS subfield 228. Similar to operations 616 and 618, operations 620 and 622 can be repeated for various frames 240 that may be communicated from the AP device 602 to the first STA device 604.
[0098] As indicated above, operations 624-630 illustrate a series of actions that may be performed in response to a determination that a factorizable polynomial is not supported. Such a determination may be accompanied by a determination that a device (e.g., the second STA device 606) does not support a factorizable polynomial or a determination that a frame (e.g., a portion of a frame, such as an MPDU) does not exceed a threshold value (e.g., 11,454 bytes). For example, at operation 624, the AP device 602 may receive a frame from a second device (e.g., the first STA device 604 or the second STA device 606). At operation 626, the AP device 602 may calculate a CRC for the received frame (e.g., portion thereof) in accordance with the prime factor polynomial and compare the calculated polynomial with the received FCS subfield 228 to determine whether an error exists in the frame 240. At operation 628, the AP device 602 may use the prime factor polynomial to calculate a CRC for a message to be transmitted to the second STA device 606. In operation 630, the AP device 602 may transmit the frame 240 to the second STA device 606. The frame 240 may include a CRC calculated using the prime factor polynomial (e.g., utilizing the FCS subfield 228).
[0099] The term "or" may be construed as inclusive, such that terms listed using "or" may refer to one, more than one, or all of the listed terms. Reference to at least one of a linked list of terms may be construed as an inclusive OR, and may refer to one, more than one, or all of the listed terms. For example, the term "at least one of 'A' and 'B'" may include only 'A', only 'B', or both 'A' and 'B'. When used in conjunction with "comprises' or other open terminology, these terms may include other items.
[0100] At certain locations in this disclosure, terms such as "first" and "second" may be used in connection with devices, modes of operation, transmission chains, etc., to identify or distinguish one thing from another or the other. These terms are not intended to relate objects (e.g., a first device and a second device) merely in time or sequence, although in some cases such a relationship may exist between the objects. Nor are these terms intended to limit the number of objects (e.g., devices) that may operate in a system or environment. The term coupled or connected includes indirect and direct couplings or connections.
[0101] It should be understood that the above-described systems may include multiple instances of any or each of their components, and that these components may be located on a standalone machine or on multiple machines in a distributed system, depending on the embodiment. Furthermore, the above-described systems and methods may be provided as one or more computer-readable programs or executable instructions embodied on or within one or more articles of manufacture. The articles of manufacture may be a floppy disk, hard disk, CD-ROM, flash memory card, PROM, RAM, ROM, or magnetic tape. In general, computer-readable programs may be implemented in any programming language, such as LISP, PERL, C, C++, C#, PROLOG, or any byte-code language, such as JAVA. The software programs or executable instructions may be stored on or within one or more articles of manufacture as object code.
[0102] While the above description of the present methods and systems will enable one skilled in the art to make and use what is presently believed to be the best mode, those skilled in the art will understand and recognize that there are variations, combinations, and equivalents of the specific embodiments, methods, and examples described herein. Accordingly, the methods and systems of the present invention are not limited to the above-described embodiments, methods, and examples, but rather should be limited to any embodiments and methods within the scope and spirit of the present disclosure. The headings provided in this document are not limiting.
[0103] The applications and servers are described above with the aid of functional block diagrams that illustrate the performance of certain critical functions. The boundaries of these functional blocks have been arbitrarily defined for convenience of description. Functions and structures may be integrated across such boundaries. Alternate boundaries may also be defined so long as the certain critical functions are appropriately performed. Similarly, flow diagram blocks may be arbitrarily defined herein to illustrate certain critical functions. To the extent used, flow boundaries and ordering may be defined otherwise and still perform the certain critical functions. Alternate definitions of functional blocks and flow diagram blocks, and the ordering of both, are thus within the scope and spirit of the invention as defined in the claims. Those skilled in the art will understand that the functional blocks, and other example blocks, modules, and components herein, may be implemented as shown, or as discrete components, application-specific integrated circuits, processors executing appropriate software, or the like, or any combination thereof.
Claims
1. 1. A system including a first device, The first device comprises: advertising a first information element indicating a first maximum size of a MAC Protocol Data Unit (MPDU) frame of the first device; selecting a first polynomial for a cyclic redundancy check (CRC) of MPDU frames received from a second device based on at least the first maximum size; calculating a CRC of the received MPDU frame using the selected first polynomial; Detecting errors in the MPDU frame based at least on the calculated CRC. The system is configured as follows:
2. The first device advertising the first information element associated with a media access control (MAC) association between the first device and the second device; selecting the first polynomial in response to receiving a first response to the first information element indicating the first maximum size of an MPDU frame of the second device; selecting a second polynomial different from the first polynomial in response to receiving a second response to the first information element indicating a second maximum size of an MPDU frame of the second device; The system of claim 1 , configured to:
3. The first device Transmitting a beacon frame or a probe response frame using the second polynomial; Transmitting another frame to the second device using the first polynomial. The system of claim 2, wherein the system is configured to:
4. the first polynomial is a factorizable polynomial; The system of claim 2 , wherein the second polynomial is a prime factor polynomial.
5. The system of claim 2 , wherein the first maximum size is greater than 11,454 bytes.
6. 6. The system of claim 5, wherein the first polynomial is 0xC9D204F5.
7. The first information element is Beacon frames, probe response frame, Reassociation Request frame, Reassociation Response frame, an Add Block Acknowledgment (ADDBA) request frame, or ADDBA response frame The system of claim 1 , wherein the system is included in any one of:
8. the first device is an AP device; The system of claim 1 , wherein the second device is a non-AP device.
9. The system of claim 1 , wherein the MPDU frame includes channel state information of a beamforming feedback matrix.
10. advertising, by a first device, a first maximum size of a MAC Protocol Data Unit (MPDU) frame of the first device; selecting a first polynomial for a cyclic redundancy check (CRC) of MPDU frames received from a second device based on at least the first maximum size; calculating a CRC of the received MPDU frame using the selected first polynomial; detecting errors in the MPDU frame based at least on the calculated CRC; A method comprising:
11. receiving, by the first device, a response from the second device indicating a second maximum size of an MPDU frame of the second device; selecting a second polynomial based at least on the second maximum size; 11. The method of claim 10, further comprising: wherein the first maximum size exceeds the second maximum size.
12. 11. The method of claim 10, wherein the advertisement of the first maximum size is provided in a first information element associated with a media access control (MAC) association between the first device and the second device.
13. transmitting, by the first device, a beacon frame or a probe response frame using a second polynomial that is smaller than the first polynomial; transmitting, by the first device, another frame to the second device using the first polynomial; The method of claim 10 further comprising:
14. using the second polynomial for either CRC encoding or CRC decoding, or both; 14. The method of claim 13, further comprising: wherein the first polynomial is 0xC9D204F5.
15. the first device is an AP device; The method of claim 10 , wherein the second device is a non-AP device.
16. The method of claim 10 , wherein the MPDU includes an entire beamforming feedback matrix containing channel state information for multiple channels.
17. A device, advertising a first information element indicating a first maximum size of a MAC Protocol Data Unit (MPDU) frame of the device; selecting a factorizable polynomial for a cyclic redundancy check (CRC) of MPDU frames received from a second device based on at least the first maximum size; Calculating a CRC of the received MPDU frame using the factorizable polynomial; Detecting an error in the MPDU frame based at least on the calculated CRC. The device is configured as follows:
18. announcing the first maximum size of an MPDU frame to a third device; selecting a prime factor polynomial for a cyclic redundancy check (CRC) of a second MPDU frame received from the third device based on at least a response from the third device; calculating a second CRC of the received MPDU frame using the prime factor polynomial; Detecting an error in the second MPDU frame based on at least the calculated second CRC.
20. The device of claim 17, further configured to:
19. the first information element is a beacon frame; The device of claim 18 , wherein the response is included in a probe response frame that corresponds to the beacon frame.
20. The device of claim 18 , wherein the MPDU frame includes channel state information of a beamforming feedback matrix.