Patent Description:
Wireless local area network (WLAN) devices typically use medium contention protocols (e.g., carrier sense multiple access and collision avoidance (CSMA/CA) protocols) to regulate access to a shared WLAN communication medium, as are for examples described in <CIT> and IEEE Std <NUM>-<NUM> (revision of IEEE Std <NUM>-<NUM>), part I. For example, the contention protocols can enable each WLAN device to determine whether to transmit on the WLAN communication medium and how to avoid collisions with other transmissions. In accordance with IEEE <NUM> communication protocols, a WLAN device attempting to transmit data can initiate a random back-off interval prior to transmitting the data. The WLAN device can defer transmitting the data until after the random back-off interval elapses.

Document <CIT> discloses a method for determining a backoff interval that a station should use by measuring the average wait time incurred during previous access attempts governed by slot-based backoff before that station finally gained access to the shared resource.

Wording such as "may" and "for example" used in the description in conjunction with features of the independent claims should not be interpreted to mean that those features are merely optional.

The present embodiments may be better understood, and numerous objects, features, and advantages made apparent to those skilled in the art by referencing the accompanying drawings.

The description that follows includes exemplary systems, methods, techniques, instruction sequences, and computer program products that embody techniques of the present inventive subject matter. However, it is understood that the described embodiments may be practiced without these specific details. For instance, although examples refer to operations for implementing flexible transmission and back-off intervals in a WLAN device, embodiments are not so limited. In other embodiments, the operations for flexible transmission and back-off intervals can be executed by network devices that implement other suitable communication protocols and standards (e.g., WiMAX, powerline communication (PLC), Ethernet, etc.). In other instances, well-known instruction instances, protocols, structures, and techniques have not been shown in detail in order not to obfuscate the description.

In accordance with IEEE <NUM> communication protocols, a network device is typically assigned a predetermined transmit interval, also referred to as a transmit opportunity (TXOP) limit. The predetermined transmit interval is a time duration during which the network device can continuously access the communication medium without initiating a back-off interval. Depending on the type and priority of data being transmitted, the network device may transmit communications for the transmit interval (i.e., the TXOP limit). After the transmit interval elapses, the network device relinquishes control of the communication medium and defers transmission for a predetermined back-off interval to allow other contending network devices to gain control of the communication medium. An example transmission/back-off sequence can be represented by: back-off, transmit, back-off, transmit, etc., where each transmit time period is less than or equal to the predetermined transmit interval. Thus, a transmitting network device may transmit communications only during the transmit interval and may temporarily relinquish control of the communication medium to other contending network devices. This can cause data scheduled for transmission to become less useful or stale. Particularly in the case of time-sensitive data (e.g., sounding data, beamforming parameters, etc.), initiating the back-off interval and relinquishing control of the communication medium after one transmit interval can reduce the usefulness of the time-sensitive data. This can also reduce the efficiency of communication systems (e.g., a multi-user multiple-input multiple-output (MU-MIMO) systems, beamforming systems, etc.).

In some embodiments, a network device can be configured to gain control of the communication medium for multiple consecutive transmit intervals (e.g., multiple consecutive TXOP limits). For example, the network device can determine the number of transmit intervals for which it will have control of the communication medium depending on the amount of data available for transmission and/or the duration of the transmit interval. After maintaining control of the communication medium (e.g., transmitting data) for a total transmit duration that is greater than the transmit interval, the network device can initiate multiple consecutive back-off intervals. For example, if the network device transmits data on the communication medium for two consecutive transmit intervals, the network device can initiate two consecutive back-off intervals, as illustrated by the following transmission/back-off sequence: transmit, transmit, back-off, back-off, transmit, transmit, back-off, back-off, etc. Furthermore, in some embodiments, when the network device implements multiple consecutive back-off intervals, the network device can determine whether to vary the duration of a subsequent back-off interval depending on whether a transmission by another network device is detected on the communication medium. For example, the network device may determine to implement consecutive back-off intervals. In this example, the network device may determine whether to vary the duration of a subsequent back-off interval depending on whether transmissions of other devices are detected after a current back-off interval elapses.

Clustering/grouping multiple transmit intervals can enable the network device to maintain control of the communication medium for a longer duration. This can help ensure that the network device relinquishes control of the communication medium after it transmits the time-sensitive data that is scheduled to be transmitted. Grouping multiple transmit intervals can also be useful for network devices and systems that rely on the "freshness" of the transmitted data. Also, implementing multiple back-off intervals when the network device gains control of the communication medium for multiple consecutive transmit intervals can help ensure fairness among network devices on the communication medium.

<FIG> is an example conceptual diagram illustrating a mechanism for implementing flexible transmission and back-off intervals. <FIG> depicts a communication network <NUM> including network devices <NUM>, <NUM>, and <NUM>. The network device <NUM> includes a time-interval calculation unit <NUM> and a transceiver unit <NUM>. Although not depicted in <FIG>, the network devices <NUM> and <NUM> can also include a time-interval calculation unit and a transceiver unit similar to the network device <NUM>. In some embodiments, the network devices <NUM>, <NUM>, and <NUM> can each be electronic devices, such as a laptop computer, a tablet computer, a mobile phone, a smart appliance, a gaming console, an access point, a desktop computer, a wearable device, or other suitable electronic devices. The network devices <NUM>, <NUM>, and <NUM> can each be configured to implement one or more communication protocols (e.g., the communication network <NUM> can be a WLAN and the network devices <NUM>, <NUM>, and <NUM> can each be WLAN devices). In some embodiments, in addition to WLAN communication protocols, the network devices <NUM>, <NUM>, and <NUM> may each implement other protocols and related functionality to enable other types of communications (e.g., BLUETOOTH® (Bluetooth), Ethernet, WiMAX, PLC, etc.). Furthermore, in some embodiments, the network devices <NUM>, <NUM>, and <NUM> may each include one or more radio transceivers, processors, analog front-end (AFE) units, memory, other components, and/or other logic to implement the communication protocols and related functionality.

