Systems and methods for wireless communication

Various aspects of the present disclosure generally relate to wireless communication. In some aspects, a method may include simulating a degradation of at least one of a first wireless communication link with a network or a different second wireless communication link with the network based on detecting that a first set of one or more packets, which were received via the first wireless communication link with the network and were added to a packet buffer, and a second set of one or more packets, which were received via the different second wireless communication link with the network and were added to the packet buffer, satisfy a threshold occupancy of the packet buffer. Numerous other aspects are provided.

BACKGROUND

The present disclosure relates generally to communication systems, and more particularly, to wireless communication by a user equipment.

SUMMARY

One aspect is a method for receiving a plurality of packets having a defined order via wireless communication. The method may comprise, by one or more processors of a user equipment, receiving a first set of one or more packets of the plurality of packets having the defined order via a first wireless communication link with a network; receiving a second set of one or more packets of the plurality of packets having the defined order via a different second wireless communication link with the network; adding the first set of one or more packets of the plurality of packets having the defined order, which were received via the first wireless communication link with the network, to a packet buffer; adding the second set of one or more packets of the plurality of packets having the defined order, which were received via the different second wireless communication link with the network, to the packet buffer; detecting that the second set of one or more packets, which were received via the different second wireless communication link with the network and were added to the packet buffer, satisfy a threshold occupancy of the packet buffer; and simulating a degradation of the different second wireless communication link based on detecting that the second set of one or more packets, which were received via the different second wireless communication link with the network and were added to the packet buffer, satisfy the threshold occupancy of the packet buffer.

Another aspect is a method for receiving a plurality of packets having a defined order via wireless communication. The method may comprise, by one or more processors of a user equipment, receiving a first set of one or more packets of the plurality of packets having the defined order via a first wireless communication link with a network; receiving a second set of one or more packets of the plurality of packets having the defined order via a different second wireless communication link with the network; adding the first set of one or more packets of the plurality of packets having the defined order, which were received via the first wireless communication link with the network, to a packet buffer; adding the second set of one or more packets of the plurality of packets having the defined order, which were received via the different second wireless communication link with the network, to the packet buffer; detecting that the first set of one or more packets, which were received via the first wireless communication link with the network and were added to the packet buffer, and the second set of one or more packets, which were received via the different second wireless communication link with the network and were added to the packet buffer, satisfy a threshold occupancy of the packet buffer; and simulating a degradation of at least one of the first wireless communication link or the different second wireless communication link based on detecting that the first set of one or more packets, which were received via the first wireless communication link with the network and were added to the packet buffer, and the second set of one or more packets, which were received via the different second wireless communication link with the network and were added to the packet buffer, satisfy a threshold occupancy of the packet buffer.

Yet another aspect is a method for receiving a plurality of packets having a defined order via wireless communication. The method may comprise, by one or more processors of a user equipment, receiving a first set of one or more packets of the plurality of packets having the defined order via a first wireless communication link with a network; receiving a second set of one or more packets of the plurality of packets having the defined order via a different second wireless communication link with the network; adding the first set of one or more packets of the plurality of packets having the defined order, which were received via the first wireless communication link with the network, to a packet buffer; adding the second set of one or more packets of the plurality of packets having the defined order, which were received via the different second wireless communication link with the network, to the packet buffer; identifying a first sequence number of a packet of the first set of one or more packets, which were received via the first wireless communication link with the network and were added to the packet buffer; identifying a second sequence number of a second packet of the second set of one or more packets, which were received via the different second wireless communication link with the network and were added to the packet buffer; detecting that a difference between the identified first sequence number of the first packet and the identified second sequence number of the second packet satisfies a threshold sequence number difference; and simulating a degradation of the different second wireless communication link based on detecting that a difference between the identified first sequence number of the first packet and the identified second sequence number of the second packet satisfies a threshold sequence number difference.

Further embodiments include an apparatus (e.g., a user equipment or any other apparatus) that may comprise one or more processors configured with processor-executable instructions to perform operations of the methods and aspects summarized above, one or more other aspects described below, or any combination thereof. Further embodiments include an apparatus (e.g., a user equipment or any other apparatus) that may comprise means for performing functions of the methods and aspects summarized above, one or more other aspects described below, or any combination thereof. Further embodiments include a non-transitory processor-readable storage medium having stored thereon processor-executable instructions configured to cause one or more processors (e.g., one or more processors of a user equipment or one or more other processors) to perform operations of the methods and aspects summarized above, one or more other aspects described below, or any combination thereof. Further embodiments include a method that may include operations of the methods and aspects summarized above, one or more other aspects described below, or any combination thereof.

For purposes of summarizing, some aspects, advantages and features of a few of the embodiments of the invention have been described in this summary. Some embodiments of the invention may include some or all of these summarized aspects, advantages and features. However, not necessarily all of (or any of) these summarized aspects, advantages or features will be embodied in any particular embodiment of the invention. Thus, none of these summarized aspects, advantages and features are essential. Some of these summarized aspects, advantages and features and other aspects, advantages and features may become more fully apparent from the following detailed description and the appended claims.

DETAILED DESCRIPTION

As shown inFIG. 1, a communication system100may include one or more user equipment (UE)102. The user equipment102may communicate using one or more wireless communication systems (such as, CDMA systems, TDMA systems, OFDMA systems, LTE systems, NR systems, WiFi systems, Bluetooth systems, or any wireless communication systems), one or more wired communication systems, or any combination thereof.

The communication system100may include one or more networks, such as a network104. The network104may form at least part of a wireless communication system. The network104may support a set of one or more wireless radio access technologies (RATs) (e.g., support CDMA, TDMA, OFDMA, LTE, NR, and/or WiFi standards).

The user equipment102may be configured to use a first wireless communication link108to communicate with the network104and use a different, second wireless communication link110to communicate with the network104. The user equipment102may receive voice services, data services or both using the first wireless communication link108with the network104. The user equipment102may receive voice services, data services or both using the second wireless communication link110with the network104.

The user equipment102may include a processor (e.g., a processor112, a processor1402inFIG. 14, a modem processor1408inFIG. 14, or other suitable processor).

The user equipment102may be configured to communicate with the network104using one or more layers or protocols, such as, packet data convergence protocol (PDCP) or any other suitable layer or protocol. For example, the network104may transmit one or more packets—such as, PDCP protocol data units (PDUs) or any other suitable packets—which the user equipment102may receive from the network104. For instance, the user equipment102may be configured to use PDCP to receive one or more packets from the network104via the first wireless communication link108and use PDCP to receive one or more packets from the network104via the second wireless communication link110.