In one embodiment, the network device <NUM> may determine to transmit data to another network device (e.g., the network device <NUM>) in the communication network <NUM>. The network device <NUM> can contend with the other network devices <NUM> and <NUM> for control and the opportunity to transmit on the communication medium. The network device <NUM> can randomly select a back-off interval based, at least in part, on a predetermined back-off contention window. The back-off contention window can be a preferred number of communication time slots for which the network device <NUM> should defer transmission before attempting to gain control of the communication medium. A communication time slot may refer to the smallest unit of time for which the network devices <NUM>, <NUM>, and <NUM> may transmit data or defer transmission on the communication medium. Accordingly, in one embodiment, the back-off contention window may be a maximum number of communication time slots for which the network device <NUM> may not contend for control of the communication medium. For example, the back-off contention window may include <NUM> communication time slots, <NUM> communication time slots, or another suitable number of time slots. The back-off interval can be selected by selecting a random number between a suitable lower limit (e.g., zero) and the back-off contention window. For example, if the back-off contention window includes <NUM> communication time slots, the back-off interval can be determined by selecting a random number between <NUM> and <NUM>. In one example, if the back-off time interval is defined as <NUM> communication time slots, the network device <NUM> may not transmit data or attempt to gain control of the communication medium for <NUM> communication time slots. After the back-off interval elapses, the network device <NUM> can determine whether the communication medium is busy (e.g., whether the communication medium is in use by network device <NUM> or network device <NUM>). If the communication medium is busy, the network device <NUM> can select and initiate another back-off interval. For example, the network device <NUM> can initiate another back-off interval that is twice the previous back-off interval. If the communication medium is not busy, the network device <NUM> can gain control of the communication medium and transmit data.

After the network device <NUM> gains control of the communication medium, the transceiver unit <NUM> can start transmitting buffered data to the network device <NUM>. The time-interval calculation unit <NUM> can keep track of the duration for which the network device <NUM> transmits data on the communication medium. The duration for which the network device <NUM> consecutively transmits data on the communication medium is referred to as "total transmit duration. " The time-interval calculation unit <NUM> can also determine a predetermined transmit interval or transmit opportunity (TXOP) limit based, at least in part, on the priority and type of data that was transmitted during the total transmit duration. In some embodiments, channel access in a WLAN can be governed by an enhanced distributed channel access (EDCA) protocol. The EDCA protocol can define multiple channel access priorities and data types, each of which is associated with a different predetermined transmit interval. In one example, there may be four access priorities and each of the access priorities may be associated with a different predetermined transmit interval. For example, a first access priority may be associated with a <NUM> transmit interval, a second access priority may be associated with a <NUM> transmit interval, and so on. The time-interval calculation unit <NUM> can determine a number of consecutive transmit intervals for which the network device <NUM> transmitted data on the communication medium. For example, if the transmit interval is <NUM> and the total transmit duration is <NUM>, the time-interval calculation unit <NUM> can determine that the network device <NUM> had control of the communication medium for three consecutive transmit intervals. After having control of the communication medium for multiple transmit intervals (e.g., the <NUM> total transmit duration), the network device <NUM> can defer transmission for multiple consecutive back-off intervals. The total amount of time for which the network device <NUM> defers transmission is referred to as "total back-off duration. " During the total back-off duration, the network device <NUM> may not contend for control of the communication medium and may not transmit data on the communication medium. After the total back-off duration elapses, the network device <NUM> may attempt to gain control of the communication medium.

The time-interval calculation unit <NUM> can employ various techniques to calculate the total back-off duration. In one embodiment, the time-interval calculation unit <NUM> can determine a back-off interval based, at least in part, on the back-off contention window. For example, the time-interval calculation unit <NUM> can randomly select a back-off interval based, at least in part, on the back-off contention window. In one embodiment, the back-off contention window may be a maximum time interval (e.g., a maximum number of communication time slots) during which the network device <NUM> may not contend for control of the communication medium. The time-interval calculation unit <NUM> can determine the total back-off duration as a multiple of the back-off interval. In one embodiment, the number of back-off intervals that should be grouped together to form the total back-off duration can be determined by dividing the total transmit duration by the predetermined transmit interval (i.e., the TXOP limit), as depicted by Eq. <NUM>. In Eq. <NUM>, the "round-up" function can be used to round up the result to the next integer.

Referring to Eq. <NUM>, if the result of dividing the total transmit duration by the predetermined transmit interval is <NUM>, the time-interval calculation unit <NUM> can round-up the result to yield three back-off intervals. In another embodiment, the number of back-off intervals may be determined by dividing the total transmit duration by the predetermined transmit interval and rounding the result to the nearest whole number. For example, if the result of dividing the total transmit duration by the predetermined transmit interval is <NUM>, the time-interval calculation unit <NUM> can round the result to yield two back-off intervals. In another embodiment, the time-interval calculation unit <NUM> may not round the result of dividing the total transmit duration by the predetermined transmit interval. In this embodiment, the time-interval calculation unit <NUM> may use a fractional (i.e., non-whole number) result to determine the total back-off duration.

In one embodiment, the time-interval calculation unit <NUM> can determine the total back-off duration by multiplying the number of back-off intervals with the selected back-off interval, as depicted in Eq. <NUM>.

In another embodiment, the time-interval calculation unit <NUM> can calculate the total back-off duration as depicted by Eq. <NUM>. As depicted by Eq. <NUM>, the total back-off duration can be calculated without rounding off the result of dividing the total transmit duration by the predetermined transmit interval (i.e., the number of predetermined transmit intervals). In other words, the total back-off duration can be calculated by multiplying the back-off interval by the number of predetermined transmit intervals that were used in the preceding total transmit duration.

In another embodiment, the time-interval calculation unit <NUM> can multiply the back-off contention window by the number of predetermined transmit intervals that were used in the preceding total transmit duration to yield an effective back-off contention window. As discussed above, the back-off contention window can indicate a preferred number of communication time slots for which the network device should defer transmission on the communication medium. For example, the back-off contention window can indicate a maximum number of communication time slots for which the network device <NUM> should defer transmission and not contend for control of the communication medium. The time-interval calculation unit <NUM> can calculate an effective back-off contention window, as depicted by Eq. <NUM>. The effective back-off contention window can be greater than, less than, or equal to the current back-off contention window depending on whether the total transmit duration is greater than, less than, or equal to the predetermined transmit interval, respectively. The time-interval calculation unit <NUM> can then select the total back-off duration by selecting a random value between zero and the effective back-off contention window.

<FIG> is a flow diagram ("flow") <NUM> illustrating example operations of one embodiment for determining a back-off duration. The flow <NUM> begins at block <NUM>.