The one or more packets—which the user equipment102may receive from the network104—may have a defined order. In some embodiments, each packet of the one or more packets may include an indication of the packet's position in the defined order, such as, a sequence number or other indication of the packet's position in the defined order. For instance, one or more schedulers or other components of the network104may assign a PDCP sequence number to a PDCP PDU, and the PDCP PDU may be configured to include the PDCP sequence number or other indication of the PDCP sequence number.

In some instances, the user equipment102may receive the packets in an order other than the defined order. For example, the network104may transmit the packets in the defined order, but one or more of the packets may be lost and the network104may retransmit the one or more packets, which the user equipment102receives in an order other than the defined order. Also, for example, various components of the network104may transmit the packets at various times and in various orders, despite the packets' defined order.

As shown inFIG. 1, the user equipment102may include a packet buffer114to which the user equipment102may add the packets it receives from the network104. Later, the user equipment102may remove one or more packets from the packet buffer114and may, for example, pass the removed packets to one or more layers.

In some embodiments, the user equipment102may be configured to remove one or more packets from the packet buffer114based on the defined order and pass the removed packets to one or more layers based on the defined order. For example, as noted above, the packets may include a sequence number, and the user equipment102may be configured to remove the packet with the lowest sequence number that has not already been removed from the packet buffer114.

For instance, as shown inFIG. 2A, where a group of packets202have sequence numbers ranging from 1 to N, the user equipment102may be configured to remove the packet202with the sequence number of 1 (FIG. 2B), then the packet202with the sequence number 2 (FIG. 2C), then the packet202with the sequence number 3 (FIG. 2D), and so on sequentially up to the packet202with the sequence number of N. Also, for instance, where a group of packets202have sequence numbers ranging from 1 to N, the user equipment102may be configured to remove the packets202in groups, for instance, remove the packets202with the sequence numbers of 1 and 2, then the packets202with the sequence numbers 3 to 6, and so on sequentially up to the packet202with the sequence number of N.

In some embodiments in which the user equipment102is configured to remove one or more packets202from the packet buffer114based on the defined order, the packet202with the lowest sequence number that has not already been removed from the packet buffer114may be missing from the packet buffer114. In particular, the user equipment102may be waiting to receive the packet202, such as, waiting for the initial transmission of the packet202or waiting for a retransmission of the packet202. While the user equipment102is waiting to receive the packet202with the lowest sequence number that has not already been removed from the packet buffer114, the user equipment102may receive other packets202with higher sequence numbers and may add the other packets202with higher sequence numbers to the packet buffer114. For example, as shown inFIG. 3A, the user equipment102may have already received packets202with sequence numbers from 1 to 5 and 7, added them to the packet buffer114, and later removed the packets202with sequence numbers 1 to 4. In this example, the user equipment102may then remove the packet202with the lowest sequence number that has not already been removed from the packet buffer114(i.e., sequence number 5), as shown inFIG. 3B. After this removal, the packet202with the lowest sequence number that has not already been removed from the packet buffer114(i.e., sequence number 6) is missing from the packet buffer114. Consequently, the user equipment102may wait to receive the missing packet202. While the user equipment102is waiting to receive the packet202with the lowest sequence number that has not already been removed from the packet buffer114, the user equipment102may receive one or more other packets202with higher sequence numbers (e.g., sequence numbers 8 to AO and may add the other packets202with the higher sequence numbers to the packet buffer114, as shown inFIG. 3C. It will be appreciated that, as the user equipment102receives the other packets202with higher sequence numbers and adds them to the packet buffer114, there may be additional missing packets that form other gaps in those higher sequence numbers.

The packet buffer114may have a defined capacity. Thus, as shown above, while the user equipment102waits to receive the packet202with the lowest sequence number that has not already been removed from the packet buffer, the user equipment102may fill some or all of the packet buffer's capacity with other packets202with higher sequence numbers.

As some point, the user equipment102may stop waiting to receive the packet202with the lowest sequence number that has not already been removed from the packet buffer and may remove one or more other packets202from the packet buffer114. For example, the user equipment102may flush the packet buffer114, despite one or more packets202missing from the packet buffer114.

In further detail, when the packet buffer114is filled to a threshold occupancy (e.g., completely filled or filled to a defined threshold amount), the user equipment102may flush the packet buffer114, that is, remove some or all of the packets202in the packet buffer202and transmit the removed packets202to one or more layers regardless of whether there are missing packets202in between. (Thus, when the packet buffer114is filled to a buffer-flush-triggering threshold occupancy, the user equipment102may flush the packet buffer102, even when the packet202with the lowest sequence number that has not already been removed from the packet buffer114is missing from the packet buffer114.)

Flushing the packet buffer114when there are missing packets202may be undesirable because the missing packets202may include a large amount of data, and the loss of the data may result in reduced performance and reduced user experience for the user equipment102. Also, flushing the packet buffer114when there are missing packets202may be undesirable because a layer the receives the flushed packets202, e.g., a transport layer like Transport Control Protocol, may reduce the throughput in response to detecting that packets202are missing, and the reduced throughput may result in reduced performance and reduced user experience for the user equipment102. Moreover, flushing the packet buffer114when there are missing packets202may be undesirable because, after the flush, the user equipment102may discard the missing packets if they arrive (e.g., because the protocol may require the packets to be delivered in sequence and, after the flush, the missing packets cannot be delivered in sequence). Thus, the network capacity used to transmit the missing packets202, which were later discarded, will have been wasted.

An alternative to flushing the packet buffer114may be to discard new packets202before placing them in the packet buffer114. Depending on the number of gaps in the packet buffer114, data rates, latency and/or other factors, discarding the new packets202without buffering may be more than flushing or less desirable than flushing. Unfortunately, while flushing the packet buffer114may be undesirable when there are missing packets202, refraining from flushing the packet buffer114may be even less desirable. In particular, in some situations, flushing the packet buffer114may provide necessary room for additional packets202sent by the network104, and refraining from flushing the packet buffer114would undesirably result in the additional packets202being dropped.

The user equipment102may be configured to use dual connectivity to receive packets202, e.g., dual cell connectivity, via the first wireless communication link108and the second wireless communication link110.

In some embodiments, the user equipment102may be configured to use dual connectivity, e.g., dual cell connectivity, to receive packets202via a plurality of radio access technologies. For example, using E-UTRAN New Radio-Dual Connectivity (EN-DC), the network104may use the first wireless communication link108to send packets202via a first radio access technology, such as LTE, and may use the second wireless communication link110to send packets202via a different, second radio access technology, such as NR, and the user equipment102may receive the packets202via the first radio access technology using the first wireless communication link108and via the second radio access technology using the second wireless communication link110.

In some embodiments, the user equipment102may be configured to use dual connectivity, e.g., dual cell connectivity, to receive packets202via a single radio access technology (e.g., LTE only or NR only). For example, the network104may use the first wireless communication link108to send packets202via a first radio access technology (e.g., NR or LTE) and may use the second wireless communication link110to send packets202via the same first radio access technology.

In some embodiments, the user equipment102may be configured to use carrier aggregation to receive packets202via the first wireless communication link108and the second wireless communication link110. For example, the network104may carrier aggregate the first wireless communication link108(e.g., NR sub6) and the second wireless communication link110(e.g., NR mmW) to send packets202.

The packets202sent and received via the first wireless communication link108(e.g., via the first radio access technology, a first cell, a first numerology, or any combination thereof) and the packets202sent and received via the second wireless communication link110(e.g., via the second radio access technology, a different second cell, a different second numerology, or any combination thereof) may collectively share a defined order. For example, in some embodiments in which the network104sends packets202via the first wireless communication link108and via the second wireless communication link110, the network104may share a PDCP among both the packets202sent via the first wireless communication link108and the packets202sent via the second wireless communication link110. When the network104shares a PDCP among both the packets202sent via the first wireless communication link108and the packets202sent via the second wireless communication link110, the packets202sent via the first wireless communication link108and the packets202sent via the second wireless communication link110may collectively share a defined order, which may be indicated by the packets' PDCP sequence numbers. Thus, as one example in which a group of packets have sequence numbers of 1 to 67, the network104may send packets202having sequence numbers 1 to 5, 14 to 27, and 50 to 67 via the first wireless communication link108and may send packets202having sequence numbers 6 to 13 and 28 to 49 via the second wireless communication link110.

In some embodiments in which the packets202sent and received via the first wireless communication link108and the packets202sent and received via the second wireless communication link110collectively share a defined order, the user equipment102may have a packet buffer114for receiving both the packets202sent via the first wireless communication link108and the packets202sent via the second wireless communication link110. Thus, in such embodiments, the user equipment202may add both packets202received via the first wireless communication link108(e.g., via the first radio access technology, the first cell, the first numerology, or any combination thereof) and packets202received via the second wireless communication link110(e.g., via the second radio access technology, the different second cell, the different second numerology, or any combination thereof) to the packet buffer114; and the user equipment102may remove one or more packets202from the packet buffer114based on the shared defined order and pass the removed packets to one or more layers based on the shared defined order.

In some embodiments, the packet buffer114may be logically and/or physically separated and may comprise a first packet sub-buffer allocated to the first wireless communication link108(e.g., allocated to the first radio access technology, the first cell, the first numerology, or any combination thereof) and a second packet sub-buffer allocated to the second wireless communication link110(e.g., allocated to the second radio access technology, the different second cell, the different second numerology, or any combination thereof). In particular, as shown inFIG. 4A, the packet buffer114may comprise a first packet sub-buffer402aand a second packet sub-buffer402b, and the user equipment102may add packets202received via the first wireless communication link108to the first packet sub-buffer402aand may add packets202received via the second wireless communication link110to the second packet sub-buffer402b. For example, as shown inFIG. 4A, the user equipment102may have received packets202with sequence numbers 1 to 5, 9, 11 and 12 via the first wireless communication link108and added them to the first packet sub-buffer402a; received packets with sequence numbers 6, 7 and 10 via the second wireless communication link110and added them to the second packet sub-buffer402b; and later removed the packets202with sequence numbers 1 to 4 from the first packet sub-buffer402aand the packet buffer114. In this example, the user equipment102may then remove the packet202with the lowest sequence number that has not already been removed from the packet buffer114. As shown inFIG. 4A, the packet202with the lowest sequence number that has not already been removed from the packet buffer114(i.e., sequence number 5) is in the first packet sub-buffer402a, and thus, the user equipment102may remove the packet202with the sequence number 5 from the first packet sub-buffer402aand the packet buffer114, as shown inFIG. 4B. After this removal, the packet202with the lowest sequence number that has not already been removed from the packet buffer114(i.e., sequence number 6) is in the second packet sub-buffer402b, and thus, the user equipment102may remove the packet202with the sequence number 6 from the second packet sub-buffer402band the packet buffer114, as shown inFIG. 4C. The user equipment102continue to remove the packets202from their respective packet sub-buffer402of the packet buffer114based on the packets' defined order, e.g., based on each packet's sequence number. The user equipment102may be configured to remove the packets202from their respective packet sub-buffers402of the packet buffer114individually, in groups, or both, for example, as discussed above. As shown inFIG. 4C, the packet202with the lowest sequence number that has not already been removed from the packet buffer114(i.e., sequence number 7) is in the second packet sub-buffer402b, and thus, the user equipment102may remove the packet202with the sequence number 7 from the second packet sub-buffer402band the packet buffer114, as shown inFIG. 4D. As shown inFIG. 4D, the packet202with the lowest sequence number that has not already been removed from the packet buffer114(i.e., sequence number 8) is missing from the packet buffer114. Consequently, the user equipment102may wait to receive the missing packet202with the sequence number 8. In the meantime, the network104may send more packets202.

The first packet sub-buffer allocated to the first wireless communication link108may have a first defined capacity and the second packet sub-buffer allocated to the second wireless communication link110may have a second defined capacity. For example, the packet buffer114may have a defined capacity, the first packet sub-buffer402amay have a capacity that is a first defined percentage of the packet buffer's capacity, and the second packet sub-buffer402bmay have a capacity that is a second defined percentage of the packet buffer's capacity. In some instances, the sum of the first defined percentage of the packet buffer's capacity and the second defined percentage of the packet buffer's capacity may be one hundred percent, that is, the capacity of the first packet sub-buffer402aand the capacity of the second packet sub-buffer402bcomprise the total capacity of the packet buffer. In other instances, the sum of the first defined percentage of the packet buffer's capacity and the second defined percentage of the packet buffer's capacity may be less than one hundred percent, that is, the packet buffer114may have other capacity that may be allocated for other purposes.

In some embodiments in which the packets202sent and received via the first wireless communication link108and the packets202sent and received via the second wireless communication link110collectively share a defined order, one wireless communication link may be significantly “ahead” of the other wireless communication link. In general, “ahead” means that one wireless communication link is delivering packets202with sequence numbers that are greater than the sequence numbers of the packets202delivered by the other wireless communication link, which may occur (for example) where there is variable latency in the network104between a first cell group and a second cell group, imperfect scheduling, or variations in delivery time for queued packet traffic. For instance, the highest sequence number of a packet202transmitted by the network104using the first wireless communication link108may be significantly higher than the highest sequence number of a packet202transmitted by the network104using the second wireless communication link110. Likewise, the highest sequence number of a packet202received by the user equipment102using the first wireless communication link108may be significantly higher than the highest sequence number of a packet202received by the user equipment102using the second wireless communication link110. Similarly, the highest sequence number of a packet202in the packet buffer114that was received by the user equipment102using the first wireless communication link108may be significantly higher than the highest sequence number of a packet202in the packet buffer114that was received by the user equipment102using the second wireless communication link110.

One wireless communication link may become significantly ahead of the other wireless communication link for any of a variety of reasons. In general, the “ahead” wireless communication link may often become significantly ahead of the “behind” wireless communication link in situations in which the user equipment102is waiting to receive, via the “behind” wireless communication link, the packet202with the lowest sequence number that has not already been removed from the packet buffer114.

In further detail, as shown inFIG. 4D, the user equipment102may be waiting for to receive, via the first wireless communication link108, the packet202with the lowest sequence number (i.e., sequence number 8) that is missing from the packet buffer114and has not already been removed from the packet buffer114. Concurrently, as shown inFIG. 4E, the user equipment102may continue to receive, via the second wireless communication link110, a significant amount of packets202—e.g., packets202having sequence numbers 13 to N, where N is significantly higher than 12 (i.e., the highest sequence number of a packet202in the packet buffer114that was received using the first wireless communication link108).

For example, the user equipment102might continue to receive, via the second wireless communication link110, a significant amount of packets202in instances in which a first access point of the network104provides the first wireless communication link108and a second access point of the network104provides the second wireless communication link110. In particular, the first and second access points may not be co-located, and, with the first and second access point not being co-located, the second access point may be unaware that the user equipment102is waiting to receive the missing packet202from the first access point. Consequently, the second access point may continue to send, via the second wireless communication link110, a significant amount of packets202. It will be appreciated, however, that the first and second access points may be co-located and still have one wireless communication link significantly ahead of the other wireless communication link. It will also be appreciated that the user equipment102may have both the first wireless communication link108and the second wireless communication link110with a single access point and still have one wireless communication link significantly ahead of the other wireless communication link.

Also, as an example, the user equipment102might continue to receive, via the second wireless communication link110, a significant amount of packets202in instances in which the user equipment102comprises a multi-SIM user equipment. In particular, with a multi-SIM user equipment102, the first wireless communication link108could be in a tuneaway while the second wireless communication link110is not in a tuneaway. Consequently, while the first wireless communication link108is in a tuneaway and the user equipment is waiting to receive a missing packet via the first wireless communication link108, the user equipment102might continue to receive, via the second wireless communication link110, a significant amount of packets202.

When one wireless communication link becomes significantly ahead of the other wireless communication link, the user equipment102may flush the packet buffer114and/or one or more of the packet sub-buffers402. For example, when one wireless communication link becomes significantly ahead of the other wireless communication link, the packet buffer114may be filled to a threshold occupancy, and the user equipment102may flush the packet buffer114based on the packet buffer114being filled to the threshold occupancy. Also, for example, when one wireless communication link becomes significantly ahead of the other wireless communication link, the packet sub-buffer402allocated to the “ahead” wireless communication link may be filled to a threshold occupancy, and the user equipment102may flush the ahead packet sub-buffer402based on the ahead packet sub-buffer402being filled to the threshold occupancy. As noted above, flushing the packet buffer114when there are missing packets202may be undesirable. Similarly, flushing a packet sub-buffer402when there are missing packets202may be undesirable for the same reasons. Various aspects discussed below may help postpone and possibly avoid flushing a packet buffer when there are missing packets and thus avoid the associated undesirable consequences.

FIG. 5is a flowchart illustrating a method500for receiving a plurality of packets having a defined order via wireless communication according to some embodiments, which may be performed by one or more processors of a user equipment—such as one or more processors112(FIG. 1) that may be configured with packet communication logic116which performs the method500, performs other functionality (including other functionality described herein), or performs any combination thereof. As shown inFIG. 5, the method500may include one or more blocks, such as block502, block504, block506, block508, block510, block512, block514, or any combination thereof.

At block502, the processor may receive a first set of one or more packets of the plurality of packets having the defined order via a first wireless communication link with a network (e.g., using a first radio access technology, a first cell, a first numerology, a first carrier of a carrier aggregation, or any combination thereof). For example, the processor may receive a first set of one or more packets of a plurality of packets202having the defined order via the first wireless communication link108with the network104using the first radio access technology, the first cell, the first numerology, the first carrier of the carrier aggregation, or any combination thereof.

At block504, the processor may receive a second set of one or more packets of the plurality of packets having the defined order via a different second wireless communication link with the network (e.g., using a different second radio access technology, using a different second cell, a different second numerology, a different second carrier of the carrier aggregation, or any combination thereof). For example, the processor may receive a second set of one or more packets of the plurality of packets202having the defined order via the different second wireless communication link110with the network104using the different second radio access technology, the different second cell, the different second numerology, the different second carrier of the carrier aggregation, or any combination thereof.

At block506, the processor may add the first set of one or more packets of the plurality of packets having the defined order, which were received via the first wireless communication link with the network, to a packet buffer. For example, the processor may add the first set of one or more packets, which were received at block502, to the packet buffer114.

At block508, the processor may add the second set of one or more packets of the plurality of packets having the defined order, which were received via the different second wireless communication link with the network, to the packet buffer. For example, the processor may add the second set of one or more packets, which were received at block504, to the packet buffer114.

At block510, the processor may detect that the second set of one or more packets, which were received via the different second wireless communication link with the network and were added to the packet buffer, satisfy a threshold occupancy of the packet buffer. For example, the processor may detect that the second set of one or more packets, which were received at block504and added to the packet buffer at block508, satisfy a threshold occupancy of the packet buffer114.

At block512, the processor may simulate a degradation of the different second wireless communication link based on detecting that the second set of one or more packets, which were received via the different second wireless communication link with the network and were added to the packet buffer, satisfy the threshold occupancy of the packet buffer. For example, based on detecting that the second set of one or more packets satisfy the threshold occupancy of the packet buffer at block510, the processor may simulate a degradation of the different second wireless communication link110. In some embodiments, simulating a degradation of the different second wireless communication link based on detecting that the second set of one or more packets satisfy the threshold occupancy of the packet buffer may comprise simulating a degradation of the different second wireless communication link based on (1) detecting that the first set of one or more packets and the second set of one or more packets collectively satisfy a first threshold occupancy of the packet buffer and (2) detecting that the second set of one or more packets satisfy a second threshold occupancy of the packet buffer (e.g., occupying more of the packet buffer than the first set of one or more packets occupies, occupying a defined amount of the packet buffer, occupying a defined amount of a packet sub-buffer, or the like).

The simulation of the degradation of the different second wireless communication link at block512may advantageously provide additional time to postpone and possibly avoid flushing the packet buffer when there are missing packets. In particular, with the additional time provided by the simulation of the degradation of the different second wireless communication link at block512, one or more missing packets (such as, the missing packet202having sequence number 8 inFIG. 4E) may be received via the first wireless communication link and added to the packet buffer—which may then allow those previously missing packets and the other packets already in the buffer (such as, the packets202having sequence numbers 9 to N inFIG. 4E) to be removed from the packet buffer in the defined order without having to flush the packet buffer with missing packets.

The simulation of the degradation of the different second wireless communication link may provide the additional time because, for example, the simulation may trigger the network to slow the network's transmission of packets via the different second wireless communication link. When the network slows the network's transmission of packets via the different second wireless communication link, it may take more time for the packet buffer to be filled to a buffer-flush-triggering threshold occupancy. Also, for example, the simulation of the degradation of the different second wireless communication link may provide the additional time because the simulation may trigger the network to retransmit one or more packets via the different second wireless communication link. When the network retransmits one or more packets via the different second wireless communication link, it may take more time for the packet buffer to be filled to a buffer-flush-triggering threshold occupancy.

At block514, the processor may perform a Fast NACK (e.g., at a radio link control, RLC, layer) for one or more packets of the plurality of packets having the defined order that are missing from the packet buffer, such as, missing packets scheduled to be received via the first wireless communication link. For example, the processor may perform the Fast NACK at block514based on detecting (at block510) that the second set of one or more packets, which were received via the different second wireless communication link with the network and were added to the packet buffer, satisfy the threshold occupancy of the packet buffer. Also, for example, the processor may perform the Fast NACK at block514in response to the initiation of the simulation at block512. As used herein, a Fast NACK occurs when an automatic repeat request protocol issues a negative acknowledgement earlier than it would have with the standard specification behavior, for instance, before a reordering timer has expired.

As shown inFIG. 6, block506(FIG. 5) may include one or more blocks, such as, optional block602; block508(FIG. 5) may include one or more blocks, such as, optional block604; block510(FIG. 5) may include one or more blocks, such as, optional block606; and block512(FIG. 5) may include one or more blocks, such as, optional block608. Optional blocks602,604,606and608may be performed by one or more processors of a user equipment—such as one or more processors112(FIG. 1) that may be configured with packet communication logic116which performs one or more of these blocks, performs other functionality (including other functionality described herein), or performs any combination thereof.

At optional block602, the processor may add the first set of one or more packets, which were received via the first wireless communication link with the network, to a first packet sub-buffer. The first packet sub-buffer may be allocated to the first wireless communication link with the network, the first radio access technology, the first cell, the first numerology, the first carrier of the carrier aggregation, or any combination thereof. For example, the processor may add the first set of one or more packets, which were received at block502inFIG. 5, to the first packet sub-buffer402a.

At optional block604, the processor may add the second set of one or more packets, which were received via the different second wireless communication link with the network, to a second packet sub-buffer. The second packet sub-buffer may be allocated to the different second wireless communication link with the network, the different second radio access technology, the different second cell, the different second numerology, the different second carrier of the carrier aggregation, or any combination thereof. For example, the processor may add the second set of one or more packets, which were received at block504inFIG. 5, to the second packet sub-buffer402b.

At optional block606, the processor may detect that the second set of one or more packets, which were received via the different second wireless communication link with the network and were added to the second packet sub-buffer, satisfy a threshold occupancy of the second packet sub-buffer. For example, the processor may detect that the second set of one or more packets, which were received at block504inFIG. 5and added to the second packet sub-buffer402bat optional block604, satisfy a threshold occupancy of the second packet sub-buffer402b.

At optional block608, the processor may simulate a degradation of the different second wireless communication link based on detecting that the second set of one or more packets, which were received via the different second wireless communication link with the network and were added to the second packet sub-buffer, satisfy a threshold occupancy of the second packet sub-buffer. For example, the processor may simulate a degradation of the different second wireless communication link based on detecting, at optional block606, that the second set of one or more packets satisfy a threshold occupancy of the second packet sub-buffer. This simulation of a degradation of the different second wireless communication link may advantageously provide additional time to postpone and possibly avoid flushing the packet buffer when there are missing packets, as discussed above with respect toFIG. 5.

As shown inFIG. 7, block510(FIG. 5) may include one or more blocks, such as, optional block702, optional block704, and optional block706; and block512(FIG. 5) may include one or more blocks, such as, optional block708. Optional blocks702,704,706and708may be performed by one or more processors of a user equipment—such as one or more processors112(FIG. 1) that may be configured with packet communication logic116which performs one or more of these blocks, performs other functionality (including other functionality described herein), or performs any combination thereof.

At optional block702, the processor may identify a first sequence number of a packet of the first set of one or more packets, which were received via the first wireless communication link with the network and were added to the packet buffer. For example, the processor may identify a highest sequence number of the first set of one or more packets, which were received via the first wireless communication link with the network at block502inFIG. 5and were added to the packet buffer at block506inFIG. 5.

At optional block704, the processor may identify a second sequence number of a second packet of the second set of one or more packets, which were received via the different second wireless communication link with the network and were added to the packet buffer. For example, the processor may identify a highest sequence number of the second set of one or more packets, which were received via the different second wireless communication link with the network at block504inFIG. 5and were added to the packet buffer at block508inFIG. 5.

At optional block706, the processor may detect that a difference between the identified first sequence number of the first packet and the identified second sequence number of the second packet satisfies a threshold sequence number difference. In some embodiments, at optional block706, the processor may detect a difference between a highest sequence number of the first set of one or more packets received and a highest sequence number of the second set of one or more packets received. For example, at optional block706, the processor may detect that the highest sequence number of the second set of one or more packets in the packet buffer is a threshold-satisfying-amount higher than the highest sequence number of the first set of one or more packets in the packet buffer.

At optional block708, the processor may simulate a degradation of the different second wireless communication link based on detecting that a difference between the identified first sequence number of the first packet and the identified second sequence number of the second packet satisfies a threshold sequence number difference. This simulation of a degradation of the different second wireless communication link may advantageously provide additional time to postpone and possibly avoid flushing the packet buffer when there are missing packets, as discussed above with respect toFIG. 5.

As shown inFIG. 5andFIG. 8, the method500may further include optional block802. Optional block802may be performed by one or more processors of a user equipment—such as one or more processors112(FIG. 1) that may be configured with packet communication logic116which performs one or more of these blocks, performs other functionality (including other functionality described herein), or performs any combination thereof.

At optional block802, the processor may end the simulation of the degradation of the different second wireless communication link, which was initiated at block512inFIG. 5, or end the simulation of the degradation of at least one of the first wireless communication link or the different second wireless communication link, which was initiated at block1404(FIG. 14).

As shown inFIG. 9, optional block802(FIG. 8) may include one or more blocks, such as, optional block902and optional block904, which may be performed by one or more processors of a user equipment—such as one or more processors112(FIG. 1) that may be configured with packet communication logic116which performs one or more of these blocks, performs other functionality (including other functionality described herein), or performs any combination thereof.

At optional block902, the processor may detect that a set of one or more packets, which were received via the different second wireless communication link with the network and were added to the packet buffer, fail to satisfy a threshold occupancy of the packet buffer.

At optional block904, the processor may end the simulation of the degradation of the different second wireless communication link based on detecting that the set of one or more packets, which were received via the different second wireless communication link with the network and were added to the packet buffer, fail to satisfy the threshold occupancy of the packet buffer.

In further detail, as discussed above with respect toFIG. 5, the processor may detect at block510that the second set of one or more packets, which were received via the different second wireless communication link with the network and were added to the packet buffer, satisfy a threshold occupancy of the packet buffer and, based on that detection, may simulate a degradation of the different second wireless communication link at block512. In some embodiments, at block optional902, the processor may detect that one or more packets no longer satisfy the threshold occupancy of the packet buffer and, based on that detection, advantageously end the simulation of the degradation of the different second wireless communication link at optional block904. In particular, by advantageously ending the simulation of the degradation of the different second wireless communication link, the network may transmit packets faster, which may provide an improved performance and improved user experience for the user equipment102.

As shown inFIG. 10, optional block802(FIG. 8) may include one or more blocks, such as, optional block1002and optional block1004, which may be performed by one or more processors of a user equipment—such as one or more processors112(FIG. 1) that may be configured with packet communication logic116which performs one or more of these blocks, performs other functionality (including other functionality described herein), or performs any combination thereof.

At optional block1002, the processor may detect that a set of one or more packets, which were received via the different second wireless communication link with the network and were added to the packet buffer, fail to satisfy a threshold occupancy of a packet sub-buffer allocated to the different second radio access technology.

At optional block1004, the processor may end the simulation of the degradation of the different second wireless communication link based on detecting that the set of one or more packets, which were received via the different second wireless communication link with the network and were added to the packet buffer, fail to satisfy the threshold occupancy of the packet sub-buffer allocated to the different second radio access technology.

In further detail, as discussed above with respect toFIG. 6, the processor may detect at optional block606that the second set of one or more packets, which were received via the different second wireless communication link with the network and were added to the second packet sub-buffer allocated to the different second radio access technology, satisfy a threshold occupancy of the second packet sub-buffer allocated to the different second radio access technology and, based on that detection, may simulate a degradation of the different second wireless communication link at optional block608. In some embodiments, at block optional1002, the processor may detect that one or more packets no longer satisfy the threshold occupancy of the second packet sub-buffer and, based on that detection, advantageously end the simulation of the degradation of the different second wireless communication link at optional block1004. In particular, by advantageously ending the simulation of the degradation of the different second wireless communication link, the network may transmit packets faster, which may provide an improved performance and improved user experience for the user equipment102.

As shown inFIG. 11, optional block802(FIG. 8) may include one or more blocks, such as, optional block1102and optional block1104, which may be performed by one or more processors of a user equipment—such as one or more processors112(FIG. 1) that may be configured with packet communication logic116which performs one or more of these blocks, performs other functionality (including other functionality described herein), or performs any combination thereof.

At optional block1102, the processor may detect that an amount of time has elapsed.

At optional block1104, the processor may end the simulation of the degradation of the different second wireless communication link based on detecting that the amount of time has elapsed.

In further detail, as discussed above with respect toFIG. 5, the processor may detect at block510that the second set of one or more packets, which were received via the different second wireless communication link with the network and were added to the packet buffer, satisfy a threshold occupancy of the packet buffer and, based on that detection, may simulate a degradation of the different second wireless communication link at block512. In some embodiments, at block optional1102, the processor may detect that an amount of time has elapsed since the processor commenced the simulation of the degradation of the different second wireless communication link and, based on that detection, advantageously end the simulation of the degradation of the different second wireless communication link at optional block1104. In particular, by advantageously ending the simulation of the degradation of the different second wireless communication link, the network may transmit packets faster, which may provide an improved performance and improved user experience for the user equipment102.

In some embodiments, at optional block1102, the processor may detect that a defined amount of time has elapsed, and at optional block1104, the processor may end the simulation based on detecting that the defined amount of time has elapsed.

The defined amount of time, which may be detected at optional block1102, may be based on an estimated total size of the packets missing from the packet buffer. For example, to estimate the total size of the packets missing from the packet buffer, the processor may calculate an average size of packets in the packet buffer and multiply that average size by the number of packets missing from the packet buffer. In this example, the processor may define the amount of time based on the estimated total size of the packets missing from the packet buffer, a throughput of the first wireless communication link (e.g., the “behind” link), a throughput of the different second wireless communication link (e.g., the “ahead” link subjected to the simulation), a protocol to which the packets will be sent (e.g., whether the protocol is UDP, which may create a preference to define the amount of time to prioritize total throughput, or whether the protocol is TCP, which may create a preference to define the amount of time to prioritize receiving the missing packet) or a combination thereof.

As shown inFIG. 12A, optional block802(FIG. 8) may include one or more blocks, such as, optional block1202, optional block1204, optional block1206, and optional block1208, which may be performed by one or more processors of a user equipment—such as one or more processors112(FIG. 1) that may be configured with packet communication logic116which performs one or more of these blocks, performs other functionality (including other functionality described herein), or performs any combination thereof.

At optional block1202, the processor may identify a first sequence number of a first packet of the first set of one or more packets, which were received via the first wireless communication link with the network and were added to the packet buffer. For example, the processor may identify a first packet having a lowest sequence number of any packet that was received via the first wireless communication link with the network and was in the packet buffer when, at block512inFIG. 5, the processor commenced the processor commenced the simulation of the degradation of the different second wireless communication link.

At optional block1204, the processor may identify a second sequence number of a second packet of the second set of one or more packets, which were received via the different second wireless communication link with the network and were added to the packet buffer. For example, the processor may identify a second packet having a lowest sequence number of any packet that was received via the different second wireless communication link with the network and was in the packet buffer when, at block512inFIG. 5, the processor commenced the processor commenced the simulation of the degradation of the different second wireless communication link.

At optional block1206, the processor may detect that the identified second sequence number of the second packet is greater than the identified first sequence number of the first packet and that the second packet was removed from the packet buffer.

At optional block1208, the processor may end the simulation of the degradation of the different second wireless communication link based on detecting that the identified second sequence number of the second packet is greater than the identified first sequence number of the first packet and that the second packet was removed from the packet buffer.

In further detail, when the identified second sequence number of the second packet is greater than the identified first sequence number of the first packet and that the second packet is removed from the packet buffer, one or more missing packets may have been received via the wireless communication link, allowing the first wireless communication link to catch up with the different second wireless communication link. When the first wireless communication link catches up with the different wireless communication link, the simulation of the degradation of the different second wireless communication link may not be needed. Accordingly, the processor may advantageously end the simulation of the degradation of the different second wireless communication link at optional block1208. In particular, by advantageously ending the simulation of the degradation of the different second wireless communication link, the network may transmit packets faster, which may provide an improved performance and improved user experience for the user equipment102.

As shown inFIG. 12B, optional block802(FIG. 8) may include one or more blocks, such as, optional block1210, optional block1212, and optional block1214, which may be performed by one or more processors of a user equipment—such as one or more processors112(FIG. 1) that may be configured with packet communication logic116which performs one or more of these blocks, performs other functionality (including other functionality described herein), or performs any combination thereof.

At optional block1210, the processor may calculate a first throughput during the simulation.

At optional block1212, the processor may calculate a second throughput in the absence of the simulation.

At optional block1214, the processor may end the simulation of the degradation of the different second wireless communication link based on the first throughput during the simulation and the second throughput in the absence of the simulation. For example, based on the first throughput during the simulation and the second throughput in the absence of the simulation, the processor may determine that using the simulation results in a lower overall throughput than the overall throughput that would occur in the absence of the simulation and, based on that determination, the processor may end the simulation. As one example, the first wireless communication link and the second wireless communication link could collectively average a total 1.5 gigabits per second (Gbps) when the simulation occurs fifty percent of the time, but the second wireless communication link could average 2.0 gigabits per second (Gbps) by itself with no communication via the first wireless communication link. Accordingly, in this example, the processor may end the simulation at optional block1214and may disable communication over the first wireless communication link for a defined period of time.

In some embodiments, at optional block1214, the processor may, based on the first throughput during the simulation and the second throughput in the absence of the simulation, end the simulation of the degradation of the different second wireless communication link, disable the simulation functionality for a defined period time, disable communication over the first wireless communication link for a defined period of time, or any combination thereof.

As shown inFIG. 13, block512(FIG. 5) may include one or more blocks, such as, optional block1302, optional block1304, optional block1306, or optional block1308, which may be performed by one or more processors of a user equipment—such as one or more processors112(FIG. 1) that may be configured with packet communication logic116which performs one or more of these blocks, performs other functionality (including other functionality described herein), or performs any combination thereof.

At optional block1302, the processor may send one or more negative acknowledgements (NACKs), e.g., one or more physical layer NACKs, for one or more packets received via the different second wireless communication link with the network. Sending the one or more NACKs may trigger the network to retransmit one or more packets via the different second wireless communication link. When the network retransmits one or more packets via the different second wireless communication link, it may take more time for the packet buffer to be filled to a buffer-flush-triggering threshold occupancy. This additional time may advantageously provide additional time to postpone and possibly avoid flushing the packet buffer when there are missing packets, as discussed above with respect toFIG. 5. In some embodiments, the processor may be configured to limit the number of NACKs the processor sends for a packet (at block1302) based on a defined threshold number of NACKs. For example, the processor may be configured to send up to the defined threshold number of NACKs for the particular packet, but not more NACKs, to avoid an eventual HARQ failure.

At optional block1304, the processor may send a modified (e.g., degraded from an actual channel quality) channel quality indicator (CQI) or a degraded rank reporting for the different second wireless communication link with the network. Sending the modified CQI may trigger the network to slow the network's transmission of packets via the different second wireless communication link. When the network slows the network's transmission of packets via the different second wireless communication link, it may take more time for the packet buffer to be filled to a buffer-flush-triggering threshold occupancy. This additional time may advantageously provide additional time to postpone and possibly avoid flushing the packet buffer when there are missing packets, as discussed above with respect toFIG. 5. In some embodiments, sending the modified CQI may be particularly advantageous when the user equipment is configured to perform periodic CQI reporting according to a period that is sufficiently short. Accordingly, if desired, when the configured period is less than a defined threshold, sending the modified CQI may be enabled as an option for simulating degradation, and when the configured period is greater than or equal to the defined threshold, sending the modified CQI may be disabled as an option for simulating degradation.

At optional block1306, the processor may send a modified rank indicator (RI) for the different second wireless communication link with the network. Sending the modified RI may trigger the network to slow the network's transmission of packets via the different second wireless communication link. When the network slows the network's transmission of packets via the different second wireless communication link, it may take more time for the packet buffer to be filled to a buffer-flush-triggering threshold occupancy. This additional time may advantageously provide additional time to postpone and possibly avoid flushing the packet buffer when there are missing packets, as discussed above with respect toFIG. 5.

At optional block1308, the processor may send a status report that omits a reception of one or more packets received via the different second wireless communication link with the network. Sending the status report that omits a reception of one or more packets received via the different second wireless communication link with the network may trigger the network to retransmit one or more packets via the different second wireless communication link or may stall the network as its transmit window is full and no status is available for the transmitted packets. When the network retransmits one or more packets via the different second wireless communication link or the network is stalled with its transmit window is full and no status is available for the transmitted packets, it may take more time for the packet buffer to be filled to a buffer-flush-triggering threshold occupancy. This additional time may advantageously provide additional time to postpone and possibly avoid flushing the packet buffer when there are missing packets, as discussed above with respect toFIG. 5.

FIG. 14is a flowchart illustrating a method1400for receiving a plurality of packets having a defined order via wireless communication according to some embodiments, which may be performed by one or more processors of a user equipment—such as one or more processors112(FIG. 1) that may be configured with packet communication logic116which performs the method1400, performs other functionality (including other functionality described herein), or performs any combination thereof. As shown inFIG. 15, the method1400may include one or more blocks, such as block502(FIG. 5), block504(FIG. 5), block506(FIG. 5), block508(FIG. 5), block1402, block1404, block514(FIG. 5) or any combination thereof.

At block1402, the processor may detect that the first set of one or more packets, which were received via the first wireless communication link with the network and were added to the packet buffer, and the second set of one or more packets, which were received via the different second wireless communication link with the network and were added to the packet buffer, satisfy a threshold occupancy of the packet buffer.

At block1404, the processor may simulate a degradation of at least one of the first wireless communication link or the different second wireless communication link based on detecting that the first set of one or more packets, which were received via the first wireless communication link with the network and were added to the packet buffer, and the second set of one or more packets, which were received via the different second wireless communication link with the network and were added to the packet buffer, satisfy a threshold occupancy of the packet buffer. In some embodiments, the simulation of the degradation of at least one of the first wireless communication link or the different second wireless communication link may comprise (1) sending one or more negative acknowledgements (NACKs) for one or more packets received via the at least one of the first wireless communication link or the different second wireless communication link, such as discussed above with respect to block1302; (2) sending a modified channel quality indicator (CQI) for the at least one of the first wireless communication link or the different second wireless communication link, such as discussed above with respect to block1304; (3) sending a modified rank indicator (RI) for the at least one of the first wireless communication link or the different second wireless communication link, such as discussed above with respect to block1306; (4) sending a status report that omits a reception of one or more packets received via the at least one of the first wireless communication link or the different second wireless communication link, such as discussed above with respect to block1308; or any combination thereof.

In some embodiments, at block1404, the processor may simulate a degradation of the first wireless communication link based on detecting that the first set of one or more packets and the second set of one or more packets collectively satisfy a threshold occupancy of the packet buffer at block1402and further based on the first set of one or more packets occupying more of the packet buffer than the second set of one or more packets.

In some embodiments, at block1404, the processor may simulate a degradation of the first wireless communication link based on detecting that the first set of one or more packets and the second set of one or more packets collectively satisfy a first threshold occupancy of the packet buffer at block1402and further based on the first set of one or more packets satisfying a second threshold occupancy of the packet buffer.

In some embodiments, at block1404, the processor may simulate both a degradation of the first wireless communication link and a degradation of the first wireless communication link based on detecting that the first set of one or more packets and the second set of one or more packets collectively satisfy a first threshold occupancy of the packet buffer at block1402and further based on the first set of one or more packets satisfying a second threshold occupancy of the packet buffer and further based on the second set of one or more packets satisfying a third threshold occupancy of the packet buffer.

Various embodiments (including, but not limited to, embodiments discussed above with reference toFIGS. 1-14) may be implemented in any user equipment, one example of which is illustrated inFIG. 15. For example, the user equipment1500may include one or more processors1502coupled to a touch screen controller and one or more internal memory1504. The processor1502may be one or more multicore integrated circuits designated for general or specific processing tasks. The internal memory1504may be volatile or non-volatile memory, and may also be secure and/or encrypted memory, or unsecure and/or unencrypted memory, or any combination thereof. The touch screen controller and the processor1502may also be coupled to a touch screen panel, such as a resistive-sensing touch screen, capacitive-sensing touch screen, infrared sensing touch screen, etc. The user equipment1500may have one or more radio signal transceivers1506(e.g., Peanut®, Bluetooth®, Zigbee®, Wi-Fi, RF, cellular, etc.) and antennae, for sending and receiving, coupled to each other and/or to the processor1502. The transceiver1506and antennae may be used with the above-mentioned circuitry to implement the various wireless transmission protocol stacks and interfaces. The user equipment1500may include one or more cellular network wireless modem processors1508that enable communication via one or more cellular networks and that are coupled to the processor.

The user equipment1500may include a peripheral device connection interface coupled to the processor1502. The peripheral device connection interface may be singularly configured to accept one type of connection, or multiply configured to accept various types of physical and communication connections, common or proprietary, such as USB, FireWire, Thunderbolt, Ethernet, or PCIe. The peripheral device connection interface may also be coupled to a similarly configured peripheral device connection port. The user equipment1500may also include speakers for providing audio outputs.

The user equipment1500may also include a housing—which may be constructed of plastic, metal, one or more other materials, or a combination of thereof—for containing all or some of the components discussed herein. The user equipment1500may include a power source coupled to the processor1502, such as a disposable or rechargeable battery. The rechargeable battery may also be coupled to the peripheral device connection port to receive a charging current from a source external to the user equipment1500.

The processor1502may be any programmable microprocessor, microcomputer or multiple processor chip or chips that can be configured by software instructions (applications) to perform a variety of functions, including the functions of the various embodiments described above. In some devices, multiple processors may be provided, such as one processor dedicated to wireless communication functions and one processor dedicated to running other applications. Typically, software applications may be stored in the internal memory before they are accessed and loaded into the processor1502. The processor1502and may include internal memory sufficient to store the application software instructions. In many devices, the internal memory may be a volatile or nonvolatile memory, such as flash memory, or a mixture of both. For the purposes of this description, a general reference to memory refers to memory accessible by the processor1502including internal memory or removable memory plugged into the device and memory within the processor1502itself.

The methods and systems described above require no particular component or function. Thus, any described component or function—despite its advantages—is optional. Also, some or all of the described components and functions described above may be used in connection with any number of other suitable components and functions.

Moreover, although this invention has been described in terms of certain preferred embodiments, other embodiments apparent to those of ordinary skill in the art are also within the scope of this invention. Accordingly, the scope of the invention is intended to be defined only by the claims which follow.