At block <NUM>, a network device determines a total back-off duration based, at least in part, on a total transmit duration for transmitting on a communication medium and a predetermined transmit interval. The time-interval calculation unit <NUM> can keep track of the amount of time the network device <NUM> transmitted data on the communication medium. In some embodiments, the transmit duration for which the network device <NUM> had control of the communication medium may be determined based, at least in part, on the amount of data transmitted by the network device <NUM>. Additionally, the time-interval calculation unit <NUM> may select an appropriate transmit interval depending on the priority of the data transmitted by the network device <NUM>. In some embodiments, the time-interval calculation unit <NUM> may determine the total back-off duration if the total transmit duration exceeds the predetermined transmit interval. The network device <NUM> may transmit communications on the communication medium for multiple consecutive transmit intervals (e.g., to ensure that time-sensitive data does not become invalid). The network device <NUM> may determine the total back-off duration in order to implement multiple consecutive back-off intervals prior to starting the next transmit duration and transmitting the next set of data. The time-interval calculation unit <NUM> can use various techniques to determine the total back-off duration. For example, the time-interval calculation unit <NUM> can determine the total back-off duration using Eq. <NUM> and Eq. <NUM>, Eq. <NUM>, or Eq. <NUM> described above. The flow continues at block <NUM>.

At block <NUM>, the network device initiates the total back-off duration to prevent data transmission from the network device on the communication medium during the total back-off duration. In some embodiments, the time-interval calculation unit <NUM> can implement a back-off timer that keeps track of how long the network device <NUM> should defer transmitting data and contending for control of the communication medium. In some embodiments, the time-interval calculation unit <NUM> can determine whether the selected number of successive back-off intervals has elapsed. For example, if the time-interval calculation unit <NUM> determines that the network device <NUM> should implement five consecutive back-off intervals, the time-interval calculation unit <NUM> can determine whether five consecutive back-off intervals have elapsed. In other embodiments, the time-interval calculation unit <NUM> can access the back-off timer to determine whether the total back-off duration has elapsed. In another embodiment, the back-off timer or another background process may generate an interrupt (or other trigger signal) when the total back-off duration elapses. After the total back-off duration elapses, the network device may attempt to regain control of the communication medium. The network device may initiate data transmissions after gaining control of the communication medium. From block <NUM>, the flow ends.

<FIG> is a flow diagram <NUM> illustrating example operations of another embodiment for determining a back-off duration. The flow <NUM> begins at block <NUM>.

At block <NUM>, a network device determines a total transmit duration for transmitting data on a communication medium. The network device <NUM> can contend with other network devices (e.g., the network devices <NUM> and <NUM>) in the communication network <NUM> for control of a shared communication medium. After the network device <NUM> gains control of the communication medium, the transceiver unit <NUM> can transmit data to the network device <NUM>. The time-interval calculation unit <NUM> can keep track of the amount of time for which the network device <NUM> transmitted data on the communication medium. In some embodiments, the transmit duration for which the network device <NUM> had control of the communication medium may be determined based, at least in part, on the amount of data transmitted by the network device <NUM>. The flow continues at block <NUM>.

At block <NUM>, the network device determines that the total transmit duration exceeds a predetermined transmit interval. The transmit interval (i.e., the TXOP limit) can be a predetermined time interval during which the network device <NUM> can continuously transmit communications without back-off. The network device <NUM> may have a different transmit interval depending on the type and priority of data that was transmitted. For example, IEEE <NUM> communication protocols may indicate four access priorities (or priority levels). Accordingly, the network device <NUM> may have four transmit intervals - one for each of the access priorities. The time-interval calculation unit <NUM> may select an appropriate transmit interval depending on the priority of the communications transmitted by the network device. In one example, the time-interval calculation unit <NUM> may determine that "best effort" data (e.g., moderate priority data) was transmitted on the communication medium. In this example, the time-interval calculation unit <NUM> may select a transmit interval (e.g., a <NUM> transmit interval) that corresponds to the "best effort" data type. After transmitting data for multiple consecutive transmit intervals, the network device <NUM> may defer data transmission for multiple consecutive back-off intervals to maintain fairness with other network devices on the communication medium. The flow continues at block <NUM>.

At block <NUM>, the network device determines a total back-off duration based, at least in part, on the total transmit duration and the predetermined transmit interval. The network device <NUM> may transmit communications on the communication medium for multiple consecutive transmit intervals (e.g., to ensure that time-sensitive data does not become invalid). The network device <NUM> may determine the total back-off duration in order to implement multiple consecutive back-off intervals prior to starting the next transmit duration and transmitting the next set of data. The time-interval calculation unit <NUM> can use various techniques to determine the total back-off duration. For example, the time-interval calculation unit <NUM> can determine the total back-off duration using Eq. <NUM> and Eq. <NUM>, Eq. <NUM>, or Eq. <NUM> described above. The flow continues at block <NUM>.

<FIG> is a flow diagram <NUM> illustrating example operations of one embodiment for implementing flexible back-off intervals. The flow <NUM> begins at block <NUM>.

At block <NUM>, a network device determines whether a transmission by another network device is detected on a communication medium if a first back-off interval has elapsed and a second back-off interval follows the first back-off interval. In some embodiments, the network device may determine a number of consecutive back-off intervals based, at least in part, a total transmit duration and a predetermined transmit interval during which the network device <NUM> can continuously transmit data on the communication medium. For example, the number of consecutive back-off intervals that comprise the total back-off duration may include a first back-off interval followed by a second back-off interval. In this example, after the first back-off interval elapses, the network device <NUM> can determine whether another network device initiated a transmission on the communication medium. this check can help the network device <NUM> determine whether to extend the duration of subsequent back-off intervals (e.g., the second back-off interval). The flow continues at block <NUM>.

At block <NUM>, the network device determines whether to vary the duration of the second back-off interval based, at least in part, on whether the transmission by another network device is detected on the communication medium. if a transmission by another device was detected after the first back-off interval elapsed, the network device may execute operations as if a collision has occurred. In one embodiment, if a transmission by another device was detected after the first back-off interval elapsed, the network device may increase the duration of the second back-off interval. From block <NUM>, the flow ends.

<FIG> is a flow diagram <NUM> illustrating example operations of another embodiment for implementing flexible back-off intervals. The flow <NUM> begins at block <NUM>.

At block <NUM>, a network device determines that a total transmit duration for transmitting data exceeds a predetermined transmit interval associated with the data. The time-interval calculation unit <NUM> can keep track of the amount of time for which the network device <NUM> transmitted communications on the communication medium. Also, the transmit interval can be a predetermined time interval during which the network device <NUM> can continuously transmit data on the communication medium. After transmitting data for multiple consecutive transmit intervals, the network device <NUM> may defer data transmission for multiple consecutive back-off intervals to maintain fairness with other network devices on the communication medium. The flow continues at block <NUM>.

At block <NUM>, the network device determines a number of consecutive back-off intervals based, at least in part, the total transmit duration and the predetermined transmit interval. In other words, the network device determines the total back-off duration to implement after the total transmit duration elapses. For example, the time-interval calculation unit <NUM> can use one of the techniques described above (e.g., Eq. <NUM>) to determine the number of consecutive back-off intervals that should be implemented at the network device. The flow continues at block <NUM>.

At block <NUM>, if a first back-off interval has elapsed and a second back-off interval follows the first back-off interval, the network device determines whether a transmission by another network device is detected on the communication medium. For example, the number of consecutive back-off intervals that comprise the total back-off duration may include a first back-off interval followed by a second back-off interval. In this example, after the first back-off interval elapses, the network device <NUM> can determine whether another network device initiated a transmission on the communication medium. In some embodiments, this check can help the network device <NUM> determine whether to extend the duration of subsequent back-off intervals (e.g., the second back-off interval). The flow continues at block <NUM>.

At block <NUM>, the network device determines whether to vary the duration of the second back-off interval based, at least in part, on whether the transmission by another network device is detected on the communication medium. If a transmission by another device was detected after the first back-off interval elapsed, the network device may execute operations as if a collision has occurred. In one embodiment, if a transmission by another device was detected after the first back-off interval elapsed, the network device may increase the duration of the second back-off interval. From block <NUM>, the flow ends.

<FIG> is a flow diagram <NUM> illustrating example operations of one embodiment for dynamically varying the total back-off duration. The flow <NUM> begins at block <NUM>.

At block <NUM>, a back-off interval is initiated at a network device. In some embodiments, the time-interval calculation unit <NUM> can implement a back-off timer that keeps track of each back-off interval. The time-interval calculation unit <NUM> can store a value of the back-off interval in the back-off timer. The time-interval calculation unit <NUM> can determine that one back-off interval has elapsed after the back-off timer counts down to zero. The flow continues at block <NUM>.

At block <NUM>, the network device determines whether the back-off interval has elapsed. In some embodiments, the time-interval calculation unit <NUM> can receive a notification (e.g., an interrupt or a trigger signal) from the back-off timer when the back-off interval elapses. In other embodiments, the time-interval calculation unit <NUM> can periodically access the back-off timer to determine whether the back-off interval has elapsed. If the back-off interval has not elapsed, the flow loops back to block <NUM>, where the network device <NUM> waits until the back-off interval elapses. If the back-off interval has elapsed, the flow continues at block <NUM>.

At block <NUM>, it is determined whether the elapsed back-off interval is an intermediate back-off interval. A back-off interval that precedes another back-off interval may be referred to as an "intermediate back-off interval. " For example, the time-interval calculation unit <NUM> may determine that the network device <NUM> should implement two consecutive back-off intervals - a first back-off interval and a second back-off interval. In this example, if the second back-off interval follows the first back-off interval, the first back-off interval may be referred to as an intermediate back-off interval. However, the second back-off interval may not be an intermediate back-off interval because there is no additional back-off interval that immediately follows the second back-off interval. In some embodiments, the time-interval calculation unit <NUM> may determine whether the total back-off duration has elapsed. As described above, the total duration of the selected number of back-off intervals may be referred to as the total back-off duration. Referring to the above example, the total back-off duration may include the first back-off interval followed by the second back-off interval. It is noted that in other embodiments, the total back-off duration may include any suitable number of back-off intervals (e.g., one back-off interval, three or more back-off intervals, etc.). If the total back-off duration has not elapsed, this indicates that the network device <NUM> will initiate at least one other back-off interval (e.g., the second back-off interval) before the next transmission interval. However, if the total back-off duration has elapsed, this indicates that the network device will not initiate additional back-off intervals before the next transmission interval. Thus, if the elapsed back-off interval is an intermediate back-off interval (i.e., the total back-off duration has not elapsed), the flow continues at block <NUM>. Otherwise, if the elapsed back-off interval is not an intermediate back-off interval (e.g., the total back-off duration has elapsed), the flow continues at block <NUM>.

At block <NUM>, if the elapsed back-off interval is not an intermediate back-off interval, it is determined that the total back-off duration is elapsed and the network device attempts to gain control of a communication medium. As discussed above, the intermediate back-off interval refers to a back-off interval that is followed by one or more additional back-off intervals. Thus, if the elapsed back-off interval is not an intermediate back-off interval, the time-interval calculation unit <NUM> can determine that the final/last back-off interval and the total back-off duration have elapsed. In other words, the time-interval calculation unit <NUM> can determine that the selected number of consecutive back-off intervals have elapsed. Consequently, the time-interval calculation unit <NUM> may notify the network device <NUM> (e.g., the transceiver unit <NUM>) to contend for control of the communication medium, if needed. After gaining control of the communication medium, the transceiver unit <NUM> can transmit data on the communication medium. From block <NUM>, the flow ends.

At block <NUM>, if the elapsed back-off interval is an intermediate back-off interval, the network device determines whether transmissions are detected on the communication medium. For example, the total back-off duration may include a first back-off interval followed by a second back-off interval. After the first back-off interval (i.e., the intermediate back-off interval) elapses, the transceiver unit <NUM> can sense the communication medium and determine whether another network device is transmitting data on the communication medium. Even though the network device <NUM> is not permitted to transmit on the communication medium and is configured to implement one or more additional back-off intervals, this check can help the network device <NUM> determine whether to extend the duration of the subsequent back-off intervals (e.g., the second back-off interval). In some embodiments, the transceiver unit <NUM> can monitor the communication medium for a predetermined sensing time interval to determine whether there are transmissions on the communication medium. In one embodiment, the sensing time interval can span an end portion of the intermediate back-off interval (e.g., the first back-off interval) and a beginning portion of the subsequent back-off interval (e.g., the second back-off interval). In another embodiment, the sensing time interval may only include an end portion of the first back-off interval. In another embodiment, the sensing time interval may only include a beginning portion of the second back-off interval.

In some embodiments, the time-interval calculation unit <NUM> may determine whether to vary the length of a back-off contention window based, at least in part, on whether the transmission is detected on the communication medium. The back-off contention window may represent a maximum number of communication time slots for which the network device defers data transmission on the communication medium. The time-interval calculation unit <NUM> may determine whether to vary the duration of the second back-off interval by determining whether to vary the length of the back-off contention window. It is noted that the duration of the second back-off interval may be determined from the back-off contention window. If transmissions are not detected on the communication medium, the flow continues at block <NUM>. Otherwise, if transmissions are detected on the communication medium, the flow continues at block <NUM>.

At block <NUM>, if transmissions are not detected on the communication medium after the intermediate back-off interval elapses, the length of the contention window is set to a predetermined duration (e.g., a predetermined minimum duration or a predetermined duration as determined by the particular implementation or standard specifications). As a result, the next back-off interval duration may be amended to coincide with the changes to the contention window. For example, if the contention window is reset to a minimum contention window, the next back-off interval can be selected as a random number that falls between zero and the minimum contention window. In other embodiments, the duration of the next back-off interval may be the same as the duration of the current back-off interval. The flow then loops back to block <NUM>, where the next back-off interval with the determined duration is initiated. It is noted that in some embodiments, the length of the contention window may be selected after initiating the next back-off interval (e.g., while the next back-off interval is in progress). The length of the back-off interval can be updated depending on the selected length of the contention window.

At block <NUM>, if transmissions are detected on the communication medium after the intermediate back-off interval elapses, the contention window may be modified as if a collision has occurred. In some embodiments, the length of the contention window may be increased if transmissions are detected on the communication medium after the intermediate back-off interval elapses. As a result, the length of the next back-off interval may be increased. In some embodiments, if the network device <NUM> detects the start of a transmission from another network device <NUM> when the intermediate back-off interval elapses, the network device <NUM> may interpret this detected transmission as a collision with the network device <NUM>. Therefore, if the transceiver unit <NUM> detects transmissions from another network device on the communication medium, the time-interval calculation unit <NUM> can increase the length of the next back-off interval. For example, if the total back-off duration includes a first back-off interval followed by a second back-off interval, transmissions may be detected after the first back-off interval elapsed. Consequently, the length of the second back-off interval may be increased. In some embodiments, the duration of the second back-off interval may be twice the duration of the first back-off interval. In other embodiment, the duration of the second back-off interval may exceed the duration of the first back-off interval by another suitable factor. In some embodiments, if the transceiver unit <NUM> detects transmissions from another network device on the communication medium, the time-interval calculation unit <NUM> can increase the length of the contention window for determining the second back-off interval. In some embodiments, the length of the contention window may be increased to twice the length of the current contention window (that was used for determining the duration of the first back-off interval). In other embodiment, the length of the contention window may exceed the length of the current contention window by another suitable factor. The duration of the second back-off interval may be selected based, at least in part, on the increased contention window. For example, the second back-off interval can be selected as a random number that falls between zero and the increased contention window. Proceeding from block <NUM> to block <NUM>, the next back-off interval may be initiated. It is noted that in some embodiments, the length of the contention window may be selected after initiating the next back-off interval (e.g., while the next back-off interval is in progress). The length of the back-off interval can be updated depending on the increased length of the contention window.

<FIG> is a flow diagram <NUM> illustrating example operations of another embodiment for dynamically varying the total back-off duration. The flow <NUM> begins at block <NUM>.

At block <NUM>, a total transmit duration and a predetermined transmit interval are determined at a network device based, at least in part, on data transmitted by the network device. After the network device <NUM> gains control of the communication medium, the transceiver unit <NUM> can transmit data (e.g., data/management frames) to other network devices in the communication network <NUM>. In some embodiments, the time-interval calculation unit <NUM> can determine the total transmit duration based on the amount of the data transmitted by the network device <NUM>. For example, the time-interval calculation unit <NUM> can determine the total transmit duration based on the number of frames and the length of each frame transmitted by the network device <NUM>. In another embodiment, the time-interval calculation unit <NUM> can implement a transmit timer to keep track of the duration for which the network device <NUM> had control of the communication medium. In addition, the time-interval calculation unit <NUM> can also determine the transmit interval (e.g., TXOP limit) based on the type and priority of the data that was transmitted during the total transmit duration. The flow continues at block <NUM>.

At block <NUM>, a back-off interval is selected at the network device. In one embodiment, the time-interval calculation unit <NUM> can select the back-off interval based, at least in part, on the back-off contention window and a local random (or pseudo-random) number generator. The random number generator can select a value that lies a lower limit (e.g., zero) and the back-off contention window. The selected value can be designated as the back-off interval. In another embodiment, the back-off interval may be predetermined based on the type and priority of the data that was transmitted during the total transmit duration. In some embodiments, the back-off interval may be of the same duration as the transmit interval. In another embodiment, the back-off interval may be another suitable predetermined value. The flow continues at block <NUM>.

At block <NUM>, a number of consecutive back-off intervals for which the network device should defer transmission is determined based, at least in part, on the total transmit duration and the predetermined transmit interval. After transmitting data for multiple consecutive transmit intervals, the network device <NUM> may not transmit data or contend for control of the communication medium during multiple consecutive back-off intervals. In one embodiment, as depicted in Eq. <NUM>, the time-interval calculation unit <NUM> can divide the total transmit duration by the transmit interval. The time-interval calculation unit <NUM> can round the quotient to the next highest integer to determine the number of consecutive back-off intervals. For example, if the transmit duration is <NUM> and the TXOP limit is <NUM>, the time-interval calculation unit <NUM> can determine that the network device <NUM> should implement two consecutive back-off intervals. As discussed above, a communication time slot may refer to the smallest unit of time for which the network devices <NUM>, <NUM>, and <NUM> may transmit data or defer transmission on the communication medium. In the above example, if the back-off interval (selected at block <NUM>) includes <NUM> communication time slots, the network device <NUM> may defer transmission for <NUM> communication time slots (i.e., two consecutive back-off intervals) before attempting to gain control of the communication medium. The total duration of the selected number of back-off intervals may be referred to as the total back-off duration. For example, the total back-off duration may include <NUM> back-off intervals if the time-interval calculation unit <NUM> determines to implement <NUM> consecutive back-off intervals at block <NUM>. The flow continues at block <NUM>.

At block <NUM>, a back-off interval is initiated at the network device. In some embodiments, the time-interval calculation unit <NUM> can implement a back-off timer that keeps track of each back-off interval. The time-interval calculation unit <NUM> can store a value of the back-off interval in the back-off timer. The time-interval calculation unit <NUM> can determine that one back-off interval has elapsed after the back-off timer counts down to zero. The flow continues at block <NUM>.

At block <NUM>, it is determined whether the elapsed back-off interval is an intermediate back-off interval. In some embodiments, the time-interval calculation unit <NUM> may determine whether the elapsed back-off interval is an intermediate back-off interval and whether the total back-off duration has elapsed as described above with reference to block <NUM> of <FIG>. If the elapsed back-off interval is an intermediate back-off interval (i.e., the total back-off duration has not elapsed), the flow continues at block <NUM>. Otherwise, if the elapsed back-off interval is not an intermediate back-off interval (e.g., the total back-off duration has elapsed), the flow continues at block <NUM>.

At block <NUM>, if the elapsed back-off interval is not an intermediate back-off interval, it is determined that the total back-off duration is elapsed and the network device attempts to gain control of the communication medium. In some embodiments, if the elapsed back-off interval is not an intermediate back-off interval, the time-interval calculation unit <NUM> can determine that the final/last back-off interval and the total back-off duration have elapsed, as described above with reference to block <NUM> of <FIG>. Consequently, the time-interval calculation unit <NUM> may notify the network device <NUM> (e.g., the transceiver unit <NUM>) to contend for control of the communication medium, if needed. After gaining control of the communication medium, the transceiver unit <NUM> can transmit data on the communication medium. From block <NUM>, the flow loops back to block <NUM>.

At block <NUM>, if the elapsed back-off interval is an intermediate back-off interval, the network device determines whether transmissions are detected on the communication medium. In some embodiment, the transceiver unit <NUM> can monitor the communication medium for a predetermined sensing time interval to determine whether there are transmissions on the communication medium, as described above with reference to block <NUM> of <FIG>. If transmissions are not detected on the communication medium, the flow continues at block <NUM>. Otherwise, if transmissions are detected on the communication medium, the flow continues at block <NUM>.

At block <NUM>, if transmissions are not detected on the communication medium after the intermediate back-off interval elapses, the length of the contention window is set to a predetermined duration (e.g., a predetermined minimum duration or a predetermined duration as determined by the particular implementation or standard specifications). In some embodiments, the time-interval calculation unit <NUM> may or may not modify the contention window if transmissions are not detected on the communication medium, as described above with reference to block <NUM> of <FIG>. The flow then loops back to block <NUM>, where the next back-off interval with the appropriate duration is initiated. It is noted that in some embodiments, the length of the contention window may be selected after initiating the next back-off interval (e.g., while the next back-off interval is in progress). The length of the back-off interval can be updated depending on the selected length of the contention window.

At block <NUM>, if transmissions are detected on the communication medium after the intermediate back-off interval elapses, the contention window may be modified as if a collision has occurred. In some embodiments, the time-interval calculation unit <NUM> may employ various techniques to modify the contention window if transmissions are detected on the communication medium, as described above with reference to block <NUM> of <FIG>. Proceeding from block <NUM> to block <NUM>, the next back-off interval may be initiated. It is noted that in some embodiments, the length of the contention window may be selected after initiating the next back-off interval (e.g., while the next back-off interval is in progress). The length of the back-off interval can be updated depending on the increased length of the contention window. While not shown in <FIG>, the flow may end when no further back-off intervals are to be initiated.

<FIG> depicts example timing diagrams of two network devices that dynamically vary the total back-off duration in the communication network. The timing diagram <NUM> depicts transmission and back-off intervals of a first network device; while the timing diagram <NUM> depicts transmission and back-off intervals of a second network device. As depicted in the timing diagram <NUM>, the first network device gains control of the communication medium and transmits data on the communication medium. As depicted in <FIG>, the first network device transmits for a total transmit duration <NUM>, which spans three consecutive transmit intervals <NUM>, <NUM>, and <NUM> (depicted as TXOP in <FIG>). The first network device determines a total back-off duration <NUM> based, at least in part, on the total transmit duration <NUM> and the transmit interval, as described above using Eq. <NUM> - Eq. <NUM>. In <FIG>, the first network device determines that the total back-off duration <NUM> should span three consecutive back-off intervals. The first network device can determine the duration of a back-off interval (e.g., based on the back-off contention window) and can defer transmission for three consecutive back-off intervals <NUM>, <NUM>, and <NUM>. In the timing diagram <NUM>, the back-off intervals <NUM> and <NUM> are each followed by additional back-off intervals. Therefore, the back-off intervals <NUM> and <NUM> are each referred to as an "intermediate back-off interval.

Referring to the timing diagram <NUM> for the second network device, the second network device may not initiate any transmissions and may not attempt to gain control of the communication medium while the first network device has control of the communication medium (e.g., during the total transmit duration <NUM>). This is illustrated by the back-off interval <NUM> in the timing diagram <NUM>. After the back-off interval <NUM> elapses, the second network device can attempt to gain control of the communication medium. In the timing diagram <NUM>, the second network device gains control of the communication medium and transmits data for a transmit duration that spans two transmit intervals <NUM> and <NUM>. As similarly discussed with reference to the first network device, after transmitting the available/buffered data, the second network device determines to implement two consecutive back-off intervals <NUM> and <NUM>.

Referring to the timing diagram <NUM> for the first network device, after the total back-off duration <NUM> elapses, the first network device can contend with other network devices for control of the communication medium. In the timing diagram <NUM>, the first network device gains control of the communication medium and transmits data for a duration that spans two transmit intervals <NUM> and <NUM>. As discussed above, after transmitting the available/buffered data in the transmit intervals <NUM> and <NUM>, the first network device determines to implement two consecutive back-off intervals <NUM> and <NUM>. The first network device determines a random back-off interval and initiates the first back-off interval <NUM> with a duration indicated by the back-off interval. Because the back-off interval <NUM> is followed by another back-off interval <NUM>, the back-off interval <NUM> is an intermediate back-off interval. After the intermediate back-off interval <NUM> elapses, the first network device determines whether there are transmissions from another network device on the communication medium. In other words, the first network device may determine that the back-off interval <NUM> has elapsed but the total back-off duration <NUM> has not elapsed. Accordingly, the first network device may determine whether to vary the duration of at least one subsequent back-off interval depending on whether there are transmissions from another network device on the communication medium. From the timing diagrams <NUM> and <NUM>, the beginning of transmit interval <NUM> (and consequently, a transmission) of the second network device occurs at the end of the intermediate back-off interval <NUM> of the first network device. Therefore, the first network device operates as if a collision has occurred and determines to increase the duration of the second back-off interval <NUM>. As depicted in the timing diagram <NUM>, the duration of the second back-off interval <NUM> is greater than the duration of the first back-off interval <NUM>. In some embodiments, the duration of the second back-off interval <NUM> can be twice the duration of the first back-off interval <NUM>. In other embodiments, the duration of the second back-off interval <NUM> can be greater than the duration of the first back-off interval <NUM> by any suitable factor. In another embodiment, the first network device can increase the length of the back-off contention window and determine an effective back-off contention window, as described in Eq. <NUM>. The first network device can select a random value that lies between a suitable lower limit (e.g., zero) and the effective back-off contention window. The first network device may initiate the second back-off interval <NUM> for a number of communication time slots that is equal to the random value that is selected depending on the effective back-off contention window.

It should be understood that <FIG> and the operations described herein are examples meant to aid in understanding embodiments and should not be used to limit embodiments or limit scope of the claims. Embodiments may perform additional operations, fewer operations, operations in a different order, operations in parallel, and some operations differently. For example, although <FIG> describes the network device <NUM> determining the total transmit duration and the transmit interval after the communications are transmitted, embodiments are not so limited. In other embodiments, the network device <NUM> can determine the total transmit duration and the transmit interval before it starts transmitting data on the communication medium. For example, the time-interval calculation unit <NUM> can determine the total transmit duration for the network device <NUM> based, at least in part, on the amount of buffered data at the network device <NUM>. The time-interval calculation unit <NUM> can also determine the transmit interval based, at least in part, on the type/priority of the buffered data.

Although <FIG> depicts the network device <NUM> calculating the number of back-off intervals after selecting the back-off interval (e.g., based on the back-off contention window), embodiments are not so limited. In other embodiments, the time-interval calculation unit <NUM> can calculate the number of back-off intervals before selecting the back-off interval. In some embodiments, the time-interval calculation unit <NUM> may select a predetermined back-off interval based, at least in part, on the type and priority of the data that was transmitted (or the buffered data).

In some embodiments, the time-interval calculation unit <NUM> can determine the number of additional/extra back-off intervals that the network device <NUM> should implement. The number of additional back-off intervals can be equal to the number of transmit interval boundaries that were crossed during the total transmit duration. Referring to the example timing diagram <NUM> of <FIG>, the total transmit duration <NUM> spans three transmit intervals <NUM>, <NUM>, and <NUM>. In <FIG>, two transmit interval boundaries are crossed (i.e., at the interface between the transmit intervals <NUM> and <NUM> and between the transmit intervals <NUM> and <NUM>) after the total transmit duration <NUM> begins. Accordingly, the first network device may implement two additional back-off intervals - for a total of three consecutive back-off intervals <NUM>, <NUM>, and <NUM>, as depicted in <FIG>.

In some embodiments, if the total transmit duration is less than the transmit interval, the network device <NUM> may defer transmission for a predetermined number of back-off intervals. In one embodiment, the network device <NUM> may defer transmission for at least one back-off interval if the total transmit duration is less than the transmit interval. In other embodiments, however, the network device <NUM> may defer transmission for any suitable number of consecutive back-off intervals (e.g., <NUM> consecutive back-off intervals) if the total transmit duration is less than the transmit interval. In another embodiment, the network device <NUM> may defer transmission for less than one back-off interval if the total transmit duration is less than the transmit interval.

In some embodiments, the time-interval calculation unit <NUM> can restrict the number of consecutive transmit intervals during which the network device <NUM> can transmit on the communication medium. Effectively, the time-interval calculation unit <NUM> can restrict the total transmit duration for which the network device <NUM> can transmit communications or restrict the amount of data that can be consecutively transmitted. For example, the time-interval calculation unit <NUM> may determine that the network device <NUM> may not transmit for more than a maximum transmit duration or may not transmit for more than a maximum number of consecutive transmit intervals. This can ensure that the network device <NUM> does not monopolize the communication medium after it gains control of the communication medium. If the time-interval calculation unit <NUM> determines that the amount of time required to transmit the buffered data exceeds the maximum transmit duration, the transceiver unit <NUM> may select a portion of the buffered data that should be transmitted. The portion of the buffered data may be selected based on the priority/type of the buffered data, whether the data is time-sensitive, the priority of the destination device, etc. For example, the transceiver unit <NUM> may determine to transmit the portion of data that is associated with the highest priority. After transmitting the portion of data during the maximum transmit duration, the network device <NUM> may initiate the total back-off duration (e.g., a suitable number of consecutive back-off intervals). After the total back-off duration elapses, the transceiver unit <NUM> can contend for control of the communication medium. The transceiver unit <NUM> can transmit some/all of the remaining buffered data after the network device <NUM> gains control of the communication medium. As another example, it may be determined that the transmission time associated with data scheduled to be transmitted from the network device <NUM> exceeds the maximum transmit duration associated with the network device <NUM>. Accordingly, the network device <NUM> may transmit a first portion of the data for the maximum transmit duration. The network device may transmit a second portion of the data after the total back-off duration associated with transmitting the first portion of the data elapses. It is noted that the network device <NUM> may select the first portion and the second portion of data using any suitable techniques (e.g., priority of the data, latency specifications of the data, on a first-in first-out basis, etc.). Additionally, in some embodiments, the time-interval calculation unit <NUM> can restrict the total back-off duration for which the network device <NUM> defers transmitting on the communication medium and contending for control of the communication medium. In some embodiments, the time-interval calculation unit <NUM> can determine a maximum back-off duration or a maximum contention window. In some embodiments, the maximum back-off duration and the maximum contention window may be determined based, at least in part, on the maximum transmit duration.

In some embodiments, the time-interval calculation unit <NUM> may determine whether to cluster multiple consecutive transmit intervals depending on the availability of buffered data for transmission, the type and priority of data being transmitted, etc. For example, if the data scheduled to be transmitted is not time-sensitive data, the network device <NUM> may determine not to cluster multiple consecutive transmit intervals.

<FIG> describe operations for extending the duration of the next back-off interval if a transmission is detected after an intermediate back-off interval elapses. However, various other embodiments are possible. In one embodiment, after the intermediate back-off interval elapses, the network device <NUM> may increase the duration of one subsequent back-off interval. For example, consider the timing diagram <NUM> where the network device <NUM> determines to implement three consecutive back-off intervals <NUM>, <NUM>, and <NUM>. In this example, if a transmission is detected after the intermediate back-off interval <NUM> elapses, the network device <NUM> may only increase the duration of the next back-off interval <NUM> and may not increase the duration of the back-off interval <NUM>. After the intermediate back-off interval <NUM> elapses, the network device <NUM> may sense the communication medium again and determine whether to increase the duration of the back-off interval <NUM>. If a transmission is detected after the intermediate back-off interval <NUM> elapses, the network device <NUM> may increase the duration of the next back-off interval <NUM>. However, if no transmissions are detected after the intermediate back-off interval <NUM> elapses, the network device <NUM> may not increase the duration of the next back-off interval <NUM>. In other words, the duration of the back-off interval <NUM> may be the same as the duration of the initial back-off interval <NUM>. In another embodiment, after the intermediate back-off interval elapses, the network device <NUM> may increase the duration of all the subsequent back-off intervals. For example, consider the timing diagram <NUM> where the network device <NUM> determines to implement three consecutive back-off intervals <NUM>, <NUM>, and <NUM>. In this example, if a transmission is detected after the intermediate back-off interval <NUM> elapses, the network device <NUM> may increase the duration of the subsequent back-off intervals <NUM> and <NUM>. Furthermore, after the intermediate back-off interval <NUM> elapses, the network device <NUM> may sense the communication medium again and determine whether to further increase the duration of the back-off interval <NUM>. For example, the network device <NUM> may initially determine to implement three back-off intervals <NUM>, <NUM>, and <NUM>, each having a duration of <NUM>. If a transmission is detected after the back-off interval <NUM> elapses, the network device <NUM> may increase the duration of each of the subsequent back-off intervals <NUM> and <NUM> to <NUM>. If a transmission is detected after the back-off interval <NUM> elapses, the network device <NUM> may further increase the duration of the back-off interval <NUM> to <NUM>.

As will be appreciated by one skilled in the art, aspects of the present inventive subject matter may be embodied as a system, method, or computer program product. Accordingly, aspects of the present inventive subject matter may take the form of an entirely hardware embodiment, a software embodiment (including firmware, resident software, microcode, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a "circuit," "module" or "system. " Furthermore, aspects of the present inventive subject matter may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.

Any combination of one or more non-transitory computer readable medium(s) may be utilized. Non-transitory computer-readable media comprise all computer-readable media, with the sole exception being a transitory, propagating signal. The non-transitory computer readable medium may be a computer readable storage medium.

Computer program code embodied on a computer readable medium for carrying out operations for aspects of the present inventive subject matter may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the "C" programming language or similar programming languages.

Aspects of the present inventive subject matter are described with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the inventive subject matter.

<FIG> is a block diagram of one embodiment of an electronic device <NUM> including a mechanism for flexible transmission and back-off intervals. In some embodiments, the electronic device <NUM> can be a laptop computer, a tablet computer, a netbook, a mobile phone, a smart appliance, a wearable device, a gaming console, a desktop computer, a network bridge device, or other suitable electronic device including communication capabilities. For example, the electronic device <NUM> can be a WLAN device that implements WLAN communication protocols for communicating over a WLAN communication medium. The electronic device <NUM> includes a processor unit <NUM> (possibly including multiple processors, multiple cores, multiple nodes, and/or implementing multi-threading, etc.). The electronic device <NUM> includes a memory unit <NUM>. The memory unit <NUM> may be system memory (e.g., one or more of cache, SRAM, DRAM, zero capacitor RAM, Twin Transistor RAM, eDRAM, EDO RAM, DDR RAM, EEPROM, NRAM, RRAM, SONOS, PRAM, etc.) or any one or more of the above already described possible realizations of computer-readable storage media. The electronic device <NUM> also includes a bus <NUM> (e.g., PCI, ISA, PCI-Express, HyperTransport®, InfiniBand®, NuBus, AHB, AXI, etc.) and network interfaces <NUM>. The processor unit <NUM>, the memory unit <NUM>, and the network interfaces <NUM> are coupled to the bus <NUM>. The network interfaces <NUM> include a wireless network interface (e.g., a WLAN interface, a Bluetooth interface, a WiMAX interface, a ZigBee® interface, a Wireless USB interface, etc.) and/or a wired network interface (e.g., a powerline communication interface, an Ethernet interface, etc.). Furthermore, in some embodiments, the electronic device <NUM> can execute an IEEE Std. <NUM> protocol for implementing hybrid communication functionality.

The electronic device <NUM> also includes a communication unit <NUM>. The communication unit <NUM> includes a time-interval calculation unit <NUM> and a transceiver unit <NUM>. As discussed above with reference to <FIG>, the time-interval calculation unit <NUM> can execute functionality to determine a back-off duration for the electronic device <NUM> based, at least in part, on a transmit duration for which the electronic device <NUM> had control of the communication medium. Any one of these functionalities may be partially (or entirely) implemented in hardware and/or on the processor unit <NUM>. For example, the functionality may be implemented with an application specific integrated circuit (ASIC), in logic implemented in the processor unit <NUM>, in a co-processor on a peripheral device or card, etc. In some embodiments, the communication unit <NUM> can be implemented on a system-on-a-chip (SoC), an ASIC, or another suitable integrated circuit to enable communications of the electronic device <NUM>. In some embodiments, the communication unit <NUM> may include additional processors and memory, and may be implemented in one or more integrated circuits on one or more circuit boards of the electronic device <NUM>. Further, realizations may include fewer or additional components not illustrated in <FIG> (e.g., video cards, audio cards, additional network interfaces, peripheral devices, etc.). For example, in addition to the processor unit <NUM> coupled with the bus <NUM>, the communication unit <NUM> may include at least one additional processor unit. As another example, although illustrated as being coupled to the bus <NUM>, the memory unit <NUM> may be coupled to the processor unit <NUM>.

While the embodiments are described with reference to various implementations and exploitations, it will be understood that these embodiments are illustrative and that the scope of the inventive subject matter is not limited to them. In general, techniques for flexible transmission and back-off intervals in a network device as described herein may be implemented with facilities consistent with any hardware system or hardware systems. Many variations, modifications, additions, and improvements are possible.

Claim 1:
A method of communication at a network device (<NUM>) over a communication medium, the method comprising:
determining that the network device (<NUM>) had control of the communication medium for one or more communication time slots;
randomly selecting a back-off interval (<NUM>) based at least in part on a back-off contention window, wherein the back-off contention window is a predetermined number of communication time slots for which the network device (<NUM>) defers transmission before attempting to gain control of the communication medium;
calculating a total back-off duration as a multiple of the back-off interval <NUM>. based, at least in part, on a total transmit duration for which the network consecutively transmits on the communication medium and a predetermined transmit interval associated with data transmitted during the total transmit duration, wherein the total back-off duration is a total amount of time for which the network device (<NUM>) does not contend for control of the communication medium; and
initiating the back-off interval (<NUM>).