WO2017193533A1 - Handling packet acknowledgements during tune-aways on mobile devices - Google Patents

Handling packet acknowledgements during tune-aways on mobile devices Download PDF

Info

Publication number
WO2017193533A1
WO2017193533A1 PCT/CN2016/101804 CN2016101804W WO2017193533A1 WO 2017193533 A1 WO2017193533 A1 WO 2017193533A1 CN 2016101804 W CN2016101804 W CN 2016101804W WO 2017193533 A1 WO2017193533 A1 WO 2017193533A1
Authority
WO
WIPO (PCT)
Prior art keywords
tcp
rat
ack
communication device
mobile communication
Prior art date
Application number
PCT/CN2016/101804
Other languages
French (fr)
Inventor
Ruiming Zheng
Jiming Guo
Rulin XING
Xipeng Zhu
Lizhong Jin
Huichun LIU
Original Assignee
Qualcomm Incorporated
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of WO2017193533A1 publication Critical patent/WO2017193533A1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/1607Details of the supervisory signal
    • H04L1/1671Details of the supervisory signal the supervisory signal being transmitted together with control information
    • H04L1/1678Details of the supervisory signal the supervisory signal being transmitted together with control information where the control information is for timing, e.g. time stamps
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W36/00Hand-off or reselection arrangements
    • H04W36/0005Control or signalling for completing the hand-off
    • H04W36/0055Transmission or use of information for re-establishing the radio link
    • H04W36/0069Transmission or use of information for re-establishing the radio link in case of dual connectivity, e.g. decoupled uplink/downlink
    • H04W36/00698Transmission or use of information for re-establishing the radio link in case of dual connectivity, e.g. decoupled uplink/downlink using different RATs

Definitions

  • Radio access technologies can include Third Generation (3G) , Fourth Generation (4G) , Long Term Evolution (LTE) , Time Division Multiple Access (TDMA) , Frequency Division Multiple Access (FDMA) , Code Division Multiple Access (CDMA) , Wideband CDMA (WCDMA) , Time Division Synchronous CDMA (TD-SCDMA) , Global System for Mobile Communications (GSM) , Universal Mobile Telecommunications Systems (UMTS) , evolved High Speed Packet Access (HSPA+) , Dual-Cell High Speed Packet Access (DC-HSPA) , Evolution Data-Optimized (EV-DO) , Enhanced Data rates for GSM Evolution (EDGE) , and single carrier Radio Transmission Technologies (1xRTT)
  • 3G Third Generation
  • 4G Long Term Evolution
  • TDMA Time Division Multiple Access
  • FDMA Frequency Division Multiple Access
  • CDMA Code Division Multiple Access
  • WCDMA Wideband CDMA
  • TD-SCDMA Time Division Synchronous CDMA
  • GSM Global System for
  • a mobile communication device that includes one or more SIMs and connects to two or more separate mobile telephony networks using a shared radio frequency (RF) resource/radio may be termed a multi-SIM multi-standby (MSMS) communication device.
  • MSMS communication device may share the RF resource by concurrent radio access technologies (CRATs) , which may result in hardware cost savings.
  • CRATs radio access technologies
  • an MSMS communication device is a dual-SIM dual-standby (DSDS) communication device, which includes two SIM cards supporting two subscriptions associated with different RATs sharing one RF resource.
  • DSDS communication devices the separate subscriptions share the one RF resource to communicate with two separate mobile telephony networks on behalf of their respective subscriptions.
  • the other RAT is in stand-by mode and is not able to communicate using the RF resource.
  • Various examples of methods for managing transmission control protocol (TCP) communications in a mobile communication device may include determining whether there is an upcoming tune-away from a first radio access technology (RAT) on the mobile communication device to a second RAT on the mobile communication device, adding a first timestamp to a TCP packet for transmission before the tune-away begins in response to determining that there is an upcoming tune-away from the first RAT to the second RAT, transmitting the TCP packet to a first network, performing the tune-away from the first RAT to the second RAT, triggering a retransmission time out on the first RAT, receiving a TCP acknowledgement (ACK) from the first network, in which the TCP ACK includes a second timestamp, determining whether the TCP ACK corresponds to the TCP packet, and restoring a prior congestion window value of the first RAT in response to determining that the TCP ACK corresponds to the TCP packet.
  • RAT radio access technology
  • ACK TCP acknowledgement
  • determining whether the TCP ACK corresponds to the TCP packet may include comparing the first timestamp to the second timestamp. Some examples may further include adding an offset to the first timestamp, in which the offset is based on an estimated duration of the tune-away. In some examples, a modem of the mobile communication device may add the first timestamp to the TCP packet. In some examples, a high level operating system of the mobile communication device may add the first timestamp to the TCP packet. Some examples may further include keeping a current congestion window value in response to determining that the TCP ACK does not correspond to the TCP packet. In some examples, a congestion value window of the first RAT may be set to one when the retransmission time out is triggered.
  • Other example methods for managing TCP communications in a network base station may include receiving a tune-away schedule from a mobile communication device, determining whether there is an upcoming tune-away on the mobile communication device from the tune-away schedule, adding a first timestamp to a TCP packet for transmission before the tune-away begins in response to determining that there is an upcoming tune-away on the mobile communication device, transmitting the TCP packet to the mobile communication device, triggering a retransmission time out on TCP communications between the network base station and the mobile communication device, receiving a TCP acknowledgement (ACK) from the mobile communication device, in which the TCP ACK includes a second timestamp, determining whether the TCP ACK corresponds to the TCP packet, and restoring a prior congestion window value on the network base station in response to determining that the TCP ACK corresponds to the TCP packet.
  • ACK TCP acknowledgement
  • determining whether the TCP ACK corresponds to the TCP packet may include comparing the first timestamp to the second timestamp. Some examples may further include adding an offset to the first timestamp, in which the offset is based on an estimated duration of the tune-away. Some examples may further include keeping a current congestion window value in response to determining that the TCP ACK does not correspond to the TCP packet. In some examples, a congestion value window of the network base station may be set to one when the retransmission time out is triggered.
  • Other example methods for managing TCP communications in a mobile communication device may include transmitting a TCP packet from a first radio access technology (RAT) on the mobile communication device to a first network, receiving a hybrid automatic repeat request (HARQ) acknowledgement (ACK) or a radio link control (RLC) ACK from the first network, generating a local TCP ACK from the HARQ ACK or the RLC ACK, and delivering the local TCP ACK to a high level operating system (HLOS) or an application on the mobile communication device.
  • RAT radio access technology
  • HARQ hybrid automatic repeat request
  • RLC radio link control
  • the methods may also include determining whether the first RAT has received a remote TCP ACK from the first network, and ignoring the remote TCP ACK in response to determining that the first RAT has received a remote TCP ACK from the first network.
  • a TCP adaption sub-layer in a packet data convergence protocol layer of a modem in the mobile communication device may generate the local TCP ACK.
  • the TCP adaption sub-layer receives the HARQ ACK or the RLC ACK from a medium access control (MAC) layer of the modem.
  • the TCP adaption sub-layer may store a copy of the TCP packet.
  • Some examples may further include determining that a loss of the TCP packet has occurred in response to determining that the first RAT has not received a remote TCP ACK from the first network, and retransmitting the TCP packet. Some examples may further include determining whether there is an upcoming tune-away from the first RAT to a second RAT on the mobile communication device, setting a receive window value of the local TCP ACK to zero in response to determining that there is an upcoming tune-away from the first RAT to the second RAT, and performing the tune-away from the first RAT to the second RAT.
  • Some examples may further include setting the receive window value of the local TCP ACK to a prior receive window value of a prior received TCP ACK in response to determining that there is no upcoming tune-away from the first RAT to the second RAT. Some examples may further include generating one or more local TCP ACKs for each of a plurality of buffered TCP packets during the tune-away, in which each of the one or more local TCP ACKs has a receive window value of zero. Some examples may further include determining whether the remote TCP ACK contains additional information not contained in the local TCP ACK, and delivering the additional information to the HLOS or the application in response to determining that the remote TCP ACK contains additional information not contained in the local TCP ACK.
  • Other example methods for managing TCP communications in a network base station may include transmitting a TCP packet to a mobile communication device, receiving a hybrid automatic repeat request (HARQ) acknowledgement (ACK) from the mobile communication device, generating a local TCP ACK from the HARQ ACK, delivering the local TCP ACK to a high level operating system (HLOS) or application on the network base station, determining whether the network base station has received a subsequent remote ACK from the mobile communication device, and ignoring the subsequent remote ACK in response to determining that the network base station has received a subsequent remote ACK from the mobile communication device.
  • HARQ hybrid automatic repeat request
  • ACK hybrid automatic repeat request acknowledgement
  • HLOS high level operating system
  • a TCP adaption sub-layer in the network base station may generate the local TCP ACK. Some examples may further include determining that a loss of the TCP packet has occurred in response to determining that the network base station has not received a subsequent remote ACK from the mobile communication device, and retransmitting the TCP packet.
  • the local TCP ACK may include a receive window value set to equal a prior receive window value of a prior received TCP ACK. Some examples may further include determining whether the subsequent remote ACK contains additional information not contained in the local TCP ACK, and delivering the additional information to the HLOS or the application in response to determining that the subsequent remote ACK contains additional information not contained in the local TCP ACK. Some examples may further include instructing the mobile communication device to not transmit a TCP ACK corresponding to the TCP packet.
  • TCP transmission control protocol
  • Other example methods for managing transmission control protocol (TCP) communications in a mobile communication device may include transmitting a TCP packet from a first radio access technology (RAT) of the mobile communication device to a first network, determining whether there is an upcoming tune-away from the first RAT to a second RAT on the mobile communication device before receiving a TCP response from the first network, buffering a previously received TCP acknowledgment (ACK) in response to determining that there is a tune-away from the first RAT to the second RAT scheduled before receiving a TCP response from the first network, initiating the tune-away, initiating a timer, determining whether the timer has expired, and delivering the buffered TCP ACK to a high level operating system (HLOS) or application on the mobile communication device in response to determining that the timer has not expired.
  • RAT radio access technology
  • HLOS high level operating system
  • Some examples may further include reinitiating the timer after delivering the buffered TCP ACK. Some examples may further include determining whether the tune-away has ended, and receiving a TCP response from the first network in response to determining that the tune-away has ended. In some examples, a duration of the timer may be shorter than a retransmission time out threshold time.
  • a mobile communication device including a memory, a subscriber identity module (SIM) , an RF resource configured to support a first RAT and a second RAT, and a processor configured to perform operations of the methods summarized above.
  • SIM subscriber identity module
  • RF resource configured to support a first RAT and a second RAT
  • processor configured to perform operations of the methods summarized above.
  • Further examples include a non-transitory processor-readable storage medium having stored thereon processor-executable software instructions configured to cause a processor of a mobile communication device to perform operations of the methods summarized above.
  • a mobile communication device that includes means for performing functions of the methods summarized above.
  • Further examples include a network base station including a memory, a network interface, and a processor configured to perform operations of the methods summarized above. Further examples include a non-transitory processor-readable storage medium having stored thereon processor-executable software instructions configured to cause a processor of a network base station to perform operations of the methods summarized above. Further examples include a network base station that includes means for performing functions of the methods summarized above.
  • the one or more aspects comprise the features hereinafter fully described and particularly pointed out in the claims.
  • the following description and the annexed drawings set forth in detail certain illustrative features of the one or more aspects. These features are indicative, however, of but a few of the various ways in which the principles of various aspects may be employed, and this description is intended to include all such aspects and their equivalents.
  • FIG. 1 is a communication system block diagram of mobile telephony networks suitable for use with various examples.
  • FIG. 2 is a component block diagram of a multi-SIM mobile communication device according to various examples.
  • FIG. 3 is a call flow diagram illustrating transmission control protocol (TCP) communications between a mobile communication device and a network according to conventional methods.
  • TCP transmission control protocol
  • FIGS. 4A-4B are call flow diagrams illustrating the utilization of timestamps in TCP communications between a mobile communication device and a network in the presence of a tune-away according to various examples.
  • FIG. 5 is a block diagram of the communication layers in a mobile communication device according to various examples.
  • FIG. 6 is a call flow diagram illustrating the utilization of acknowledgement buffers in TCP communications between a mobile communication device and a network in the presence of a tune-away according to various examples.
  • FIG. 7 is a process flow diagram illustrating a method for utilizing timestamps in TCP communications in a mobile communication device according to various examples.
  • FIG. 8 is a process flow diagram illustrating a method for utilizing timestamps in TCP communications in a network base station according to various examples.
  • FIG. 9 is a process flow diagram illustrating a method for generating local acknowledgements for TCP communications in a mobile communication device according to various examples.
  • FIG. 10 is a process flow diagram illustrating a method for generating local acknowledgements for TCP communications in a network base station according to various examples.
  • FIG. 11 is a process flow diagram illustrating a method for utilizing acknowledgement buffers for TCP communications in a mobile communication device according to various examples.
  • FIG. 12 is a component block diagram of a mobile communication device suitable for implementing some example methods.
  • FIG. 13 is a component block diagram of a network base station suitable for implementing some example methods.
  • the term “mobile communication device, ” “multi-SIM mobile communication device, ” or “multi-SIM device” refers to any one or all of cellular telephones, smart phones, personal or mobile multi-media players, personal data assistants, laptop computers, tablet computers, smart books, smart watches, palm-top computers, wireless electronic mail receivers, multimedia Internet-enabled cellular telephones, wireless gaming controllers, and similar personal electronic devices that includes one or more SIM cards, a programmable processor, memory, and circuitry for connecting to at least two mobile communication network with one or more shared RF resources.
  • Various examples may be useful in mobile communication devices, such as smart phones, and so such devices are referred to in the descriptions of various examples. However, the examples may be useful in any electronic devices that may individually maintain a plurality of RATs supporting one or more subscriptions that utilize at least one shared RF chain, which may include one or more of antennae, radios, transceivers, etc.
  • SIM Subscriber identification module
  • SIM card Subscriber identification module
  • subscriber identification module refers to a memory that may be an integrated circuit or embedded into a removable card, and that stores an International Mobile Subscriber Identity (IMSI) , related key, and/or other information used to identify and/or authenticate a mobile communication device on a network and enable a communication service with the network.
  • IMSI International Mobile Subscriber Identity
  • the term “subscription” is used herein as a shorthand reference to refer to the communication service associated with and enabled by the information stored in a particular SIM as the SIM and the communication network, as well as the services and subscriptions supported by that network, may correlate to one another.
  • references are made to a first subscription and a second subscription, and to a first RAT and a second RAT.
  • the references to the first and second subscriptions and RATs are arbitrary and are used merely for the purposes of describing the examples.
  • the device processor may assign any indicator, name or other designation to differentiate the subscriptions and RATs on the mobile communication device.
  • One consequence of having a plurality of RATs that maintain network connections simultaneously using a shared RF resource of a mobile communication device is that one RAT sometimes interrupts communications of the other RAT as one RAT can use the shared RF resource to communicate with its mobile network at a time. Even when a RAT is in an “idle-standby” mode, meaning that the RAT is not actively communicating with the network, the RAT can still periodically receive access to the shared RF resource in order to perform various network operations. For example, an idle RAT may use the shared RF resource at regular intervals to perform idle-mode operations or to receive paging messages.
  • an idle RAT may occasionally interrupt the active RAT’s RF operations so that the idle RAT can use the shared RF resource to perform the idle RAT’s idle mode operations (e.g., paging monitoring and decoding, cell reselection, system information monitoring, etc. ) .
  • This process of switching access of the shared RF resource from the active RAT to other RF resources, such as RF resources of the idle RAT, is referred to herein as a “tune-away, ” as the RF resource tunes away from the active RAT’s frequency band or channel and tunes to another frequency band or channel, such as the idle RAT’s frequency bands or channels.
  • a LTE+GSM DSDS (dual-SIM dual-standby) mobile communication device may have a first subscription utilizing a LTE RAT and a second subscription utilizing a GSM RAT.
  • the mobile communication device may periodically tune-away to tune the RF resource from the first subscription (e.g., LTE) to the second subscription (e.g., GSM) for page monitoring, voice or short message service (SMS) service, and GSM camping operations (e.g., measuring and making cell reselections if needed, reading system information, location registering, etc. ) .
  • the mobile communication device may tune-back to tune the RF resource from the second subscription back to the first subscription after a period of time (e.g., or based on receiving one or more second subscription signals) .
  • tune-aways may also occur between two different RATs utilized by the same subscription.
  • a CRAT device may have one SIM/subscription that utilizes both an LTE RAT and another RAT, such as GSM or CDMA2000.
  • a tune-away and/or an associated tune-back may be performed between the RATs utilized by the same subscription.
  • Tune-aways from an active RAT to an idle RAT may interfere with communication exchanges on the active RAT.
  • an active RAT may be engaging in uplink communications with a network using a transmission control protocol (TCP) .
  • TCP transmission control protocol
  • the active RAT may transmit a TCP packet to a network base station.
  • the network may acknowledge receipt of the TCP packet in a number of different ways.
  • the network may transmit a hybrid automatic repeat request (HARQ) acknowledgement (ACK) , followed by a radio link control (RLC) ACK in response to receiving MAC layer and/or RLC layer segments of the TCP packet.
  • HARQ hybrid automatic repeat request
  • RLC radio link control
  • the HARQ and RLCs ACK may be transmitted a short time after receiving the TCP packet and/or based on receiving the MAC and/or RLC layer segments of the TCP packet. At a later time the network may transmit a TCP ACK, e.g., once the entire TCP packet is received, after transmitting the HARQ and RLC ACKs.
  • the mobile communication device may perform a tune-away to receive and/or transmit signals, which may correspond to another network or RAT (e.g., an idle RAT) .
  • the active RAT may not receive any TCP ACKs from the network. After a period of time, this may lead the network of the active RAT to trigger a retransmission time out (RTO) based on not receiving the TCP ACKs corresponding to one or more previously transmitted TCP packets.
  • RTO retransmission time out
  • One consequence of triggering a RTO is that the congestion window (cwnd) value of the active RAT may be reduced to one.
  • the congestion window value represents the amount of data for transmission that may be outstanding at any given time.
  • the higher the congestion window value the higher the data throughput of the active RAT.
  • the data throughput of the active RAT can be significantly reduced, and can gradually increase according to a slow start procedure.
  • the TCP layer of the mobile communication device may not know the lower layers (i.e., the layers in the modem) are not available due to the tune-away, and may continue to send data to the modem until a transmission window (twnd) of the active RAT is exhausted.
  • tune-aways may impact the throughput performance of TCP communications on the active RAT even after the tune-away is complete.
  • the mobile communication device may not know whether the ACK is acknowledging the original TCP packet or acknowledging a retransmitted TCP packet.
  • an upcoming tune-away may be identified and a timestamp may be dynamically added to a TCP packet that is transmitted by a first RAT on the mobile communication device before the tune-away begins. If there is no tune-away, or following the tune-away by the first RAT, no timestamp is added to a TCP packet to mitigate overhead.
  • an RTO may be triggered.
  • the first RAT may receive a TCP ACK from the network that includes a timestamp. By comparing the timestamp, it may be determined whether the TCP ACK corresponds to the original TCP packet transmission.
  • the TCP ACK can be determined to correspond to the TCP packet.
  • the prior value of the congestion window may then be restored rather than having it remain at one because of the RTO. Retransmission can also be terminated for the packet. This increases the data throughput of the first RAT. If the TCP ACK does not correspond to the TCP packet, the first RAT may retransmit the TCP packet. This process may implemented by a mobile communication device and/or on a network base station for downlink communications.
  • a TCP adaption sub-layer may be added to a packet data convergence protocol (PDCP) layer of the modem.
  • a first RAT may transmit a TCP packet to a network, and receive a HARQ or RLC ACK from the network.
  • the HARQ/RLC ACK may be passed to the TCP adaption sub-layer, which generates a local TCP ACK from the HARQ/RLC ACK.
  • a receive window value of the TCP ACK may be chosen depending on whether there is an upcoming tune-away. If there is a tune-away, the receive window value may be set to zero, whereas if there is no tune-away the prior receive window value may be maintained.
  • the local TCP ACK is passed to the TCP layer (e.g., a high level operating system (HLOS) or application) (e.g., instead of a remote TCP ACK from the network) to indicate to the TCP layer that the TCP packet is successfully received by the network.
  • the first RAT may still receive a remote TCP ACK from the network, and may accordingly ignore the remote TCP ACK as it sent the local TCP ACK. If the first RAT does not receive a remote TCP ACK, a determination can be made that a packet loss has occurred and the TCP packet can be retransmitted. This process may also be implemented by a mobile communication device and/or on a network base station for downlink communications.
  • a previously received TCP ACK on the first RAT may be buffered.
  • the buffered TCP ACK can be delivered to the TCP layer (e.g., the HLOS or application) at an interval that is less than a RTO threshold time. This may result in the HLOS or application reducing the congestion window value (e.g., by half) , but not as much as if a RTO is declared.
  • the first RAT may resume receiving TCP responses from the network.
  • a first mobile network 102 and a second mobile network 104 typically each include a plurality of cellular base stations (e.g., a first base station 130 and a second base station 140) .
  • a first mobile communication device 110 may be in communication with the first mobile network 102 through a cellular connection 132 to the first base station 130.
  • the first mobile communication device 110 may also be in communication with the second mobile network 104 through a cellular connection 142 to the second base station 140.
  • the first base station 130 may be in communication with the first mobile network 102 over a wired connection 134.
  • the second base station 140 may be in communication with the second mobile network 104 over a wired connection 144.
  • a second mobile communication device 120 may similarly communicate with the first mobile network 102 through the cellular connection 132 to the first base station 130.
  • the second mobile communication device 120 may also communicate with the second mobile network 104 through the cellular connection 142 to the second base station 140.
  • the cellular connections 132 and 142 may be made through two-way wireless communication links, such as Third Generation (3G) , Fourth Generation (4G) , Long Term Evolution (LTE) , Time Division Multiple Access (TDMA) , Code Division Multiple Access (CDMA) , Wideband CDMA (WCDMA) , Global System for Mobile Communications (GSM) , Universal Mobile Telecommunications Systems (UMTS) , and other mobile telephony communication technologies.
  • Third Generation (3G) Fourth Generation
  • 4G Long Term Evolution
  • TDMA Time Division Multiple Access
  • CDMA Code Division Multiple Access
  • WCDMA Wideband CDMA
  • GSM Global System for Mobile Communications
  • UMTS Universal Mobile Telecommunications Systems
  • the mobile communication devices 110, 120 are shown connected to the first mobile network 102 and, optionally, to the second mobile network 104, in some examples (not shown) , the mobile communication devices 110, 120 may include two or more RATs to two or more mobile networks and may connect to those RATs in a manner similar to those described herein.
  • the first mobile communication device 110 may optionally establish a wireless connection 152 with a peripheral device 150 used in connection with the first mobile communication device 110.
  • the first mobile communication device 110 may communicate over a link with a Bluetooth-enabled personal computing device (e.g., a “smart watch” ) .
  • the first mobile communication device 110 may optionally establish a wireless connection 162 with a wireless access point 160, such as over a Wi-Fi connection.
  • the wireless access point 160 may be configured to connect to the Internet 164 or another network over a wired connection 166.
  • the second mobile communication device 120 may similarly be configured to connect with the peripheral device 150 and/or the wireless access point 160 over wireless links.
  • FIG. 2 is a functional block diagram of a communication device 200 for communicating in a wireless network.
  • Communication device 200 may include a multi-SIM mobile communication device and/or an access point suitable for implementing various examples. With reference to FIGS. 1–2, the communication device 200 may be similar to one or more of the mobile communication devices 110, 120, base station 130, 140, access point 160, etc., as described.
  • the communication device 200 as a multi-SIM mobile communication device may optionally include a first SIM interface 202a, which may receive a first identity module SIM-1 204a that is associated with a first subscription.
  • the communication device 200 may also optionally include a second SIM interface 202b, which may receive an optional second identity module SIM-2 204b that is associated with a second subscription.
  • a SIM in various examples may be a Universal Integrated Circuit Card (UICC) that is configured with SIM and/or Universal SIM applications, enabling access to, for example, GSM and/or UMTS networks.
  • the UICC may also provide storage for a phone book and other applications.
  • a SIM may be a UICC removable user identity module (R-UIM) or a CDMA subscriber identity module (CSIM) on a card.
  • R-UIM UICC removable user identity module
  • CCM CDMA subscriber identity module
  • a SIM card may have a central processing unit (CPU) , read only memory (ROM) , random access memory (RAM) , electrically erasable programmable read only memory (EEPROM) and input/out (I/O) circuits.
  • CPU central processing unit
  • ROM read only memory
  • RAM random access memory
  • EEPROM electrically erasable programmable read only memory
  • I/O input/out
  • a SIM used in various examples may contain user account information, an international mobile subscriber identity (IMSI) , a set of SIM application toolkit (SAT) commands, and storage space for phone book contacts.
  • IMSI international mobile subscriber identity
  • SAT SIM application toolkit
  • a SIM card may further store home identifiers (e.g., a System Identification Number (SID) /Network Identification Number (NID) pair, a Home Public Land Mobile Number (HPLMN) code, etc. ) to indicate the SIM card network operator provider.
  • An Integrated Circuit Card Identity (ICCID) SIM serial number may be printed on the SIM card for identification.
  • a SIM may be implemented within a portion of memory of the multi-SIM mobile communication device 200 (e.g., in a memory 214) , and thus need not be a separate or removable circuit, chip or card.
  • the communication device 200 may include at least one controller, such as a general processor 206, which may optionally be coupled with a coder/decoder (CODEC) 208.
  • the CODEC 208 may in turn be optionally coupled with a speaker 210 and a microphone 212.
  • the general processor 206 may also be coupled with the memory 214.
  • the memory 214 may be a non-transitory computer-readable storage medium that stores processor-executable instructions.
  • the instructions may include routing communication data relating to the first or second subscription though a corresponding baseband-RF resource chain.
  • the memory 214 may store a high level operating system, as well as user application software and executable instructions.
  • the general processor 206 and the memory 214 may each be coupled with at least one baseband modem processor 216.
  • Each SIM and/or RAT in the communication device 200 e.g., the SIM-1 204a and/or the SIM-2 204b
  • a baseband-RF resource chain may include the baseband modem processor 216, which may perform baseband/modem functions for communications with/controlling a RAT, and may include one or more amplifiers and radios, referred to generally herein as RF resources (e.g., RF resource 218) .
  • baseband-RF resource chains may share the baseband modem processor 216 (i.e., a single device that performs baseband/modem functions for all RATs on the multi-SIM mobile communication device 200) .
  • each baseband-RF resource chain may include physically or logically separate baseband processors (e.g., BB1, BB2) .
  • the RF resource 218 may be a transceiver that performs transmit/receive functions for each of the SIMs/RATs on the communication device 200 (e.g., a multi-SIM mobile communication device) .
  • the RF resource 218 may include separate transmit and receive circuitry, or may include a transceiver that combines transmitter and receiver functions. In some examples, the RF resource 218 may include multiple receive circuitries.
  • the RF resource 218 may be coupled with a wireless antenna (e.g., a wireless antenna 220) .
  • the RF resource 218 may also be coupled with the baseband modem processor 216.
  • the general processor 206, the memory 214, the baseband processor (s) 216, and the RF resource 218 may be included in the communication device 200 as a system-on-chip 250.
  • the first and second SIMs 204a, 204b and the corresponding interfaces 202a, 202b may be external to the system-on-chip 250.
  • Example user input components suitable for use in the communication device 200 may include, but are not limited to, an optional keypad 224, an optional touchscreen display 226, and the optional microphone 212.
  • the keypad 224, the touchscreen display 226, the microphone 212, or a combination thereof may perform the function of receiving a request to initiate an outgoing call.
  • the touchscreen display 226 may receive a selection of a contact from a contact list or receive a telephone number.
  • either or both of the touchscreen display 226 and the microphone 212 may perform the function of receiving a request to initiate an outgoing call.
  • the touchscreen display 226 may receive selection of a contact from a contact list or receive a telephone number.
  • the request to initiate the outgoing call may be in the form of a voice command received via the microphone 212.
  • Interfaces may be provided between the various software modules and functions in the communication device 200 to enable communication between them, as is known in the art.
  • the two SIMs 204a, 204b, the baseband processor BB1, BB2, the RF resource 218, and the wireless antenna 220 may constitute two or more radio access technologies (RATs) .
  • the communication device 200 may be a LTE communication device that includes a SIM, baseband processor, and/or RF resource configured to support two different RATs, such as LTE, WCDMA, and GSM. More RATs may be supported on the multi-SIM mobile communication device 200 by adding more SIM cards, SIM interfaces, RF resources, and antennae for connecting to additional mobile networks.
  • the communication device 200 may include, among other things, additional SIM cards, SIM interfaces, a plurality of RF resources associated with the additional SIM cards, and additional antennae for supporting subscriptions communications with additional mobile networks.
  • the communication device 200 can be a base station or access point, and may not include the one or more SIMs 204a, 204b or associated interfaces 202a, 202b, etc.
  • the communication device 200 may also include a TCP layer component 260 for managing ACKs or other HARQ related parameters at a TCP layer of the communication device 200 in accordance with aspects described herein.
  • TCP layer component 260 may be coupled with substantially any processor of communication device 200, such as baseband processor 216, one or more modem processors, etc., to provide the functions described herein.
  • baseband processor 216 such as baseband processor 216
  • modem processors such as baseband processor 216
  • at least a portion of TCP layer component 260 may be stored in or otherwise utilize memory 214 to execute one or more associated instructions, store or retrieve one or more associated parameters, etc.
  • processors 206, 216, etc. and/or memory 214 may execute actions or operations defined by TCP layer component 260 or its subcomponents.
  • the one or more of processors 206, 216, etc. and/or memory 214 may execute actions or operations defined by an optional timestamping component 262 for determining whether to include a timestamp on a TCP packet (e.g., a TCP ACK or other TCP packet) .
  • timestamping component 262 may include hardware (e.g., one or more processor modules of the one or more processors 206, 216, etc.
  • ACK generating component 264 may include hardware (e.g., one or more processor modules of the one or more processors 206, 216, etc. ) and/or computer-readable code or instructions stored in memory 214 and executable by at least one of the one or more processors 206, 216, etc. to perform the specially configured timestamping operations described herein.
  • the one or more of processors 206, 216, etc. and/or memory 214 may execute actions or operations defined by an optional ACK generating component 264 for generating a TCP ACK based on a HARQ or RLC ACK, a duplicate ACK, etc.
  • ACK generating component 264 may include hardware (e.g., one or more processor modules of the one or more processors 206, 216, etc. ) and/or computer-readable code or instructions stored in memory 214 and executable by at least one of the one or more processors 206, 216, etc. to perform the specially configured ACK generating operations described herein.
  • FIG. 3 illustrates conventional TCP communications between a multi-SIM multi-standby mobile communication device and a network in the presence of tune-aways.
  • the call flow diagram 300 includes a mobile communication device 302 having a first RAT 304 and a second RAT 306.
  • the first RAT 304 and the second RAT 306 may be associated with the same subscription or different subscriptions on the mobile communication device.
  • the mobile communication device 302 may be a MSMS mobile communication device, such as a DSDS mobile communication device, and the first RAT 304 may be associated with a first subscription and the second RAT 306 may be associated with a second subscription.
  • the first RAT 304 and the second RAT 306 may utilize a shared RF resource on the mobile communication device 302 (e.g., RF resource 218) .
  • the first RAT 304 communicates with a first network 308, while the second RAT 306 communicates with a second network 310. If the first RAT 304 and the second RAT 306 share the same subscription, the first network 308 may be the same as the second network 310 or under the control of the same network operator.
  • the first RAT 304 may be in TCP communication with the first network 308.
  • the first RAT 304 may transmit a TCP packet n 312 to the first network 308 during uplink TCP communications with the first network 308.
  • the first network 308 may transmit a HARQ ACK 314 to the first RAT 304 acknowledging receipt of at least a portion of (e.g., a MAC layer protocol data unit (PDU) or other segment of) the TCP packet n 312 as part of the HARQ transmission process on the medium access control (MAC) layer.
  • PDU MAC layer protocol data unit
  • the HARQ ACK 314 may arrive quickly but may not be reliable (e.g., higher rates of false positives or false negatives) and/or may correspond to a portion of the TCP packet.
  • the first network 308 may also transmit a RLC ACK 316 to the first RAT 304 acknowledging receipt of at least a portion of (e.g., a RLC layer protocol data unit (PDU) or other segment of) the TCP packet n 312 as part of the transmission process on the RLC layer.
  • the RLC ACK 316 may be used to fix the residual errors of the lower layers, such as errors in the HARQ transmission process.
  • the HARQ ACK 314 and the RLC ACK 316 may be transmitted after receiving the TCP packet n 312 (or one or more related segments) but before a tune-away 318.
  • the mobile communication device 302 may perform the tune-away 318 of the shared RF resource to the second RAT 306 so that the second RAT 306 may perform idle mode operations.
  • the first RAT 304 is unable to receive messages from the first network 308, including any TCP ACKs.
  • the TCP layer of the mobile communication device 302 may not be aware of the tune-away 318, and so may continue to keep sending data to the modem layers for transmission until the transmission window (twnd) is exhausted (i.e., equals zero) .
  • the mobile communication device 302 may perform a tune-back 320 to the first RAT 304 when the tune-away 318 is complete.
  • the first RAT 304 may not have received any TCP ACKs during the tune-away 318.
  • the duration of the tune-away 318 may be longer than a RTO threshold time.
  • the modem may trigger a RTO on the first RAT 304 in operation 324. This reduces the size of the congestion window (cwnd) value to one.
  • the first RAT 304 may also have to follow a slow start transmission process in operation 326.
  • the slow start transmission process may gradually increase the congestion window value as TCP ACKs are received again, but during this time the data throughput of the first RAT 304 is reduced.
  • the tune-away 318 may negatively impact the data throughput of TCP communications of the first RAT 304.
  • the first RAT 304 may send a retransmission 328 of the TCP packet n 312 after the tune-away 318 is complete.
  • the first network 308 may transmit a TCP ACK 330 for packet n.
  • the TCP ACK 330 arrives in a longer time frame than the HARQ ACK 314 and the RLC ACK 316.
  • the first RAT 304 may be unable to determine whether the TCP ACK 330 corresponds to the original transmission of the TCP packet n 312 or the retransmission 328.
  • Some solutions resolve this uncertainty by including a timestamp in the TCP header of a transmitted TCP packet.
  • the network may include the same timestamp in the TCP ACK corresponding to the TCP packet.
  • the mobile communication device may determine whether the TCP ACK corresponds to the original transmission or the retransmission of the TCP packet. If the TCP ACK corresponds to the original transmission, the mobile communication device may restore the congestion window value to the value that existed before the RTO was triggered and stop retransmission.
  • adding a timestamp to each TCP packet may increase the data overhead by up to 12 bytes. In order to save or conserve power and data capacity, the HLOS of the mobile communication device may often disable the timestamp feature in TCP communications.
  • FIG. 4A illustrates an example of call flows and message exchanges for dynamically utilizing timestamps in TCP communications on a mobile communication device in the presence of tune-aways according to various examples.
  • the call flow diagram 400a illustrates communications of a mobile communication device 402 having a first RAT 404 and a second RAT 406.
  • the mobile communication device 402 may include a TCP layer component 260 (and/or one or more related subcomponent) , as described with respect to communication device 200 in FIG. 2.
  • the first RAT 404 and the second RAT 406 may be associated with the same subscription or different subscriptions on the mobile communication device 402.
  • the mobile communication device 402 may be a MSMS mobile communication device, such as a DSDS mobile communication device, and the first RAT 404 may be associated with a first subscription and the second RAT 406 may be associated with a second subscription.
  • the first RAT 404 and the second RAT 406 may utilize a shared RF resource (e.g., RF resources 218) on the mobile communication device 402.
  • the first RAT 404 communicates with a first network 408, while the second RAT 406 communicates with a second network 410. If the first RAT 404 and the second RAT 406 share the same subscription, the first network 408 may be the same as the second network 410 or under the control of the same network operator.
  • the first RAT 404 and the first network 408 may be engaged in uplink TCP communications.
  • the mobile communication device 402 e.g., via timestamping component 262 operating in conjunction with one or more processors 206, 216, memory 214, etc.
  • the mobile communication device 402 may identify an upcoming tune-away 420 from the first RAT 404 to the second RAT 406.
  • the mobile communication device 402 e.g., via timestamping component 262 operating in conjunction with one or more processors 206, 216, memory 214, etc.
  • the TCP packet n 414 may be the last packet in queue for transmission before the tune-away 420 begins.
  • Tune-aways may be periodically scheduled, so the modem (e.g., via timestamping component 262 operating in conjunction with one or more processors 206, 216, memory 214, etc. ) may identify if there is an upcoming tune-away during TCP packet transmission.
  • the timestamp added to the TCP packet n 414 may be the current time when the timestamp is added.
  • timestamping component 262 (e.g., operating in conjunction with one or more processors 206, 216, memory 214, etc. ) can add an offset to the timestamp, where the offset is based on the estimated duration of the tune-away 420.
  • the modem of the mobile communication device 402 e.g., via timestamping component 262 operating in conjunction with one or more processors 206, 216, memory 214, etc.
  • the modem (e.g., via timestamping component 262 operating in conjunction with one or more processors 206, 216, memory 214, etc.
  • the modem may also filter the TCP packets to obtain TCP packet n for adding the timestamp, where filtering can be based on a 5-tuple filter to obtain the TCP packets relevant for the communication that is to be timestamped.
  • the header of the TCP packet n 414 may include a timestamp value field that contains a current time and an offset.
  • the modem may identify the upcoming tune-away 420 and the tune-away information is sent to a HLOS executing on the mobile communication device 402 and/or an associated application.
  • the HLOS/application may dynamically enable the addition of the timestamp to the TCP packet n 414 before the tune-away 420 is about to start (e.g., for packets occurring following a time when the tune-away is determined to occur) , and disable the timestamp addition after the tune-away 420 is complete.
  • the HLOS/application can add the timestamp to all TCP packets associated with the HLOS/application without necessarily filtering the TCP packets.
  • the HLOS/application may also add an offset to the timestamp based on the estimated duration of the tune-away 420.
  • the TCP packet n 414 may be transmitted to the first network 408.
  • the first network 408 may transmit a HARQ ACK 416 and/or a RLC ACK 418 before the tune-away 420 begins indicating receipt of the TCP packet n 414 on the lower modem layers.
  • the mobile communication device 402 may then initiate the tune-away 420 and tune the shared RF resource to the second RAT 406 to perform idle mode operations.
  • the first RAT 404 may not be able to receive messages from the first network 408.
  • the mobile communication device 402 may then perform a tune-back 422 to the first RAT 404.
  • the first RAT 404 may trigger a RTO if the duration of the tune-away 420 exceeds a RTO threshold time in operation 424. As part of the RTO, the congestion window value may be set to one. In response to the RTO, the first RAT 404 may retransmit TCP packet n 414 as retransmission 426. The first network 408 may then transmit a TCP ACK 428 that includes a timestamp. The first network 408 may be configured to detect when a timestamp is included in a received TCP packet and include the same timestamp in the corresponding TCP ACK.
  • the modem of the mobile communication device 402 may compare the timestamps of the TCP packet n 414 and the TCP ACK 428 in operation 430. If the timestamps match, then the TCP ACK 428 corresponds to the TCP packet n 414. In this case, the modem may then restore the congestion window value of the first RAT 404 to the value that existed prior to the RTO. For example, if congestion window value was five before the RTO, then the modem may restore the value from one to five. This allows the data throughput of the first RAT 404 to return to the same level as before the tune-away 420.
  • the first RAT 404 may keep the current congestion window value of one and initiate a slow start procedure to gradually increase the congestion window value.
  • the mobile communication device 402 may dynamically enable timestamping of TCP packets that are sent before the tune-aways begin. After the tune-aways end, the TCP packets may be transmitted without timestamps (e.g., timestamping component 262 operating in conjunction with one or more processors 206, 216, memory 214, etc. can cease adding timestamps to the TCP packets) .
  • Dynamic addition of timestamps may also be done by the network base station on downlink TCP communications. An example of this is illustrated in the call flow diagram 400b shown in FIG. 4B.
  • the network base station knows the tune-away cycle and duration (e.g., from mobile communication device signaling)
  • the network can dynamically enable or disable a TCP timestamp.
  • a base station e.g., eNodeB
  • a first network 408 which may be and/or include one or more components of communication device 200, may receive a tune-away schedule of the mobile communication device 402 in operation 432.
  • the mobile communication device 402 may be configured to transmit tune-away scheduling information to the first network 408.
  • the first network 408 may then (e.g., via timestamping component 262 operating in conjunction with one or more processors 206, 216, memory 214, etc. ) dynamically add a timestamp to a TCP packet m 436 that is scheduled to be transmitted just before a tune-away 442 on the mobile communication device 402 begins in operation 436.
  • the timestamp may be the current time when the timestamp is added.
  • the timestamp may also include an offset that is based on the estimated duration of the tune-away 442.
  • the first network 408 may then transmit the TCP packet m 436 to the first RAT 404.
  • the first RAT 404 may respond by transmitting a HARQ ACK 438 and a RLC ACK 440 indicating receipt of the TCP packet m 436 before the tune-away 442 begins.
  • the mobile communication device 402 may then initiate the tune-away 442 and tune the shared RF resource to the second RAT 406 to perform idle mode operations.
  • the first RAT 404 may not be able to receive messages from the first network 408.
  • the mobile communication device 402 may then perform a tune-back 444 to the first RAT 404.
  • the first network 408 may trigger a RTO if the duration of the tune-away 442 exceeds a RTO threshold time in operation 446. As part of the RTO, the congestion window value may be set to one.
  • the first network 408 may retransmit the TCP packet m 436 as retransmission 448 in response to the RTO.
  • the first RAT 404 may then transmit a TCP ACK 450 that includes a timestamp.
  • the mobile communication device 402 may be configured to detect when a timestamp is included in a received TCP packet and include the same timestamp in the corresponding TCP ACK.
  • the first network 408 may compare the timestamps of the TCP packet m 436 and the TCP ACK 450 in operation 452. If the timestamps match, then the TCP ACK 450 corresponds to the TCP packet m 436. In this case, the first network 408 may restore the congestion window value of TCP communications with the first RAT 404 to the value that existed prior to the RTO in operation 452. For example, if the congestion window value was five before the RTO, then the first network 408 may restore the value from one to five.
  • the first network 408 may keep the current congestion window value of one and initiate a slow start procedure to gradually increase the congestion window value.
  • the first network 408 may dynamically enable timestamping of TCP packets (e.g., via timestamping component 262 operating in conjunction with one or more processors 206, 216, memory 214, etc. ) that are sent before the tune-aways begin.
  • timestamping component 262 e.g., operating in conjunction with one or more processors 206, 216, memory 214, etc.
  • a mobile communication device may utilize the HARQ and/or RLC ACKs to locally trigger a TCP ACK in order to avoid data throughput reduction in the presence of tune-aways.
  • FIG. 5 shows a diagram 500 of communication layers in a mobile communication device.
  • the mobile communication device may have a modem that controls a shared RF resource (e.g., RF resource 218) utilized by a plurality of RATs on the mobile communication device.
  • the communication layers in the modem may include a physical layer 502, which includes the network hardware technology of the modem and shared RF resource.
  • the modem may also include a MAC layer 504 that maps logical communication channels to transport communication channels.
  • the modem may also include a RLC layer 506 that is responsible for various functions such as transfer of upper layer protocol data units (PDUs) and error correction.
  • the modem may also include a packet data convergence protocol (PDCP) layer 508 that provides services to upper layers, such as a TCP/IP layer 512 that is part of a HLOS or application executing on the mobile communication device.
  • PDCP packet data convergence protocol
  • the services may include transfer of user plane or control plane data, header compression, ciphering, and integrity protection.
  • the PDCP layer 508 may also include a TCP adaption sub-layer 510.
  • TCP layer component 260 or one or more components thereof such as ACK generating component 264, may be configured to provide or perform one or more of the functions described with respect to the TCP adaptation sub-layer 510 in a mobile communication device, base station, or other network node.
  • the TCP adaption sub-layer 510 may be configured to generate local TCP ACKs from lower level ACKs, such as HARQ ACKs or RLC ACKs.
  • TCP ACKs may be delivered to the TCP/IP layer 512 during a tune-away on the mobile communication device rather than waiting for the receipt of a remote TCP ACK from the network, which arrives after the tune-away. Also, TCP ACKs may be delayed or lost due to the tune-away. This can prevent the triggering of a RTO and reduction of data throughput of the RAT engaged in TCP communications.
  • a first RAT on the mobile communication device may receive an uplink grant from its associated network.
  • the MAC layer 504 may request transmission data from the PDCP layer 508 via the RLC layer 506.
  • Uplink PDUs that are created by the TCP/IP layer 512 may be delivered to the lower modem layers through the TCP adaption sub-layer 510 and assigned a PDCP sequence number (SN) .
  • TCP packets may be generated from the uplink PDUs, which are passed through the lower modem layers and transmitted out to the network.
  • the TCP adaption sub-layer 510 may also store a copy of the transmitted TCP packet.
  • the physical layer 502 may receive a HARQ and/or a RLC ACK 514 from the network acknowledging receipt of one or more MAC layer or RLC layer PDUs that may correspond to the TCP packet.
  • the HARQ/RLC ACK 514 may be passed to the MAC layer 504.
  • the MAC layer 504 may be configured to notify the TCP adaption sub-layer 510 of the HARQ/RLC ACK 514.
  • the TCP adaption sub-layer 510 e.g., via ACK generating component 264 operating in conjunction with one or more processors 206, 216, memory 214, etc.
  • the TCP adaption sub-layer 510 may deliver the local TCP ACK 516 to the TCP/IP layer 512 in the HLOS or application.
  • the TCP/IP layer 512 may determine that the TCP packet was successfully received and no RTO is triggered if a tune-away is initiated after the first RAT receives the HARQ/RLC ACK 514. If there are buffered TCP packets for transmission in the PDCP layer 508, the TCP adaption sub-layer 510 (e.g., via ACK generating component 264 operating in conjunction with one or more processors 206, 216, memory 214, etc. ) may also generate one or more TCP ACKs for the buffered TCP packets with a receive window value of zero to prevent triggering a RTO.
  • the TCP adaption sub-layer 510 e.g., via ACK generating component 264 operating in conjunction with one or more processors 206, 216, memory 214, etc.
  • the network may transmit a remote TCP ACK to the first RAT.
  • the TCP adaption sub-layer 510 may be notified of the receipt of the remote TCP ACK. However, because the local TCP ACK 516 has already been delivered to the TCP/IP layer 512, the TCP adaption sub-layer 510 may ignore the remote TCP ACK. The TCP adaption sub-layer 510 may also delete the locally stored copy of the transmitted TCP packet upon receipt of the remote TCP ACK. If a remote TCP ACK is not received, the TCP packet may have been lost in either the air interface or the wireline link. If the packet loss occurs in the air interface, the RLC retransmission mechanism may initiate. If the packet loss occurs in the wireline link, the TCP adaption sub-layer 510 may detect packet loss when duplicate remote TCP ACKs are received or if a RTO is triggered, and then initiate retransmission of the TCP packet.
  • a network base station may also generate local TCP ACKs during downlink TCP communications as well.
  • a network base station may have a TCP handling sub-layer in the PDCP layer similar to the TCP adaption sub-layer 510 of the mobile communication device.
  • the network base station may receive a HARQ ACK or RLC ACK from the first RAT of the mobile communication device in response to a TCP packet transmission.
  • the TCP packet may be stored in the TCP adaption sublayer of the network base station.
  • the TCP adaption sub-layer (e.g., via ACK generating component 264 operating in conjunction with one or more processors 206, 216, memory 214, etc.
  • the network base station may generate a local TCP ACK from the HARQ ACK or RLC ACK and deliver the local TCP ACK to the TCP/IP layer of the network base station.
  • the network base station may then wait for the receipt of a subsequent remote ACK, such as a remote TCP ACK if the local TCP ACK was generated from a RLC ACK, or in the alternative a remote RLC ACK if the local TCP ACK was generated from a HARQ ACK. Because there is no further wireline transmission and the air interface is the last part of the TCP transmission, the RLC ACK may be indicative of whether the transmission was successful on the TCP layer as well.
  • the cyclic redundancy check (CRC) bits for the RLC/HARQ ACK are longer than for the TCP ACK, so there is less error.
  • the locally acknowledged (ACKed) TCP packets stored in the TCP adaption sub-layer may be deleted.
  • the TCP adaption sub-layer may determine whether there is any additional information in the subsequent remote ACK aside from the acknowledgement itself. If there is additional information, this information may be delivered to the TCP/IP layer of the network base station. Otherwise, the subsequent remote ACK may be ignored.
  • the mobile communication device may be configured by the network base station not to transmit any TCP ACKs, but rather HARQ and RLC ACKs. Thus, both the mobile communication device and the network base station may be configured to generate local TCP ACKs in order to avoid data throughput reduction in the presence of tune-aways.
  • a mobile communication device may utilize TCP ACK buffers to lessen data throughput reduction in the presence of tune-aways.
  • FIG. 6, shows the call flow diagram 600 including a mobile communication device 602 having a first RAT 604 and a second RAT 606.
  • the first RAT 604 and the second RAT 606 may be associated with the same subscription or different subscriptions on the mobile communication device.
  • the mobile communication device 602 may be a MSMS mobile communication device, such as a DSDS mobile communication device, and the first RAT 604 may be associated with a first subscription and the second RAT 606 may be associated with a second subscription.
  • the first RAT 604 and the second RAT 606 may utilize a shared RF resource (e.g., RF resource 218) on the mobile communication device 602.
  • the first RAT 604 communicates with a first network 608, while the second RAT 606 communicates with a second network 610. If the first RAT 604 and the second RAT 606 share the same subscription, the first network 608 may be the same as the second network 610, or both networks may be under the control of the same network operator.
  • the first RAT 604 may be in TCP communication with the first network 608.
  • the first network 608 may transmit a TCP ACK 612 to the first RAT 604.
  • the TCP ACK 612 may be in response to a packet n-1 that the first RAT 604 previously transmitted to the first network 608.
  • the first RAT 604 may then transmit a TCP packet n 614 to the first network 608.
  • the modem on the mobile communication device 602 e.g., via ACK generating component 264 operating in conjunction with one or more processors 206, 216, memory 214, etc. ) may determine whether there is an upcoming tune-away in operation 616. As described, this can occur via receiving an indication of one or more parameters related to a tune-away schedule, etc.
  • the modem may (e.g., via ACK generating component 264 operating in conjunction with one or more processors 206, 216, memory 214, etc. ) buffer the previously received TCP ACK 612 for packet n-1 in operation 618 (e.g., buffer the TCP ACK 612 in memory 214, where the memory 214 may include one or more ACK buffers for this purpose) .
  • the mobile communication device 602 may then perform a tune-away 620 from the first RAT 604 to the second RAT 606 so that the second RAT 606 may perform idle mode operations.
  • the modem may deliver the buffered TCP ACK to the TCP/IP layer of the mobile communication device 602 (e.g., to a HLOS or application executing on the mobile communication device 602) at regular time intervals T in operation 622.
  • the time interval may be selected to be shorter than the RTO threshold time in order to avoid triggering a RTO during the tune-away 620.
  • the HLOS/application may reduce the congestion window value of the first RAT 604.
  • the congestion window value is usually reduced by half when receiving duplicate TCP ACKs rather than down to one if a RTO is triggered.
  • the data throughput of the first RAT 604 may be higher than if no buffered TCP ACKs were delivered and a RTO is triggered.
  • the first network 608 may transmit a TCP ACK 626 corresponding to the packet n.
  • the first RAT 604 may receive the TCP ACK 626 and deliver it to the HLOS/application. In this manner, buffered TCP ACKs may be used to reduce the impact of tune-aways on the data throughput of the first RAT 604.
  • FIG. 7 illustrates a method 700 for utilizing timestamps in TCP communications in a mobile communication device according to various examples.
  • the method 700 may be implemented with a processor (e.g., the general processor 206, the baseband modem processor 216, a separate controller, and/or the like) of a mobile communication device (such as the mobile communication devices 110, 120, 402) that supports a first RAT and a second RAT that share an RF resource (e.g., RF resource 218) .
  • the first RAT and the second RAT may share the same subscription, or may be associated with different subscriptions.
  • the first RAT may be engaged in TCP communications with an associated first network.
  • the processor may determine whether there is an upcoming tune-away from the first RAT, which is engaged in an active communication, to the second RAT. For example, the modem may schedule periodic tune-aways to the second RAT and the periodicity of the tune-aways may be used to determine whether a tune-away is about to occur.
  • the processor may transmit a TCP packet to the first network in block 724.
  • the processor may follow normal procedures for TCP communications and continue generating and transmitting TCP packets without timestamps.
  • the processor may (e.g., via timestamp component 262 operating in conjunction with one or more processors 206, 216, memory 214, etc. ) add a timestamp to a TCP packet for transmission before the tune-away begins in block 704.
  • the timestamp may be the current time when the timestamp is added to the TCP packet.
  • the modem of the mobile communication device may filter TCP packets (e.g., based on a 5-tuple filter) to obtain the TCP packets which are to include timestamps, and the modem can add the timestamp to the filtered TCP packets (e.g., to an appropriate portion of the TCP packet, such as the TCP packet header) .
  • this may include performing deep packet inspection on the filtered packets to locate the packet header and/or other portion into which the timestamp can be added.
  • a HLOS executing on the mobile communication device may be notified by the modem of the upcoming tune-away and the HLOS may enable the addition of timestamps to the TCP packets.
  • the HLOS can add timestamps to the TCP packets without filtering.
  • the processor may add an offset to the timestamp.
  • the value of the offset may be based on the estimated duration of the upcoming tune-away.
  • the modem and/or the HLOS may determine or estimate the duration of the tune-away (e.g., based on a value configured at the UE based on information provided by an eNB, etc. ) and set the offset equal to the duration of the tune-away.
  • the modem and/or HLOS may then add the offset to the timestamp.
  • the processor may transmit the TCP packet with the timestamp from the first RAT to the first network.
  • the processor may perform a tune-away from the first RAT to the second RAT so that the second RAT may perform idle mode operations.
  • an RTO may be triggered on the first RAT because the first RAT does not receive any TCP ACKs during the tune-away.
  • the congestion window value of the first RAT may be set to one.
  • the first RAT may retransmit the TCP packet as part of a retransmission process following the RTO.
  • the first RAT may receive a TCP ACK from the first network, and in block 716, the processor (e.g., via timestamp component 262 operating in conjunction with one or more processors 206, 216, memory 214, etc. ) may compare the timestamps of the transmitted TCP packet and the received TCP ACK.
  • the processor e.g., via timestamp component 262 operating in conjunction with one or more processors 206, 216, memory 214, etc.
  • the processor may compare the timestamps of the transmitted TCP packet and the received TCP ACK.
  • the processor may (e.g., via timestamp component 262 operating in conjunction with one or more processors 206, 216, memory 214, etc. ) determine whether the TCP ACK corresponds to the transmitted TCP packet. For example, if the timestamp of the TCP ACK matches the timestamp of the transmitted TCP packet, then the TCP ACK corresponds to the TCP packet.
  • the first network receives the TCP packet and generates a TCP ACK in response, the first network may be configured to include the timestamp of the TCP packet in the header of the TCP ACK.
  • the processor may restore a prior congestion window value of the first RAT in block 720.
  • the processor may restore a prior congestion window value rather than leaving it at one. This may prevent a reduction of data throughput on the first RAT even in the presence of a tune-away.
  • the processor may keep the current congestion window value of the first RAT in block 722 such that the congestion window value is not changed as the TCP ACK does not correspond to the TCP packet. For example, if the congestion window value was one after the RTO, the congestion value may remain at one.
  • the processor may also initiate a slow start procedure to gradually increase the congestion window value.
  • the method 700 may be repeated for every TCP packet transmission on the first RAT. In this manner, the method 700 provides a way to dynamically add timestamps to uplink TCP transmissions that are interrupted.
  • FIG. 8 illustrates a method 800 for utilizing timestamps in TCP communications in a network base station according to various examples.
  • the method 800 may be implemented with a processor (e.g., a general processor 206, a baseband modem processor 216, a separate controller, and/or the like) of a network base station (such as a base station of the first network 408) .
  • the network base station may be engaged in TCP communication with a first RAT on a mobile communication device that supports a first RAT and a second RAT sharing an RF resource (e.g., a MSMS mobile communication device) .
  • a processor e.g., a general processor 206, a baseband modem processor 216, a separate controller, and/or the like
  • the network base station may be engaged in TCP communication with a first RAT on a mobile communication device that supports a first RAT and a second RAT sharing an RF resource (e.g., a MSMS mobile communication device) .
  • the network base station may receive a tune-away schedule from the mobile communication device.
  • the tune-away schedule may specify the times, durations and/or periodicity of scheduled tune-aways from the first RAT to the second RAT in the mobile communication device.
  • the processor may (e.g., via timestamp component 262 operating in conjunction with one or more processors 206, 216, memory 214, etc. ) add a timestamp to a TCP packet for transmission before the tune-away begins in block 806.
  • the timestamp may be the current time when the timestamp is added to the TCP packet.
  • the timestamp may be added to the header of the TCP packet.
  • the processor may add an offset to the timestamp.
  • the value of the offset may be based on the estimated duration of the upcoming tune-away, which may be determined from the received tune-away schedule.
  • the processor may transmit the TCP packet with the timestamp from the network base station to the mobile communication device.
  • the network base station may trigger a RTO for the TCP communication between the network base station and the mobile communication device. For example, after the TCP packet is transmitted, the mobile communication device may perform a tune-away from the first RAT to the second RAT so that the second RAT may perform idle mode operations. During the tune-away, a RTO may be triggered on the network base station because it has not received any TCP ACKs during the duration of the tune-away. When a RTO is triggered, the congestion window value of the TCP communication with the mobile communication device may be set to one. The network base station may retransmit the TCP packet as part of a retransmission process following the RTO.
  • the network base station may receive a TCP ACK from the mobile communication device.
  • the processor may (e.g., via timestamp component 262 operating in conjunction with one or more processors 206, 216, memory 214, etc. ) compare the timestamps of the transmitted TCP packet and the received TCP ACK. In determination block 818, the processor may determine whether the TCP ACK corresponds to the transmitted TCP packet. For example, if the timestamp of the TCP ACK matches the timestamp of the transmitted TCP packet, then the TCP ACK corresponds to the TCP packet. When the mobile communication device receives the TCP packet and generates a TCP ACK in response, the mobile communication device (e.g., via timestamp component 262 operating in conjunction with one or more processors 206, 216, memory 214, etc. ) may be configured to include the timestamp of the TCP packet in the header of the TCP ACK.
  • the mobile communication device e.g., via timestamp component 262 operating in conjunction with one or more processors 206, 216, memory 214, etc.
  • the processor may restore a prior congestion window value of the TCP communication with the mobile communication device in block 820.
  • the processor may restore a prior congestion window value of the TCP communication with the mobile communication device in block 820.
  • the processor determines that the mobile communication device successfully received the TCP packet, the effect of the RTO may be reversed by restoring the prior congestion window value rather than leaving it at one. This may prevent a reduction of data throughput on downlink communications with the mobile communication device even in the presence of a tune-away.
  • the processor may keep the current congestion value in block 822. For example, if the congestion window value was one after the RTO, the congestion value may remain one.
  • the processor may also initiate a slow start procedure to gradually increase the congestion window value.
  • the method 800 may be repeated for every TCP packet transmission on the network base station. In this manner, the method 800 provides a way to dynamically add timestamps to downlink TCP transmissions that are interrupted.
  • FIG. 9 illustrates a method 900 for generating local acknowledgements for TCP communications in a mobile communication device according to various examples.
  • the method 900 may be implemented with a processor (e.g., the general processor 206, the baseband modem processor 216, a separate controller, and/or the like) of a mobile communication device (such as the mobile communication devices 110, 120, 402) that supports a first RAT and a second RAT that share an RF resource.
  • the first RAT and the second RAT may share the same subscription, or may be associated with different subscriptions.
  • the first RAT may be engaged in TCP communications with an associated first network.
  • the processor of the mobile communication device may transmit a TCP packet from the first RAT to the first network.
  • the first RAT may receive a HARQ or RLC ACK corresponding to the TCP packet from the first network.
  • the processor of the mobile communication device e.g., via ACK generating component 264 operating in conjunction with one or more processors 206, 216, memory 214, etc. ) may generate a local TCP ACK from the HARQ/RLC ACK.
  • a PDCP layer of the modem in the mobile communication device may include a TCP adaption sub-layer as described with reference to FIG. 5.
  • the MAC layer of the modem may notify the TCP adaption sub-layer of the received HARQ/RLC ACK.
  • the TCP adaption sub-layer may generate a local TCP ACK from the HARQ/RLC ACK.
  • the TCP adaption sub-layer may also store a copy of the transmitted TCP packet.
  • the processor may determine whether there is an upcoming tune-away from the first RAT to the second RAT. For example, the modem may schedule periodic tune-aways to the second RAT and the periodicity of the tune-aways may be used to determine whether a tune-away is about to occur.
  • the processor may set a receive window value of the local TCP ACK to a prior receive window value from the last received TCP ACK in block 912. In order words, when there is no tune-away the same data throughput may be maintained on the first RAT.
  • the processor may deliver the local TCP ACK to a HLOS or application executing on the mobile communication device (i.e., deliver to the upper TCP/IP layer) .
  • the processor may set a receive window value of the local TCP ACK to zero in block 910. This may prevent the first RAT from transmitting TCP packets during the tune-away.
  • the processor may deliver the local TCP ACK to the HLOS or application executing on the mobile communication device.
  • the processor may perform a tune-away from the first RAT to the second RAT so that the second RAT may perform idle mode operations. As described, this may involve the processor tuning a modem away from the first RAT (e.g., frequency resources associated with first RAT) to a second RAT (e.g., frequency resources associated with the second RAT) for monitoring and/or decoding paging signals, performing measurements related to cell reselection, performing cell reselection, monitoring system information, etc.
  • the first RAT e.g., frequency resources associated with first RAT
  • a second RAT e.g., frequency resources associated with the second RAT
  • the processor may generate one or more local TCP ACKs for buffered TCP packets in the PDCP layer of the modem during the tune-away.
  • These local TCP ACKs may also have a receive window value of zero to prevent the triggering of a RTO during the tune-away.
  • the processor may determine whether the first RAT has received a remote TCP ACK from the first network in determination block 920. For example, after receiving the TCP packet transmitted in block 902, the first network may generate and transmit a TCP ACK indicating successful reception of the TCP packet.
  • the processor may determine whether the remote TCP ACK contains additional information not found in the local TCP ACK in determination block 922.
  • the processor may deliver the additional information the HLOS/App in block 924.
  • the processor may ignore the remote TCP ACK in block 926. In other words, if it is confirmed that the first network successfully received the TCP packet and the TCP packet does not contain any additional information, the remote TCP ACK is redundant to the local TCP ACK that was already delivered to the HLOS or application in block 914.
  • the processor may determine that a loss of the TCP packet has occurred in block 928. For example, the first RAT may receive duplicate remote TCP ACKs that may be indicative of a lost packet, or the processor may check whether a RTO has been triggered.
  • the processor may initiate retransmission of the TCP packet.
  • the method 900 may be repeated for each TCP packet transmission. In this manner, the method 900 provides a way for a mobile communication device to generate local TCP ACKs from lower layer ACKs to prevent data throughput loss during a tune-away.
  • FIG. 10 illustrates a method 1000 for generating local acknowledgements for TCP communications in a network base station according to various examples.
  • the method 1000 may be implemented with a processor (e.g., a general processor 206, a baseband modem processor 216, a separate controller, and/or the like) of a network base station (such as a base station of the first network 408) .
  • the network base station may be engaged in TCP communication with a first RAT on a mobile communication device that supports a first RAT and a second RAT sharing an RF resource (e.g., a MSMS mobile communication device) .
  • a processor e.g., a general processor 206, a baseband modem processor 216, a separate controller, and/or the like
  • the network base station may be engaged in TCP communication with a first RAT on a mobile communication device that supports a first RAT and a second RAT sharing an RF resource (e.g., a MSMS mobile communication device) .
  • the processor of the network base station may transmit a TCP packet from the network base station to the first RAT of the mobile communication device.
  • the network base station may receive a HARQ ACK or a RLC ACK corresponding to the TCP packet from the mobile communication device.
  • the processor of the network base station may (e.g., via ACK generating component 264 operating in conjunction with one or more processors 206, 216, memory 214, etc. ) generate a local TCP ACK from the HARQ/RLC ACK.
  • a PDCP layer of the network base station may include a TCP adaption sub-layer as described with reference to FIG. 5.
  • the MAC layer may notify the TCP adaption sub-layer of the received HARQ/RLC ACK.
  • the TCP adaption sub-layer may generate a local TCP ACK from the HARQ/RLC ACK.
  • the TCP adaption sub-layer may also store a copy of the transmitted TCP packet.
  • the processor may set a receive window value of the local TCP ACK to a prior receive window value from the last received TCP ACK. This allows the network base station to maintain the same data throughput in the TCP communication with the mobile communication device.
  • the processor may deliver the local TCP ACK to a HLOS or application executing on network base station (i.e., deliver to the upper TCP/IP layer) .
  • the processor may instruct the mobile communication device to not send a TCP ACK corresponding to the transmitted TCP packet.
  • the instruction may be done through various mobile network signaling mechanisms, such as radio resource control (RRC) signaling or TCP/IP signaling. This may be done so that the mobile communication device transmits the RLC ACK but does not also have to transmit the TCP ACK because the RLC ACK arrives earlier.
  • RRC radio resource control
  • the processor may determine whether the network base station has received a subsequent remote ACK from the mobile communication device. For example, after receiving the TCP packet transmitted in block 1002, the mobile communication device may first generate and transmit a RLC ACK indicating successful reception of the TCP packet, and then later transmit a TCP ACK for the same TCP packet. If the local TCP ACK was generated from a received HARQ ACK, the subsequent remote ACK may be a RLC ACK. If the local TCP ACK was generated from a received RLC ACK, the subsequent remote ACK may be a TCP ACK
  • the processor may determine whether the subsequent remote ACK contains additional information not found in the local TCP ACK in determination block 1018.
  • the processor may deliver the additional information to the HLOS or application in block 1020.
  • the processor may ignore the subsequent remote ACK in block 1022. In other words, if it is confirmed that the mobile communication device did successfully receive the TCP packet and did not send any additional information other than the acknowledgement, the subsequent remote ACK is redundant to the local TCP ACK that was already delivered to the HLOS or application in block 1008.
  • the TCP adaption sub-layer may also delete the stored TCP packet when the subsequent remote ACK is received.
  • the processor may determine that a loss of the TCP packet has occurred in block 1014, and initiate retransmission of the TCP packet in block 1016.
  • the network base station may receive duplicate remote TCP ACKs that may be indicative of a lost packet, or the processor may check whether a RTO has been triggered.
  • the method 1000 may be repeated for each transmitted TCP packet. In this manner, the method 1000 provides a way for a network base station to generate local TCP ACKs from lower layer ACKs to prevent data throughput loss when communicating with a mobile communication device that may be performing tune-aways.
  • FIG. 11 illustrates a method 1100 for utilizing acknowledgement buffers for TCP communications in a mobile communication device according to various examples.
  • the method 1100 may be implemented with a processor (e.g., the general processor 206, the baseband modem processor 216, a separate controller, and/or the like) of a mobile communication device (such as the mobile communication devices 110, 120, 602) that supports a first RAT and a second RAT that share an RF resource.
  • the first RAT and the second RAT may share the same subscription, or may be associated with different subscriptions.
  • the first RAT may be engaged in TCP communications with an associated first network.
  • the processor of the mobile communication device may transmit a TCP packet from the first RAT to the first network.
  • the TCP packet can be transmitted in one or more lower layer PDUs.
  • the processor may determine there is an upcoming tune-away before receiving a TCP response from the first network. For example, the processor may estimate the average time that the first network takes to send a TCP response and compare it to the tune-away schedule on the mobile communication device.
  • the processor may receive the TCP response from the first network in block 1118.
  • the processor may initiate the tune-away from the first RAT to the second RAT.
  • the processor may initiate a timer with a time interval T.
  • the duration of the timer may be chosen to be shorter than a RTO threshold time so that a RTO is not triggered during the tune-away.
  • the processor may determine whether the tune-away has ended.
  • the processor may the processor may receive the TCP response from the first network in block 1118.
  • the processor may deliver the buffered TCP ACK to a HLOS or application executing on the mobile communication device (i.e., deliver to the upper TCP/IP layer) in block 1116.
  • the HLOS or application may respond to the duplicate TCP ACK by reducing the congestion window value of the first RAT (e.g., reducing the value by half) .
  • the reduction is usually less than if no TCP ACK is delivered and an RTO is triggered (i.e., the congestion window value may be set to one in a RTO) .
  • the processor may then reinitiate the timer in block 1110.
  • the processor may continue to deliver the buffered TCP ACK to the HLOS or application according to the timer period until the tune-away has ended.
  • the mobile communication device may deliver the buffered TCP ACKs as fake duplicate TCP ACPS so that an RTO is not triggered. In this manner, the method 1100 provides a way for a mobile communication device to reduce the impact of tune-aways to data throughput by utilizing buffered TCP ACKs before an RTO is triggered.
  • multi-SIM mobile communication device 1200 may be implemented in any of a variety of communication devices, an example of which (e.g., multi-SIM mobile communication device 1200) is illustrated in FIG. 12.
  • the multi-SIM mobile communication device 1200 may be similar to the mobile communication devices 110, 120, 200, 402, and 602 as described. As such, the multi-SIM mobile communication device 1200 may implement the methods 700, 900, and 1100 according to various examples.
  • the multi-SIM mobile communication device 1200 may include a processor 1202 coupled with a touchscreen controller 1204 and an internal memory 1206.
  • the processor 1202 may be one or more multi-core integrated circuits designated for general or specific processing tasks.
  • the processor 1202 can be similar to one or more of processors 206, 216, and may implement one or more actions associated with a TCP layer component 260.
  • the internal memory 1206 may 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 internal memory 1206 may be similar to memory 214 and may store one or more instructions or parameters related to a TCP layer component 260.
  • the touchscreen controller 1204 and the processor 1202 may also be coupled with a touchscreen panel 1212, such as a resistive-sensing touchscreen, capacitive-sensing touchscreen, infrared sensing touchscreen, etc. Additionally, the display of the multi-SIM mobile communication device 1200 need not have touch screen capability.
  • the multi-SIM mobile communication device 1200 may have one or more cellular network transceivers 1208 coupled with the processor 1202 and to one or more antennas 1210 and configured for sending and receiving cellular communications.
  • the one or more transceivers 1208 and the one or more antennas 1210 may be used with the herein-mentioned circuitry to implement various example methods.
  • the multi-SIM mobile communication device 1200 may include one or more SIM cards 1216 coupled with the one or more transceivers 1208 and/or the processor 1202 and may be configured as described herein.
  • the multi-SIM mobile communication device 1200 may also include speakers 1214 for providing audio outputs.
  • the multi-SIM mobile communication device 1200 may also include a housing 1220, constructed of a plastic, metal, or a combination of materials, for containing all or some of the components discussed herein.
  • the multi-SIM mobile communication device 1200 may include a power source 1222 coupled with the processor 1202, such as a disposable or rechargeable battery.
  • the rechargeable battery may also be coupled with the peripheral device connection port to receive a charging current from a source external to the multi-SIM mobile communication device 1200.
  • the multi-SIM mobile communication device 1200 may also include a physical button 1224 for receiving user inputs.
  • the multi-SIM mobile communication device 1200 may also include a power button 1226 for turning the multi-SIM mobile communication device 1200 on and off.
  • network base station 1300 may be implemented in any of a variety of network base stations, an example of which (e.g., network base station 1300) is illustrated in FIG. 13.
  • the network base station 1300 may be similar to the base station of the first network 408, 608 as described, and/or communication device 200. As such, the network base station 1300 may implement the methods 800 and 1000 according to various examples.
  • the network base station 1300 may include a processor 1301 coupled with volatile memory 1302 and a large capacity nonvolatile memory, such as a disk drive 1303.
  • the processor 1301 can be similar to one or more of processors 206, 216, and may implement one or more actions associated with a TCP layer component 260.
  • the volatile memory 1302 may be similar to memory 214 and may store one or more instructions or parameters related to a TCP layer component 260.
  • the network base station 1300 may also include a network interface 1305 coupled with the processor 1301 for establishing data connections with a network 1306, such as a mobile telephony network connected to a plurality of mobile communication devices.
  • the processor 1301 may 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 aspects described herein.
  • software applications may be stored in the internal memories 1302, 1303 before they are accessed and loaded into the processor 1301.
  • the processor 1301 may include internal memory sufficient to store the application software instructions.
  • DSP digital signal processor
  • ASIC application specific integrated circuit
  • FPGA field programmable gate array
  • a general-purpose processor may be a microprocessor, but, in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine.
  • a processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configurations. Alternatively, some operations or methods may be performed by circuitry that is specific to a given function.
  • the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored as one or more instructions or code on a non-transitory computer-readable storage medium or non-transitory processor-readable storage medium.
  • the operations of a method or algorithm disclosed herein may be embodied in a processor-executable software module, which may reside on a non-transitory computer-readable or processor-readable storage medium.
  • Non-transitory computer-readable or processor-readable storage media may be any storage media that may be accessed by a computer or a processor.
  • non-transitory computer-readable or processor-readable storage media may include RAM, ROM, EEPROM, FLASH memory, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that may be used to store desired program code in the form of instructions or data structures and that may be accessed by a computer.
  • Disk and disc includes compact disc (CD) , laser disc, optical disc, digital versatile disc (DVD) , floppy disk, and Blu-ray disc in which disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the storage media are also included within the scope of non-transitory computer-readable and processor-readable media.
  • the operations of a method or algorithm may reside as one or any combination or set of codes and/or instructions on a non-transitory processor-readable storage medium and/or computer-readable storage medium, which may be incorporated into a computer program product.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

Various methods for managing TCP communications in a mobile communication device may include transmitting a TCP packet from a first radio access technology (RAT) on the mobile communication device to a first network, receiving a hybrid automatic repeat request (HARQ) acknowledgement (ACK) or a radio link control (RLC) ACK from the first network, generating a local TCP ACK from the HARQ ACK or the RLC ACK, and delivering the local TCP ACK to a high level operating system (HLOS) or an application on the mobile communication device.

Description

HANDLING PACKET ACKNOWLEDGEMENTS DURING TUNE-AWAYS ON MOBILE DEVICES
CLAIM OF PRIORITY
The present Application for Patent claims priority to PCT Patent Application No. PCT/CN2016/081423 entitled “HANDLING PACKET ACKNOWLEDGEMENTS DURING TUNE-AWAYS ON MOBILE DEVICES” filed May 9, 2016, which is assigned to the assignee hereof and hereby expressly incorporated by reference herein for all purposes.
BACKGROUND
Some designs of mobile communication devices—such as smart phones, tablet computers, and laptop computers—contain one or more Subscriber Identity Module (SIM) cards that provide users with parameters for accessing one or more separate mobile telephony networks. Examples of mobile telephony network technologies, referred to as radio access technologies (RATs) , can include Third Generation (3G) , Fourth Generation (4G) , Long Term Evolution (LTE) , Time Division Multiple Access (TDMA) , Frequency Division Multiple Access (FDMA) , Code Division Multiple Access (CDMA) , Wideband CDMA (WCDMA) , Time Division Synchronous CDMA (TD-SCDMA) , Global System for Mobile Communications (GSM) , Universal Mobile Telecommunications Systems (UMTS) , evolved High Speed Packet Access (HSPA+) , Dual-Cell High Speed Packet Access (DC-HSPA) , Evolution Data-Optimized (EV-DO) , Enhanced Data rates for GSM Evolution (EDGE) , and single carrier Radio Transmission Technologies (1xRTT) .
A mobile communication device that includes one or more SIMs and connects to two or more separate mobile telephony networks using a shared radio frequency (RF) resource/radio may be termed a multi-SIM multi-standby (MSMS) communication device. A MSMS communication device may share the RF resource  by concurrent radio access technologies (CRATs) , which may result in hardware cost savings.
One example of an MSMS communication device is a dual-SIM dual-standby (DSDS) communication device, which includes two SIM cards supporting two subscriptions associated with different RATs sharing one RF resource. In DSDS communication devices, the separate subscriptions share the one RF resource to communicate with two separate mobile telephony networks on behalf of their respective subscriptions. When one RAT is using the RF resource, the other RAT is in stand-by mode and is not able to communicate using the RF resource.
SUMMARY
The following presents a simplified summary of one or more aspects in order to provide a basic understanding of such aspects. This summary is not an extensive overview of all contemplated aspects, and is intended to neither identify key or critical elements of all aspects nor delineate the scope of any or all aspects. Its sole purpose is to present some concepts of one or more aspects in a simplified form as a prelude to the more detailed description that is presented later.
Various examples of methods for managing transmission control protocol (TCP) communications in a mobile communication device may include determining whether there is an upcoming tune-away from a first radio access technology (RAT) on the mobile communication device to a second RAT on the mobile communication device, adding a first timestamp to a TCP packet for transmission before the tune-away begins in response to determining that there is an upcoming tune-away from the first RAT to the second RAT, transmitting the TCP packet to a first network, performing the tune-away from the first RAT to the second RAT, triggering a retransmission time out on the first RAT, receiving a TCP acknowledgement (ACK) from the first network, in which the TCP ACK includes a second timestamp, determining whether the TCP ACK corresponds to the TCP packet, and restoring a  prior congestion window value of the first RAT in response to determining that the TCP ACK corresponds to the TCP packet.
In some examples, determining whether the TCP ACK corresponds to the TCP packet may include comparing the first timestamp to the second timestamp. Some examples may further include adding an offset to the first timestamp, in which the offset is based on an estimated duration of the tune-away. In some examples, a modem of the mobile communication device may add the first timestamp to the TCP packet. In some examples, a high level operating system of the mobile communication device may add the first timestamp to the TCP packet. Some examples may further include keeping a current congestion window value in response to determining that the TCP ACK does not correspond to the TCP packet. In some examples, a congestion value window of the first RAT may be set to one when the retransmission time out is triggered.
Other example methods for managing TCP communications in a network base station may include receiving a tune-away schedule from a mobile communication device, determining whether there is an upcoming tune-away on the mobile communication device from the tune-away schedule, adding a first timestamp to a TCP packet for transmission before the tune-away begins in response to determining that there is an upcoming tune-away on the mobile communication device, transmitting the TCP packet to the mobile communication device, triggering a retransmission time out on TCP communications between the network base station and the mobile communication device, receiving a TCP acknowledgement (ACK) from the mobile communication device, in which the TCP ACK includes a second timestamp, determining whether the TCP ACK corresponds to the TCP packet, and restoring a prior congestion window value on the network base station in response to determining that the TCP ACK corresponds to the TCP packet.
In some examples, determining whether the TCP ACK corresponds to the TCP packet may include comparing the first timestamp to the second timestamp. Some  examples may further include adding an offset to the first timestamp, in which the offset is based on an estimated duration of the tune-away. Some examples may further include keeping a current congestion window value in response to determining that the TCP ACK does not correspond to the TCP packet. In some examples, a congestion value window of the network base station may be set to one when the retransmission time out is triggered.
Other example methods for managing TCP communications in a mobile communication device may include transmitting a TCP packet from a first radio access technology (RAT) on the mobile communication device to a first network, receiving a hybrid automatic repeat request (HARQ) acknowledgement (ACK) or a radio link control (RLC) ACK from the first network, generating a local TCP ACK from the HARQ ACK or the RLC ACK, and delivering the local TCP ACK to a high level operating system (HLOS) or an application on the mobile communication device.
In some examples, the methods may also include determining whether the first RAT has received a remote TCP ACK from the first network, and ignoring the remote TCP ACK in response to determining that the first RAT has received a remote TCP ACK from the first network. In some examples, a TCP adaption sub-layer in a packet data convergence protocol layer of a modem in the mobile communication device may generate the local TCP ACK. In some examples, the TCP adaption sub-layer receives the HARQ ACK or the RLC ACK from a medium access control (MAC) layer of the modem. In some examples, the TCP adaption sub-layer may store a copy of the TCP packet. Some examples may further include determining that a loss of the TCP packet has occurred in response to determining that the first RAT has not received a remote TCP ACK from the first network, and retransmitting the TCP packet. Some examples may further include determining whether there is an upcoming tune-away from the first RAT to a second RAT on the mobile communication device, setting a receive window value of the local TCP ACK to zero in response to determining that there is an upcoming tune-away from the first RAT to the second RAT, and performing the  tune-away from the first RAT to the second RAT. Some examples may further include setting the receive window value of the local TCP ACK to a prior receive window value of a prior received TCP ACK in response to determining that there is no upcoming tune-away from the first RAT to the second RAT. Some examples may further include generating one or more local TCP ACKs for each of a plurality of buffered TCP packets during the tune-away, in which each of the one or more local TCP ACKs has a receive window value of zero. Some examples may further include determining whether the remote TCP ACK contains additional information not contained in the local TCP ACK, and delivering the additional information to the HLOS or the application in response to determining that the remote TCP ACK contains additional information not contained in the local TCP ACK.
Other example methods for managing TCP communications in a network base station may include transmitting a TCP packet to a mobile communication device, receiving a hybrid automatic repeat request (HARQ) acknowledgement (ACK) from the mobile communication device, generating a local TCP ACK from the HARQ ACK, delivering the local TCP ACK to a high level operating system (HLOS) or application on the network base station, determining whether the network base station has received a subsequent remote ACK from the mobile communication device, and ignoring the subsequent remote ACK in response to determining that the network base station has received a subsequent remote ACK from the mobile communication device.
In some examples, a TCP adaption sub-layer in the network base station may generate the local TCP ACK. Some examples may further include determining that a loss of the TCP packet has occurred in response to determining that the network base station has not received a subsequent remote ACK from the mobile communication device, and retransmitting the TCP packet. In some examples, the local TCP ACK may include a receive window value set to equal a prior receive window value of a prior received TCP ACK. Some examples may further include determining whether the subsequent remote ACK contains additional information not contained in the local  TCP ACK, and delivering the additional information to the HLOS or the application in response to determining that the subsequent remote ACK contains additional information not contained in the local TCP ACK. Some examples may further include instructing the mobile communication device to not transmit a TCP ACK corresponding to the TCP packet.
Other example methods for managing transmission control protocol (TCP) communications in a mobile communication device may include transmitting a TCP packet from a first radio access technology (RAT) of the mobile communication device to a first network, determining whether there is an upcoming tune-away from the first RAT to a second RAT on the mobile communication device before receiving a TCP response from the first network, buffering a previously received TCP acknowledgment (ACK) in response to determining that there is a tune-away from the first RAT to the second RAT scheduled before receiving a TCP response from the first network, initiating the tune-away, initiating a timer, determining whether the timer has expired, and delivering the buffered TCP ACK to a high level operating system (HLOS) or application on the mobile communication device in response to determining that the timer has not expired.
Some examples may further include reinitiating the timer after delivering the buffered TCP ACK. Some examples may further include determining whether the tune-away has ended, and receiving a TCP response from the first network in response to determining that the tune-away has ended. In some examples, a duration of the timer may be shorter than a retransmission time out threshold time.
Further examples include a mobile communication device including a memory, a subscriber identity module (SIM) , an RF resource configured to support a first RAT and a second RAT, and a processor configured to perform operations of the methods summarized above. Further examples include a non-transitory processor-readable storage medium having stored thereon processor-executable software instructions configured to cause a processor of a mobile communication device to perform  operations of the methods summarized above. Further examples include a mobile communication device that includes means for performing functions of the methods summarized above.
Further examples include a network base station including a memory, a network interface, and a processor configured to perform operations of the methods summarized above. Further examples include a non-transitory processor-readable storage medium having stored thereon processor-executable software instructions configured to cause a processor of a network base station to perform operations of the methods summarized above. Further examples include a network base station that includes means for performing functions of the methods summarized above.
To the accomplishment of the foregoing and related ends, the one or more aspects comprise the features hereinafter fully described and particularly pointed out in the claims. The following description and the annexed drawings set forth in detail certain illustrative features of the one or more aspects. These features are indicative, however, of but a few of the various ways in which the principles of various aspects may be employed, and this description is intended to include all such aspects and their equivalents.
BRIEF DESCRIPTION OF THE DRAWINGS
The accompanying drawings, which are incorporated herein and constitute part of this specification, illustrate examples, and together with the general description and the detailed description given herein, serve to explain the features of the disclosed systems and methods.
FIG. 1 is a communication system block diagram of mobile telephony networks suitable for use with various examples.
FIG. 2 is a component block diagram of a multi-SIM mobile communication device according to various examples.
FIG. 3 is a call flow diagram illustrating transmission control protocol (TCP) communications between a mobile communication device and a network according to conventional methods.
FIGS. 4A-4B are call flow diagrams illustrating the utilization of timestamps in TCP communications between a mobile communication device and a network in the presence of a tune-away according to various examples.
FIG. 5 is a block diagram of the communication layers in a mobile communication device according to various examples.
FIG. 6 is a call flow diagram illustrating the utilization of acknowledgement buffers in TCP communications between a mobile communication device and a network in the presence of a tune-away according to various examples.
FIG. 7 is a process flow diagram illustrating a method for utilizing timestamps in TCP communications in a mobile communication device according to various examples.
FIG. 8 is a process flow diagram illustrating a method for utilizing timestamps in TCP communications in a network base station according to various examples.
FIG. 9 is a process flow diagram illustrating a method for generating local acknowledgements for TCP communications in a mobile communication device according to various examples.
FIG. 10 is a process flow diagram illustrating a method for generating local acknowledgements for TCP communications in a network base station according to various examples.
FIG. 11 is a process flow diagram illustrating a method for utilizing acknowledgement buffers for TCP communications in a mobile communication device according to various examples.
FIG. 12 is a component block diagram of a mobile communication device suitable for implementing some example methods.
FIG. 13 is a component block diagram of a network base station suitable for implementing some example methods.
DETAILED DESCRIPTION
Various examples will be described in detail with reference to the accompanying drawings. Wherever possible, the same reference numbers will be used throughout the drawings to refer to the same or like parts. References made to particular examples and implementations are for illustrative purposes, and are not intended to limit the scope of the written description or the claims.
As used herein, the term “mobile communication device, ” “multi-SIM mobile communication device, ” or “multi-SIM device” refers to any one or all of cellular telephones, smart phones, personal or mobile multi-media players, personal data assistants, laptop computers, tablet computers, smart books, smart watches, palm-top computers, wireless electronic mail receivers, multimedia Internet-enabled cellular telephones, wireless gaming controllers, and similar personal electronic devices that includes one or more SIM cards, a programmable processor, memory, and circuitry for connecting to at least two mobile communication network with one or more shared RF resources. Various examples may be useful in mobile communication devices, such as smart phones, and so such devices are referred to in the descriptions of various examples. However, the examples may be useful in any electronic devices that may individually maintain a plurality of RATs supporting one or more subscriptions that utilize at least one shared RF chain, which may include one or more of antennae, radios, transceivers, etc.
As used herein, the terms “SIM, ” “SIM card, ” and “subscriber identification module” are used interchangeably to refer to a memory that may be an integrated circuit or embedded into a removable card, and that stores an International Mobile  Subscriber Identity (IMSI) , related key, and/or other information used to identify and/or authenticate a mobile communication device on a network and enable a communication service with the network. Because the information stored in a SIM enables the mobile communication device to establish a communication link for a particular communication service with a particular network, the term “subscription” is used herein as a shorthand reference to refer to the communication service associated with and enabled by the information stored in a particular SIM as the SIM and the communication network, as well as the services and subscriptions supported by that network, may correlate to one another.
In the following descriptions of various examples, references are made to a first subscription and a second subscription, and to a first RAT and a second RAT. The references to the first and second subscriptions and RATs are arbitrary and are used merely for the purposes of describing the examples. The device processor may assign any indicator, name or other designation to differentiate the subscriptions and RATs on the mobile communication device.
One consequence of having a plurality of RATs that maintain network connections simultaneously using a shared RF resource of a mobile communication device is that one RAT sometimes interrupts communications of the other RAT as one RAT can use the shared RF resource to communicate with its mobile network at a time. Even when a RAT is in an “idle-standby” mode, meaning that the RAT is not actively communicating with the network, the RAT can still periodically receive access to the shared RF resource in order to perform various network operations. For example, an idle RAT may use the shared RF resource at regular intervals to perform idle-mode operations or to receive paging messages.
In conventional mobile communication devices, an idle RAT may occasionally interrupt the active RAT’s RF operations so that the idle RAT can use the shared RF resource to perform the idle RAT’s idle mode operations (e.g., paging monitoring and decoding, cell reselection, system information monitoring, etc. ) . This  process of switching access of the shared RF resource from the active RAT to other RF resources, such as RF resources of the idle RAT, is referred to herein as a “tune-away, ” as the RF resource tunes away from the active RAT’s frequency band or channel and tunes to another frequency band or channel, such as the idle RAT’s frequency bands or channels. Based on the idle RAT completing its network communications, access to the RF resource may switch from the idle RAT to the active RAT via a “tune-back” operation. For example, a LTE+GSM DSDS (dual-SIM dual-standby) mobile communication device may have a first subscription utilizing a LTE RAT and a second subscription utilizing a GSM RAT. The mobile communication device may periodically tune-away to tune the RF resource from the first subscription (e.g., LTE) to the second subscription (e.g., GSM) for page monitoring, voice or short message service (SMS) service, and GSM camping operations (e.g., measuring and making cell reselections if needed, reading system information, location registering, etc. ) . Similarly, the mobile communication device may tune-back to tune the RF resource from the second subscription back to the first subscription after a period of time (e.g., or based on receiving one or more second subscription signals) .
In CRAT mobile communication devices, tune-aways may also occur between two different RATs utilized by the same subscription. For example, a CRAT device may have one SIM/subscription that utilizes both an LTE RAT and another RAT, such as GSM or CDMA2000. Thus, a tune-away (and/or an associated tune-back) may be performed between the RATs utilized by the same subscription.
Tune-aways from an active RAT to an idle RAT may interfere with communication exchanges on the active RAT. For example, an active RAT may be engaging in uplink communications with a network using a transmission control protocol (TCP) . The active RAT may transmit a TCP packet to a network base station. The network may acknowledge receipt of the TCP packet in a number of different ways. For example, the network may transmit a hybrid automatic repeat request  (HARQ) acknowledgement (ACK) , followed by a radio link control (RLC) ACK in response to receiving MAC layer and/or RLC layer segments of the TCP packet. The HARQ and RLCs ACK may be transmitted a short time after receiving the TCP packet and/or based on receiving the MAC and/or RLC layer segments of the TCP packet. At a later time the network may transmit a TCP ACK, e.g., once the entire TCP packet is received, after transmitting the HARQ and RLC ACKs.
After transmission of the TCP packet and receipt of one or more of the HARQ and RLC ACKs, but before receipt of the TCP ACK, the mobile communication device may perform a tune-away to receive and/or transmit signals, which may correspond to another network or RAT (e.g., an idle RAT) . During the tune-away the active RAT may not receive any TCP ACKs from the network. After a period of time, this may lead the network of the active RAT to trigger a retransmission time out (RTO) based on not receiving the TCP ACKs corresponding to one or more previously transmitted TCP packets. One consequence of triggering a RTO is that the congestion window (cwnd) value of the active RAT may be reduced to one. The congestion window value represents the amount of data for transmission that may be outstanding at any given time. The higher the congestion window value, the higher the data throughput of the active RAT. Thus after an RTO, the data throughput of the active RAT can be significantly reduced, and can gradually increase according to a slow start procedure. In addition, during a tune-away the TCP layer of the mobile communication device may not know the lower layers (i.e., the layers in the modem) are not available due to the tune-away, and may continue to send data to the modem until a transmission window (twnd) of the active RAT is exhausted. Thus tune-aways may impact the throughput performance of TCP communications on the active RAT even after the tune-away is complete. Further, when a TCP ACK is received, the mobile communication device may not know whether the ACK is acknowledging the original TCP packet or acknowledging a retransmitted TCP packet.
In overview, various examples described herein provide systems and methods for handling TCP communications in the presence of tune-aways. In some examples, an upcoming tune-away may be identified and a timestamp may be dynamically added to a TCP packet that is transmitted by a first RAT on the mobile communication device before the tune-away begins. If there is no tune-away, or following the tune-away by the first RAT, no timestamp is added to a TCP packet to mitigate overhead. During the tune-away, an RTO may be triggered. After the tune-away is complete, the first RAT may receive a TCP ACK from the network that includes a timestamp. By comparing the timestamp, it may be determined whether the TCP ACK corresponds to the original TCP packet transmission. If the timestamp of the TCP ACK matches the timestamp of the transmitted TCP packet, then the TCP ACK can be determined to correspond to the TCP packet. The prior value of the congestion window may then be restored rather than having it remain at one because of the RTO. Retransmission can also be terminated for the packet. This increases the data throughput of the first RAT. If the TCP ACK does not correspond to the TCP packet, the first RAT may retransmit the TCP packet. This process may implemented by a mobile communication device and/or on a network base station for downlink communications.
In other examples, a TCP adaption sub-layer may be added to a packet data convergence protocol (PDCP) layer of the modem. A first RAT may transmit a TCP packet to a network, and receive a HARQ or RLC ACK from the network. The HARQ/RLC ACK may be passed to the TCP adaption sub-layer, which generates a local TCP ACK from the HARQ/RLC ACK. A receive window value of the TCP ACK may be chosen depending on whether there is an upcoming tune-away. If there is a tune-away, the receive window value may be set to zero, whereas if there is no tune-away the prior receive window value may be maintained. The local TCP ACK is passed to the TCP layer (e.g., a high level operating system (HLOS) or application) (e.g., instead of a remote TCP ACK from the network) to indicate to the TCP layer that the TCP packet is successfully received by the network. After the tune-away is  complete, the first RAT may still receive a remote TCP ACK from the network, and may accordingly ignore the remote TCP ACK as it sent the local TCP ACK. If the first RAT does not receive a remote TCP ACK, a determination can be made that a packet loss has occurred and the TCP packet can be retransmitted. This process may also be implemented by a mobile communication device and/or on a network base station for downlink communications.
In other examples, before a tune-away begins, a previously received TCP ACK on the first RAT may be buffered. During the tune-away, the buffered TCP ACK can be delivered to the TCP layer (e.g., the HLOS or application) at an interval that is less than a RTO threshold time. This may result in the HLOS or application reducing the congestion window value (e.g., by half) , but not as much as if a RTO is declared. When the tune-away ends the first RAT may resume receiving TCP responses from the network.
Various examples may be implemented within a variety of communication systems 100, such as at least two mobile telephony networks, an example of which is illustrated in FIG. 1. A first mobile network 102 and a second mobile network 104 typically each include a plurality of cellular base stations (e.g., a first base station 130 and a second base station 140) . A first mobile communication device 110 may be in communication with the first mobile network 102 through a cellular connection 132 to the first base station 130. The first mobile communication device 110 may also be in communication with the second mobile network 104 through a cellular connection 142 to the second base station 140. The first base station 130 may be in communication with the first mobile network 102 over a wired connection 134. The second base station 140 may be in communication with the second mobile network 104 over a wired connection 144.
A second mobile communication device 120 may similarly communicate with the first mobile network 102 through the cellular connection 132 to the first base station 130. The second mobile communication device 120 may also communicate  with the second mobile network 104 through the cellular connection 142 to the second base station 140. The  cellular connections  132 and 142 may be made through two-way wireless communication links, such as Third Generation (3G) , Fourth Generation (4G) , Long Term Evolution (LTE) , Time Division Multiple Access (TDMA) , Code Division Multiple Access (CDMA) , Wideband CDMA (WCDMA) , Global System for Mobile Communications (GSM) , Universal Mobile Telecommunications Systems (UMTS) , and other mobile telephony communication technologies.
While the  mobile communication devices  110, 120 are shown connected to the first mobile network 102 and, optionally, to the second mobile network 104, in some examples (not shown) , the  mobile communication devices  110, 120 may include two or more RATs to two or more mobile networks and may connect to those RATs in a manner similar to those described herein.
In some examples, the first mobile communication device 110 may optionally establish a wireless connection 152 with a peripheral device 150 used in connection with the first mobile communication device 110. For example, the first mobile communication device 110 may communicate over a
Figure PCTCN2016101804-appb-000001
link with a Bluetooth-enabled personal computing device (e.g., a “smart watch” ) . In some examples, the first mobile communication device 110 may optionally establish a wireless connection 162 with a wireless access point 160, such as over a Wi-Fi connection. The wireless access point 160 may be configured to connect to the Internet 164 or another network over a wired connection 166.
While not illustrated, the second mobile communication device 120 may similarly be configured to connect with the peripheral device 150 and/or the wireless access point 160 over wireless links.
FIG. 2 is a functional block diagram of a communication device 200 for communicating in a wireless network. Communication device 200 may include a multi-SIM mobile communication device and/or an access point suitable for  implementing various examples. With reference to FIGS. 1–2, the communication device 200 may be similar to one or more of the  mobile communication devices  110, 120,  base station  130, 140, access point 160, etc., as described. The communication device 200 as a multi-SIM mobile communication device may optionally include a first SIM interface 202a, which may receive a first identity module SIM-1 204a that is associated with a first subscription. The communication device 200 may also optionally include a second SIM interface 202b, which may receive an optional second identity module SIM-2 204b that is associated with a second subscription.
A SIM in various examples may be a Universal Integrated Circuit Card (UICC) that is configured with SIM and/or Universal SIM applications, enabling access to, for example, GSM and/or UMTS networks. The UICC may also provide storage for a phone book and other applications. Alternatively, in a CDMA network, a SIM may be a UICC removable user identity module (R-UIM) or a CDMA subscriber identity module (CSIM) on a card. A SIM card may have a central processing unit (CPU) , read only memory (ROM) , random access memory (RAM) , electrically erasable programmable read only memory (EEPROM) and input/out (I/O) circuits.
A SIM used in various examples may contain user account information, an international mobile subscriber identity (IMSI) , a set of SIM application toolkit (SAT) commands, and storage space for phone book contacts. A SIM card may further store home identifiers (e.g., a System Identification Number (SID) /Network Identification Number (NID) pair, a Home Public Land Mobile Number (HPLMN) code, etc. ) to indicate the SIM card network operator provider. An Integrated Circuit Card Identity (ICCID) SIM serial number may be printed on the SIM card for identification. However, a SIM may be implemented within a portion of memory of the multi-SIM mobile communication device 200 (e.g., in a memory 214) , and thus need not be a separate or removable circuit, chip or card.
The communication device 200 may include at least one controller, such as a general processor 206, which may optionally be coupled with a coder/decoder  (CODEC) 208. The CODEC 208 may in turn be optionally coupled with a speaker 210 and a microphone 212. The general processor 206 may also be coupled with the memory 214. The memory 214 may be a non-transitory computer-readable storage medium that stores processor-executable instructions. For example, the instructions may include routing communication data relating to the first or second subscription though a corresponding baseband-RF resource chain. The memory 214 may store a high level operating system, as well as user application software and executable instructions.
The general processor 206 and the memory 214 may each be coupled with at least one baseband modem processor 216. Each SIM and/or RAT in the communication device 200 (e.g., the SIM-1 204a and/or the SIM-2 204b) may be associated with a baseband-RF resource chain. A baseband-RF resource chain may include the baseband modem processor 216, which may perform baseband/modem functions for communications with/controlling a RAT, and may include one or more amplifiers and radios, referred to generally herein as RF resources (e.g., RF resource 218) . In some examples, baseband-RF resource chains may share the baseband modem processor 216 (i.e., a single device that performs baseband/modem functions for all RATs on the multi-SIM mobile communication device 200) . In other examples, each baseband-RF resource chain may include physically or logically separate baseband processors (e.g., BB1, BB2) .
The RF resource 218 may be a transceiver that performs transmit/receive functions for each of the SIMs/RATs on the communication device 200 (e.g., a multi-SIM mobile communication device) . The RF resource 218 may include separate transmit and receive circuitry, or may include a transceiver that combines transmitter and receiver functions. In some examples, the RF resource 218 may include multiple receive circuitries. The RF resource 218 may be coupled with a wireless antenna (e.g., a wireless antenna 220) . The RF resource 218 may also be coupled with the baseband modem processor 216.
In some examples, the general processor 206, the memory 214, the baseband processor (s) 216, and the RF resource 218 may be included in the communication device 200 as a system-on-chip 250. In some examples, the first and  second SIMs  204a, 204b and the corresponding  interfaces  202a, 202b may be external to the system-on-chip 250.
Various input and output devices may be coupled with components on the system-on-chip 250, such as interfaces or controllers. Example user input components suitable for use in the communication device 200 may include, but are not limited to, an optional keypad 224, an optional touchscreen display 226, and the optional microphone 212. In some examples, the keypad 224, the touchscreen display 226, the microphone 212, or a combination thereof, may perform the function of receiving a request to initiate an outgoing call. For example, the touchscreen display 226 may receive a selection of a contact from a contact list or receive a telephone number. In another example, either or both of the touchscreen display 226 and the microphone 212 may perform the function of receiving a request to initiate an outgoing call. For example, the touchscreen display 226 may receive selection of a contact from a contact list or receive a telephone number. As another example, the request to initiate the outgoing call may be in the form of a voice command received via the microphone 212. Interfaces may be provided between the various software modules and functions in the communication device 200 to enable communication between them, as is known in the art.
Functioning together, the two  SIMs  204a, 204b, the baseband processor BB1, BB2, the RF resource 218, and the wireless antenna 220 may constitute two or more radio access technologies (RATs) . For example, the communication device 200 may be a LTE communication device that includes a SIM, baseband processor, and/or RF resource configured to support two different RATs, such as LTE, WCDMA, and GSM. More RATs may be supported on the multi-SIM mobile communication device 200 by  adding more SIM cards, SIM interfaces, RF resources, and antennae for connecting to additional mobile networks.
In some examples (not shown) , the communication device 200 may include, among other things, additional SIM cards, SIM interfaces, a plurality of RF resources associated with the additional SIM cards, and additional antennae for supporting subscriptions communications with additional mobile networks. As described, the communication device 200 can be a base station or access point, and may not include the one or  more SIMs  204a, 204b or associated  interfaces  202a, 202b, etc.
The communication device 200 may also include a TCP layer component 260 for managing ACKs or other HARQ related parameters at a TCP layer of the communication device 200 in accordance with aspects described herein. Though shown as coupled with general processor 206, TCP layer component 260 may be coupled with substantially any processor of communication device 200, such as baseband processor 216, one or more modem processors, etc., to provide the functions described herein. Similarly, for example, at least a portion of TCP layer component 260 may be stored in or otherwise utilize memory 214 to execute one or more associated instructions, store or retrieve one or more associated parameters, etc.
For example, one or more of  processors  206, 216, etc. and/or memory 214 may execute actions or operations defined by TCP layer component 260 or its subcomponents. For instance, the one or more of  processors  206, 216, etc. and/or memory 214 may execute actions or operations defined by an optional timestamping component 262 for determining whether to include a timestamp on a TCP packet (e.g., a TCP ACK or other TCP packet) . In an aspect, for example, timestamping component 262 may include hardware (e.g., one or more processor modules of the one or  more processors  206, 216, etc. ) and/or computer-readable code or instructions stored in memory 214 and executable by at least one of the one or  more processors  206, 216, etc. to perform the specially configured timestamping operations described herein. Further, for instance, the one or more of  processors  206, 216, etc. and/or  memory 214 may execute actions or operations defined by an optional ACK generating component 264 for generating a TCP ACK based on a HARQ or RLC ACK, a duplicate ACK, etc. In an aspect, for example, ACK generating component 264 may include hardware (e.g., one or more processor modules of the one or  more processors  206, 216, etc. ) and/or computer-readable code or instructions stored in memory 214 and executable by at least one of the one or  more processors  206, 216, etc. to perform the specially configured ACK generating operations described herein.
FIG. 3 illustrates conventional TCP communications between a multi-SIM multi-standby mobile communication device and a network in the presence of tune-aways. The call flow diagram 300 includes a mobile communication device 302 having a first RAT 304 and a second RAT 306. The first RAT 304 and the second RAT 306 may be associated with the same subscription or different subscriptions on the mobile communication device. For example, the mobile communication device 302 may be a MSMS mobile communication device, such as a DSDS mobile communication device, and the first RAT 304 may be associated with a first subscription and the second RAT 306 may be associated with a second subscription. The first RAT 304 and the second RAT 306 may utilize a shared RF resource on the mobile communication device 302 (e.g., RF resource 218) . The first RAT 304 communicates with a first network 308, while the second RAT 306 communicates with a second network 310. If the first RAT 304 and the second RAT 306 share the same subscription, the first network 308 may be the same as the second network 310 or under the control of the same network operator.
The first RAT 304 may be in TCP communication with the first network 308. The first RAT 304 may transmit a TCP packet n 312 to the first network 308 during uplink TCP communications with the first network 308. In response, the first network 308 may transmit a HARQ ACK 314 to the first RAT 304 acknowledging receipt of at least a portion of (e.g., a MAC layer protocol data unit (PDU) or other segment of) the TCP packet n 312 as part of the HARQ transmission process on the medium access  control (MAC) layer. The HARQ ACK 314 may arrive quickly but may not be reliable (e.g., higher rates of false positives or false negatives) and/or may correspond to a portion of the TCP packet. The first network 308 may also transmit a RLC ACK 316 to the first RAT 304 acknowledging receipt of at least a portion of (e.g., a RLC layer protocol data unit (PDU) or other segment of) the TCP packet n 312 as part of the transmission process on the RLC layer. The RLC ACK 316 may be used to fix the residual errors of the lower layers, such as errors in the HARQ transmission process. The HARQ ACK 314 and the RLC ACK 316 may be transmitted after receiving the TCP packet n 312 (or one or more related segments) but before a tune-away 318.
After receiving the HARQ ACK 314 and the RLC ACK 316, the mobile communication device 302 may perform the tune-away 318 of the shared RF resource to the second RAT 306 so that the second RAT 306 may perform idle mode operations. During the tune-away 318 the first RAT 304 is unable to receive messages from the first network 308, including any TCP ACKs. In addition, the TCP layer of the mobile communication device 302 may not be aware of the tune-away 318, and so may continue to keep sending data to the modem layers for transmission until the transmission window (twnd) is exhausted (i.e., equals zero) .
The mobile communication device 302 may perform a tune-back 320 to the first RAT 304 when the tune-away 318 is complete. The first RAT 304 may not have received any TCP ACKs during the tune-away 318. The duration of the tune-away 318 may be longer than a RTO threshold time. When the RTO threshold time is exceeded, the modem may trigger a RTO on the first RAT 304 in operation 324. This reduces the size of the congestion window (cwnd) value to one. The first RAT 304 may also have to follow a slow start transmission process in operation 326. The slow start transmission process may gradually increase the congestion window value as TCP ACKs are received again, but during this time the data throughput of the first RAT 304 is reduced. Thus, the tune-away 318 may negatively impact the data throughput of TCP communications of the first RAT 304.
In addition, because the first RAT 304 did not receive any TCP ACKs before the RTO, the first RAT 304 may send a retransmission 328 of the TCP packet n 312 after the tune-away 318 is complete. At some later time, the first network 308 may transmit a TCP ACK 330 for packet n. The TCP ACK 330 arrives in a longer time frame than the HARQ ACK 314 and the RLC ACK 316. However, the first RAT 304 may be unable to determine whether the TCP ACK 330 corresponds to the original transmission of the TCP packet n 312 or the retransmission 328.
Some solutions resolve this uncertainty by including a timestamp in the TCP header of a transmitted TCP packet. The network may include the same timestamp in the TCP ACK corresponding to the TCP packet. By comparing the timestamps, the mobile communication device may determine whether the TCP ACK corresponds to the original transmission or the retransmission of the TCP packet. If the TCP ACK corresponds to the original transmission, the mobile communication device may restore the congestion window value to the value that existed before the RTO was triggered and stop retransmission. However, adding a timestamp to each TCP packet may increase the data overhead by up to 12 bytes. In order to save or conserve power and data capacity, the HLOS of the mobile communication device may often disable the timestamp feature in TCP communications.
Various examples described herein dynamically enable the timestamps to be used in TCP communications at certain times, for example in the presence of tune-aways. FIG. 4A illustrates an example of call flows and message exchanges for dynamically utilizing timestamps in TCP communications on a mobile communication device in the presence of tune-aways according to various examples. The call flow diagram 400a illustrates communications of a mobile communication device 402 having a first RAT 404 and a second RAT 406. The mobile communication device 402 may include a TCP layer component 260 (and/or one or more related subcomponent) , as described with respect to communication device 200 in FIG. 2. The first RAT 404 and the second RAT 406 may be associated with the  same subscription or different subscriptions on the mobile communication device 402. For example, the mobile communication device 402 may be a MSMS mobile communication device, such as a DSDS mobile communication device, and the first RAT 404 may be associated with a first subscription and the second RAT 406 may be associated with a second subscription. The first RAT 404 and the second RAT 406 may utilize a shared RF resource (e.g., RF resources 218) on the mobile communication device 402. The first RAT 404 communicates with a first network 408, while the second RAT 406 communicates with a second network 410. If the first RAT 404 and the second RAT 406 share the same subscription, the first network 408 may be the same as the second network 410 or under the control of the same network operator.
The first RAT 404 and the first network 408 may be engaged in uplink TCP communications. The mobile communication device 402 (e.g., via timestamping component 262 operating in conjunction with one or  more processors  206, 216, memory 214, etc. ) may identify an upcoming tune-away 420 from the first RAT 404 to the second RAT 406. The mobile communication device 402 (e.g., via timestamping component 262 operating in conjunction with one or  more processors  206, 216, memory 214, etc. ) may accordingly add a timestamp to a TCP packet n 414 in operation 412. The TCP packet n 414 may be the last packet in queue for transmission before the tune-away 420 begins. Tune-aways may be periodically scheduled, so the modem (e.g., via timestamping component 262 operating in conjunction with one or  more processors  206, 216, memory 214, etc. ) may identify if there is an upcoming tune-away during TCP packet transmission. The timestamp added to the TCP packet n 414 may be the current time when the timestamp is added.
In some examples, timestamping component 262 (e.g., operating in conjunction with one or  more processors  206, 216, memory 214, etc. ) can add an offset to the timestamp, where the offset is based on the estimated duration of the tune-away 420. In some examples, the modem of the mobile communication device  402 (e.g., via timestamping component 262 operating in conjunction with one or  more processors  206, 216, memory 214, etc. ) may add the timestamp to the TCP packet n 414 through deep packet inspection. For example, the modem (e.g., via timestamping component 262 operating in conjunction with one or  more processors  206, 216, memory 214, etc. ) can add the timestamp based on determining a portion of the TCP header to which to add the timestamp (e.g., locating a header or other portion of the TCP packet via deep packet inspection) . The modem may also filter the TCP packets to obtain TCP packet n for adding the timestamp, where filtering can be based on a 5-tuple filter to obtain the TCP packets relevant for the communication that is to be timestamped.
In any case, the header of the TCP packet n 414 may include a timestamp value field that contains a current time and an offset. In other examples, the modem may identify the upcoming tune-away 420 and the tune-away information is sent to a HLOS executing on the mobile communication device 402 and/or an associated application. In this example, the HLOS/application may dynamically enable the addition of the timestamp to the TCP packet n 414 before the tune-away 420 is about to start (e.g., for packets occurring following a time when the tune-away is determined to occur) , and disable the timestamp addition after the tune-away 420 is complete. The HLOS/application can add the timestamp to all TCP packets associated with the HLOS/application without necessarily filtering the TCP packets. The HLOS/application may also add an offset to the timestamp based on the estimated duration of the tune-away 420.
Once the timestamp has been added to the TCP packet n 414, the TCP packet n 414 may be transmitted to the first network 408. The first network 408 may transmit a HARQ ACK 416 and/or a RLC ACK 418 before the tune-away 420 begins indicating receipt of the TCP packet n 414 on the lower modem layers. The mobile communication device 402 may then initiate the tune-away 420 and tune the shared RF resource to the second RAT 406 to perform idle mode operations. During the  tune-away 420 the first RAT 404 may not be able to receive messages from the first network 408. The mobile communication device 402 may then perform a tune-back 422 to the first RAT 404.
During or after the end of the tune-away 420, the first RAT 404 may trigger a RTO if the duration of the tune-away 420 exceeds a RTO threshold time in operation 424. As part of the RTO, the congestion window value may be set to one. In response to the RTO, the first RAT 404 may retransmit TCP packet n 414 as retransmission 426. The first network 408 may then transmit a TCP ACK 428 that includes a timestamp. The first network 408 may be configured to detect when a timestamp is included in a received TCP packet and include the same timestamp in the corresponding TCP ACK. The modem of the mobile communication device 402 (e.g., via timestamping component 262 operating in conjunction with one or  more processors  206, 216, memory 214, etc. ) may compare the timestamps of the TCP packet n 414 and the TCP ACK 428 in operation 430. If the timestamps match, then the TCP ACK 428 corresponds to the TCP packet n 414. In this case, the modem may then restore the congestion window value of the first RAT 404 to the value that existed prior to the RTO. For example, if congestion window value was five before the RTO, then the modem may restore the value from one to five. This allows the data throughput of the first RAT 404 to return to the same level as before the tune-away 420. If the timestamps do not match, the first RAT 404 may keep the current congestion window value of one and initiate a slow start procedure to gradually increase the congestion window value. Thus by identifying upcoming tune-aways, the mobile communication device 402 may dynamically enable timestamping of TCP packets that are sent before the tune-aways begin. After the tune-aways end, the TCP packets may be transmitted without timestamps (e.g., timestamping component 262 operating in conjunction with one or  more processors  206, 216, memory 214, etc. can cease adding timestamps to the TCP packets) .
Dynamic addition of timestamps may also be done by the network base station on downlink TCP communications. An example of this is illustrated in the call flow diagram 400b shown in FIG. 4B. If the network base station knows the tune-away cycle and duration (e.g., from mobile communication device signaling) , the network can dynamically enable or disable a TCP timestamp. For example, a base station (e.g., eNodeB) of a first network 408, which may be and/or include one or more components of communication device 200, may receive a tune-away schedule of the mobile communication device 402 in operation 432. The mobile communication device 402 may be configured to transmit tune-away scheduling information to the first network 408. The first network 408 may then (e.g., via timestamping component 262 operating in conjunction with one or  more processors  206, 216, memory 214, etc. ) dynamically add a timestamp to a TCP packet m 436 that is scheduled to be transmitted just before a tune-away 442 on the mobile communication device 402 begins in operation 436. The timestamp may be the current time when the timestamp is added. In some examples, the timestamp may also include an offset that is based on the estimated duration of the tune-away 442.
The first network 408 may then transmit the TCP packet m 436 to the first RAT 404. The first RAT 404 may respond by transmitting a HARQ ACK 438 and a RLC ACK 440 indicating receipt of the TCP packet m 436 before the tune-away 442 begins. The mobile communication device 402 may then initiate the tune-away 442 and tune the shared RF resource to the second RAT 406 to perform idle mode operations. During the tune-away 442 the first RAT 404 may not be able to receive messages from the first network 408. The mobile communication device 402 may then perform a tune-back 444 to the first RAT 404.
After the end of the tune-away 442, the first network 408 may trigger a RTO if the duration of the tune-away 442 exceeds a RTO threshold time in operation 446. As part of the RTO, the congestion window value may be set to one. The first network 408 may retransmit the TCP packet m 436 as retransmission 448 in response to the  RTO. The first RAT 404 may then transmit a TCP ACK 450 that includes a timestamp. The mobile communication device 402 may be configured to detect when a timestamp is included in a received TCP packet and include the same timestamp in the corresponding TCP ACK. The first network 408 (e.g., via timestamping component 262 operating in conjunction with one or  more processors  206, 216, memory 214, etc. ) may compare the timestamps of the TCP packet m 436 and the TCP ACK 450 in operation 452. If the timestamps match, then the TCP ACK 450 corresponds to the TCP packet m 436. In this case, the first network 408 may restore the congestion window value of TCP communications with the first RAT 404 to the value that existed prior to the RTO in operation 452. For example, if the congestion window value was five before the RTO, then the first network 408 may restore the value from one to five. This allows the data throughput between the first network 408 and the first RAT 404 to return to the same level as before the tune-away 442. If the timestamps do not match, the first network 408 may keep the current congestion window value of one and initiate a slow start procedure to gradually increase the congestion window value. Thus by identifying upcoming tune-aways, the first network 408 may dynamically enable timestamping of TCP packets (e.g., via timestamping component 262 operating in conjunction with one or  more processors  206, 216, memory 214, etc. ) that are sent before the tune-aways begin. After the tune-aways end, timestamping component 262 (e.g., operating in conjunction with one or  more processors  206, 216, memory 214, etc. ) can cease timestamping the TCP packets.
In other examples described herein, rather than utilizing timestamps a mobile communication device may utilize the HARQ and/or RLC ACKs to locally trigger a TCP ACK in order to avoid data throughput reduction in the presence of tune-aways. An example of this is illustrated in FIG. 5, which shows a diagram 500 of communication layers in a mobile communication device. The mobile communication device may have a modem that controls a shared RF resource (e.g., RF resource 218) utilized by a plurality of RATs on the mobile communication device. The communication layers in the modem may include a physical layer 502, which  includes the network hardware technology of the modem and shared RF resource. The modem may also include a MAC layer 504 that maps logical communication channels to transport communication channels. The modem may also include a RLC layer 506 that is responsible for various functions such as transfer of upper layer protocol data units (PDUs) and error correction. The modem may also include a packet data convergence protocol (PDCP) layer 508 that provides services to upper layers, such as a TCP/IP layer 512 that is part of a HLOS or application executing on the mobile communication device. The services may include transfer of user plane or control plane data, header compression, ciphering, and integrity protection.
In various examples described herein, the PDCP layer 508 may also include a TCP adaption sub-layer 510. In an example, TCP layer component 260, or one or more components thereof such as ACK generating component 264, may be configured to provide or perform one or more of the functions described with respect to the TCP adaptation sub-layer 510 in a mobile communication device, base station, or other network node. The TCP adaption sub-layer 510 may be configured to generate local TCP ACKs from lower level ACKs, such as HARQ ACKs or RLC ACKs. These local TCP ACKs may be delivered to the TCP/IP layer 512 during a tune-away on the mobile communication device rather than waiting for the receipt of a remote TCP ACK from the network, which arrives after the tune-away. Also, TCP ACKs may be delayed or lost due to the tune-away. This can prevent the triggering of a RTO and reduction of data throughput of the RAT engaged in TCP communications.
For example, a first RAT on the mobile communication device may receive an uplink grant from its associated network. When the uplink grant is received, the MAC layer 504 may request transmission data from the PDCP layer 508 via the RLC layer 506. Uplink PDUs that are created by the TCP/IP layer 512 may be delivered to the lower modem layers through the TCP adaption sub-layer 510 and assigned a PDCP sequence number (SN) . TCP packets may be generated from the uplink PDUs, which  are passed through the lower modem layers and transmitted out to the network. The TCP adaption sub-layer 510 may also store a copy of the transmitted TCP packet.
After the mobile communication device transmits the TCP packet to a network, the physical layer 502 may receive a HARQ and/or a RLC ACK 514 from the network acknowledging receipt of one or more MAC layer or RLC layer PDUs that may correspond to the TCP packet. The HARQ/RLC ACK 514 may be passed to the MAC layer 504. The MAC layer 504 may be configured to notify the TCP adaption sub-layer 510 of the HARQ/RLC ACK 514. In response, the TCP adaption sub-layer 510 (e.g., via ACK generating component 264 operating in conjunction with one or  more processors  206, 216, memory 214, etc. ) may generate a local TCP ACK 516 from the HARQ/RLC ACK 514. If there is no upcoming tune-away, the receive window value of the local TCP ACK 516 may be set to equal the receive window value in the last received remote TCP ACK from the network. If there is an upcoming tune-away, the receive window value of the local TCP ACK 516 may be set to equal zero in order to suspend the transmission of TCP packets during the tune-away. The TCP adaption sub-layer 510 (e.g., via ACK generating component 264 operating in conjunction with one or  more processors  206, 216, memory 214, etc. ) may deliver the local TCP ACK 516 to the TCP/IP layer 512 in the HLOS or application. Thus the TCP/IP layer 512 may determine that the TCP packet was successfully received and no RTO is triggered if a tune-away is initiated after the first RAT receives the HARQ/RLC ACK 514. If there are buffered TCP packets for transmission in the PDCP layer 508, the TCP adaption sub-layer 510 (e.g., via ACK generating component 264 operating in conjunction with one or  more processors  206, 216, memory 214, etc. ) may also generate one or more TCP ACKs for the buffered TCP packets with a receive window value of zero to prevent triggering a RTO.
At a later time after the tune-away is complete, the network may transmit a remote TCP ACK to the first RAT. The TCP adaption sub-layer 510 may be notified of the receipt of the remote TCP ACK. However, because the local TCP ACK 516  has already been delivered to the TCP/IP layer 512, the TCP adaption sub-layer 510 may ignore the remote TCP ACK. The TCP adaption sub-layer 510 may also delete the locally stored copy of the transmitted TCP packet upon receipt of the remote TCP ACK. If a remote TCP ACK is not received, the TCP packet may have been lost in either the air interface or the wireline link. If the packet loss occurs in the air interface, the RLC retransmission mechanism may initiate. If the packet loss occurs in the wireline link, the TCP adaption sub-layer 510 may detect packet loss when duplicate remote TCP ACKs are received or if a RTO is triggered, and then initiate retransmission of the TCP packet.
A network base station may also generate local TCP ACKs during downlink TCP communications as well. For example, a network base station may have a TCP handling sub-layer in the PDCP layer similar to the TCP adaption sub-layer 510 of the mobile communication device. For example, the network base station may receive a HARQ ACK or RLC ACK from the first RAT of the mobile communication device in response to a TCP packet transmission. The TCP packet may be stored in the TCP adaption sublayer of the network base station. The TCP adaption sub-layer (e.g., via ACK generating component 264 operating in conjunction with one or  more processors  206, 216, memory 214, etc. ) may generate a local TCP ACK from the HARQ ACK or RLC ACK and deliver the local TCP ACK to the TCP/IP layer of the network base station. The network base station may then wait for the receipt of a subsequent remote ACK, such as a remote TCP ACK if the local TCP ACK was generated from a RLC ACK, or in the alternative a remote RLC ACK if the local TCP ACK was generated from a HARQ ACK. Because there is no further wireline transmission and the air interface is the last part of the TCP transmission, the RLC ACK may be indicative of whether the transmission was successful on the TCP layer as well. Further, the cyclic redundancy check (CRC) bits for the RLC/HARQ ACK are longer than for the TCP ACK, so there is less error. Thus in the case when the RLC ACK is received, the locally acknowledged (ACKed) TCP packets stored in the TCP adaption sub-layer may be deleted.
If the network base station later receives a subsequent remote ACK (e.g., TCP or RLC ACK) from the mobile communication device, the TCP adaption sub-layer may determine whether there is any additional information in the subsequent remote ACK aside from the acknowledgement itself. If there is additional information, this information may be delivered to the TCP/IP layer of the network base station. Otherwise, the subsequent remote ACK may be ignored. In some examples, the mobile communication device may be configured by the network base station not to transmit any TCP ACKs, but rather HARQ and RLC ACKs. Thus, both the mobile communication device and the network base station may be configured to generate local TCP ACKs in order to avoid data throughput reduction in the presence of tune-aways.
In other examples described herein, rather than utilizing timestamps or locally generated TCP ACKs, a mobile communication device may utilize TCP ACK buffers to lessen data throughput reduction in the presence of tune-aways. An example of this is illustrated in FIG. 6, which shows the call flow diagram 600 including a mobile communication device 602 having a first RAT 604 and a second RAT 606. The first RAT 604 and the second RAT 606 may be associated with the same subscription or different subscriptions on the mobile communication device. For example, the mobile communication device 602 may be a MSMS mobile communication device, such as a DSDS mobile communication device, and the first RAT 604 may be associated with a first subscription and the second RAT 606 may be associated with a second subscription. The first RAT 604 and the second RAT 606 may utilize a shared RF resource (e.g., RF resource 218) on the mobile communication device 602. The first RAT 604 communicates with a first network 608, while the second RAT 606 communicates with a second network 610. If the first RAT 604 and the second RAT 606 share the same subscription, the first network 608 may be the same as the second network 610, or both networks may be under the control of the same network operator.
The first RAT 604 may be in TCP communication with the first network 608. The first network 608 may transmit a TCP ACK 612 to the first RAT 604. The TCP ACK 612 may be in response to a packet n-1 that the first RAT 604 previously transmitted to the first network 608. The first RAT 604 may then transmit a TCP packet n 614 to the first network 608. The modem on the mobile communication device 602 (e.g., via ACK generating component 264 operating in conjunction with one or  more processors  206, 216, memory 214, etc. ) may determine whether there is an upcoming tune-away in operation 616. As described, this can occur via receiving an indication of one or more parameters related to a tune-away schedule, etc.
If there is an upcoming tune-away, the modem may (e.g., via ACK generating component 264 operating in conjunction with one or  more processors  206, 216, memory 214, etc. ) buffer the previously received TCP ACK 612 for packet n-1 in operation 618 (e.g., buffer the TCP ACK 612 in memory 214, where the memory 214 may include one or more ACK buffers for this purpose) . The mobile communication device 602 may then perform a tune-away 620 from the first RAT 604 to the second RAT 606 so that the second RAT 606 may perform idle mode operations. During the tune-away 620, the modem (e.g., via ACK generating component 264 operating in conjunction with one or  more processors  206, 216, memory 214, etc. ) may deliver the buffered TCP ACK to the TCP/IP layer of the mobile communication device 602 (e.g., to a HLOS or application executing on the mobile communication device 602) at regular time intervals T in operation 622. The time interval may be selected to be shorter than the RTO threshold time in order to avoid triggering a RTO during the tune-away 620.
Because the buffered TCP ACK is a duplicate of a previously received TCP ACK, the HLOS/application may reduce the congestion window value of the first RAT 604. However, the congestion window value is usually reduced by half when receiving duplicate TCP ACKs rather than down to one if a RTO is triggered. Thus by buffering and delivering duplicated TCP ACKs during the tune-away 620, the data  throughput of the first RAT 604 may be higher than if no buffered TCP ACKs were delivered and a RTO is triggered. After the tune-away 620 ends and the mobile communication device 602 performs a tune-back 624 to the first RAT 604, the first RAT 604 may resume normal transmission procedures. For example, the first network 608 may transmit a TCP ACK 626 corresponding to the packet n. The first RAT 604 may receive the TCP ACK 626 and deliver it to the HLOS/application. In this manner, buffered TCP ACKs may be used to reduce the impact of tune-aways on the data throughput of the first RAT 604.
Although the operations described below in FIGs. 7-11 are presented in a particular order, it should be understood that the ordering of the actions and the components performing the actions may be varied, depending on the implementation. Moreover, it should be understood that the following actions or functions may be performed by a specially-programmed processor, a processor executing specially-programmed software or computer-readable media, or by any other combination of a hardware component and/or a software component capable of performing the described actions or functions. In addition, any of the functions in particular blocks may be optional in a given implementation of the examples in FIGs. 7-11.
FIG. 7 illustrates a method 700 for utilizing timestamps in TCP communications in a mobile communication device according to various examples. The method 700 may be implemented with a processor (e.g., the general processor 206, the baseband modem processor 216, a separate controller, and/or the like) of a mobile communication device (such as the  mobile communication devices  110, 120, 402) that supports a first RAT and a second RAT that share an RF resource (e.g., RF resource 218) . The first RAT and the second RAT may share the same subscription, or may be associated with different subscriptions. The first RAT may be engaged in TCP communications with an associated first network.
In determination block 702, the processor (e.g., via timestamp component 262 operating in conjunction with one or  more processors  206, 216, memory 214, etc. )  may determine whether there is an upcoming tune-away from the first RAT, which is engaged in an active communication, to the second RAT. For example, the modem may schedule periodic tune-aways to the second RAT and the periodicity of the tune-aways may be used to determine whether a tune-away is about to occur.
In response to determining that there is no upcoming tune-away from the first RAT to the second RAT (i.e., determination block 702 = “No” ) , the processor may transmit a TCP packet to the first network in block 724. In other words, when there is no upcoming tune-away the processor may follow normal procedures for TCP communications and continue generating and transmitting TCP packets without timestamps.
In response to determining that there is an upcoming tune-away from the first RAT to the second RAT (i.e., determination block 702 = “Yes” ) , the processor may (e.g., via timestamp component 262 operating in conjunction with one or  more processors  206, 216, memory 214, etc. ) add a timestamp to a TCP packet for transmission before the tune-away begins in block 704. The timestamp may be the current time when the timestamp is added to the TCP packet. For example, the modem of the mobile communication device may filter TCP packets (e.g., based on a 5-tuple filter) to obtain the TCP packets which are to include timestamps, and the modem can add the timestamp to the filtered TCP packets (e.g., to an appropriate portion of the TCP packet, such as the TCP packet header) . For example, this may include performing deep packet inspection on the filtered packets to locate the packet header and/or other portion into which the timestamp can be added. Alternatively, a HLOS executing on the mobile communication device may be notified by the modem of the upcoming tune-away and the HLOS may enable the addition of timestamps to the TCP packets. In an aspect, the HLOS can add timestamps to the TCP packets without filtering.
In optional block 706, the processor may add an offset to the timestamp. The value of the offset may be based on the estimated duration of the upcoming tune-away.  For example, the modem and/or the HLOS may determine or estimate the duration of the tune-away (e.g., based on a value configured at the UE based on information provided by an eNB, etc. ) and set the offset equal to the duration of the tune-away. The modem and/or HLOS may then add the offset to the timestamp.
In block 708, the processor may transmit the TCP packet with the timestamp from the first RAT to the first network.
In block 710, the processor may perform a tune-away from the first RAT to the second RAT so that the second RAT may perform idle mode operations.
In block 712, during or after the tune-away an RTO may be triggered on the first RAT because the first RAT does not receive any TCP ACKs during the tune-away. When an RTO is triggered, the congestion window value of the first RAT may be set to one. After the tune-away is complete, the first RAT may retransmit the TCP packet as part of a retransmission process following the RTO.
In block 714, the first RAT may receive a TCP ACK from the first network, and in block 716, the processor (e.g., via timestamp component 262 operating in conjunction with one or  more processors  206, 216, memory 214, etc. ) may compare the timestamps of the transmitted TCP packet and the received TCP ACK.
In determination block 718, the processor may (e.g., via timestamp component 262 operating in conjunction with one or  more processors  206, 216, memory 214, etc. ) determine whether the TCP ACK corresponds to the transmitted TCP packet. For example, if the timestamp of the TCP ACK matches the timestamp of the transmitted TCP packet, then the TCP ACK corresponds to the TCP packet. When the first network receives the TCP packet and generates a TCP ACK in response, the first network may be configured to include the timestamp of the TCP packet in the header of the TCP ACK.
In response to determining that the TCP ACK corresponds to the TCP packet (i.e., determination block 718 = “Yes” ) , the processor may restore a prior congestion window value of the first RAT in block 720. In other words, if the processor determines that the first network successfully received the TCP packet, the effect of the RTO may be reversed by restoring the prior congestion window value rather than leaving it at one. This may prevent a reduction of data throughput on the first RAT even in the presence of a tune-away.
In response to determining that the TCP ACK does not correspond to the TCP packet (i.e., determination block 718 = “No” ) , the processor may keep the current congestion window value of the first RAT in block 722 such that the congestion window value is not changed as the TCP ACK does not correspond to the TCP packet. For example, if the congestion window value was one after the RTO, the congestion value may remain at one. The processor may also initiate a slow start procedure to gradually increase the congestion window value. The method 700 may be repeated for every TCP packet transmission on the first RAT. In this manner, the method 700 provides a way to dynamically add timestamps to uplink TCP transmissions that are interrupted.
FIG. 8 illustrates a method 800 for utilizing timestamps in TCP communications in a network base station according to various examples. The method 800 may be implemented with a processor (e.g., a general processor 206, a baseband modem processor 216, a separate controller, and/or the like) of a network base station (such as a base station of the first network 408) . The network base station may be engaged in TCP communication with a first RAT on a mobile communication device that supports a first RAT and a second RAT sharing an RF resource (e.g., a MSMS mobile communication device) .
In block 802, the network base station may receive a tune-away schedule from the mobile communication device. The tune-away schedule may  specify the times, durations and/or periodicity of scheduled tune-aways from the first RAT to the second RAT in the mobile communication device.
In determination block 804, the processor may (e.g., via timestamp component 262 operating in conjunction with one or  more processors  206, 216, memory 214, etc. ) determine whether there is an upcoming tune-away on the mobile communication device. In response to determining that there is no upcoming tune-away on the mobile communication device (i.e., determination block 804 = “No” ) , the processor may transmit a TCP packet to the mobile communication device in block 824. In other words, when there is no upcoming tune-away the network base station may follow normal procedures for TCP communications and continue generating and transmitting TCP packets without timestamps.
In response to determining that there is an upcoming tune-away on the mobile communication device (i.e., determination block 804 = “Yes” ) , the processor may (e.g., via timestamp component 262 operating in conjunction with one or  more processors  206, 216, memory 214, etc. ) add a timestamp to a TCP packet for transmission before the tune-away begins in block 806. The timestamp may be the current time when the timestamp is added to the TCP packet. The timestamp may be added to the header of the TCP packet.
In optional block 808, the processor may add an offset to the timestamp. The value of the offset may be based on the estimated duration of the upcoming tune-away, which may be determined from the received tune-away schedule.
In block 810, the processor may transmit the TCP packet with the timestamp from the network base station to the mobile communication device.
In block 812, the network base station may trigger a RTO for the TCP communication between the network base station and the mobile communication device. For example, after the TCP packet is transmitted, the mobile communication device may perform a tune-away from the first RAT to the second RAT so that the  second RAT may perform idle mode operations. During the tune-away, a RTO may be triggered on the network base station because it has not received any TCP ACKs during the duration of the tune-away. When a RTO is triggered, the congestion window value of the TCP communication with the mobile communication device may be set to one. The network base station may retransmit the TCP packet as part of a retransmission process following the RTO.
In block 814, the network base station may receive a TCP ACK from the mobile communication device.
In block 816, the processor may (e.g., via timestamp component 262 operating in conjunction with one or  more processors  206, 216, memory 214, etc. ) compare the timestamps of the transmitted TCP packet and the received TCP ACK. In determination block 818, the processor may determine whether the TCP ACK corresponds to the transmitted TCP packet. For example, if the timestamp of the TCP ACK matches the timestamp of the transmitted TCP packet, then the TCP ACK corresponds to the TCP packet. When the mobile communication device receives the TCP packet and generates a TCP ACK in response, the mobile communication device (e.g., via timestamp component 262 operating in conjunction with one or  more processors  206, 216, memory 214, etc. ) may be configured to include the timestamp of the TCP packet in the header of the TCP ACK.
In response to determining that the TCP ACK corresponds to the TCP packet (i.e., determination block 818 = “Yes” ) , the processor may restore a prior congestion window value of the TCP communication with the mobile communication device in block 820. In other words, if the processor determines that the mobile communication device successfully received the TCP packet, the effect of the RTO may be reversed by restoring the prior congestion window value rather than leaving it at one. This may prevent a reduction of data throughput on downlink communications with the mobile communication device even in the presence of a tune-away.
In response to determining that the TCP ACK does not correspond to the TCP packet (i.e., determination block 818 = “No” ) , the processor may keep the current congestion value in block 822. For example, if the congestion window value was one after the RTO, the congestion value may remain one. The processor may also initiate a slow start procedure to gradually increase the congestion window value. The method 800 may be repeated for every TCP packet transmission on the network base station. In this manner, the method 800 provides a way to dynamically add timestamps to downlink TCP transmissions that are interrupted.
FIG. 9 illustrates a method 900 for generating local acknowledgements for TCP communications in a mobile communication device according to various examples. The method 900 may be implemented with a processor (e.g., the general processor 206, the baseband modem processor 216, a separate controller, and/or the like) of a mobile communication device (such as the  mobile communication devices  110, 120, 402) that supports a first RAT and a second RAT that share an RF resource. The first RAT and the second RAT may share the same subscription, or may be associated with different subscriptions. The first RAT may be engaged in TCP communications with an associated first network.
In block 902, the processor of the mobile communication device may transmit a TCP packet from the first RAT to the first network. In block 904, the first RAT may receive a HARQ or RLC ACK corresponding to the TCP packet from the first network. In block 906, the processor of the mobile communication device (e.g., via ACK generating component 264 operating in conjunction with one or  more processors  206, 216, memory 214, etc. ) may generate a local TCP ACK from the HARQ/RLC ACK. For example, a PDCP layer of the modem in the mobile communication device may include a TCP adaption sub-layer as described with reference to FIG. 5. The MAC layer of the modem may notify the TCP adaption sub-layer of the received HARQ/RLC ACK. The TCP adaption sub-layer may generate a local TCP ACK from  the HARQ/RLC ACK. The TCP adaption sub-layer may also store a copy of the transmitted TCP packet.
In determination block 908, the processor (e.g., via ACK generating component 264 operating in conjunction with one or  more processors  206, 216, memory 214, etc. ) may determine whether there is an upcoming tune-away from the first RAT to the second RAT. For example, the modem may schedule periodic tune-aways to the second RAT and the periodicity of the tune-aways may be used to determine whether a tune-away is about to occur.
In response to determining that there is no upcoming tune-away (i.e., determination block 908 = “No” ) , the processor may set a receive window value of the local TCP ACK to a prior receive window value from the last received TCP ACK in block 912. In order words, when there is no tune-away the same data throughput may be maintained on the first RAT.
In block 914, the processor (e.g., via ACK generating component 264 operating in conjunction with one or  more processors  206, 216, memory 214, etc. ) may deliver the local TCP ACK to a HLOS or application executing on the mobile communication device (i.e., deliver to the upper TCP/IP layer) .
In response to determining that there is an upcoming tune-away (i.e., determination block 908 = “Yes” ) , the processor may set a receive window value of the local TCP ACK to zero in block 910. This may prevent the first RAT from transmitting TCP packets during the tune-away.
In block 914, the processor (e.g., via ACK generating component 264 operating in conjunction with one or  more processors  206, 216, memory 214, etc. ) may deliver the local TCP ACK to the HLOS or application executing on the mobile communication device.
In block 916, the processor may perform a tune-away from the first RAT to the second RAT so that the second RAT may perform idle mode operations. As described, this may involve the processor tuning a modem away from the first RAT (e.g., frequency resources associated with first RAT) to a second RAT (e.g., frequency resources associated with the second RAT) for monitoring and/or decoding paging signals, performing measurements related to cell reselection, performing cell reselection, monitoring system information, etc.
In block 918, the processor (e.g., via ACK generating component 264 operating in conjunction with one or  more processors  206, 216, memory 214, etc. ) may generate one or more local TCP ACKs for buffered TCP packets in the PDCP layer of the modem during the tune-away. These local TCP ACKs may also have a receive window value of zero to prevent the triggering of a RTO during the tune-away.
After the tune-away is complete, or after delivering the local TCP ACK to the HLOS or application in the case when there is no tune-away, the processor may determine whether the first RAT has received a remote TCP ACK from the first network in determination block 920. For example, after receiving the TCP packet transmitted in block 902, the first network may generate and transmit a TCP ACK indicating successful reception of the TCP packet.
In response to determining that the first RAT has received a remote TCP ACK from the first network (i.e., determination block 920 = “Yes” ) , the processor may determine whether the remote TCP ACK contains additional information not found in the local TCP ACK in determination block 922.
In response to determining that the remote TCP ACK contains additional information not found in the local TCP ACK (i.e., determination block 922 = “Yes” ) , the processor may deliver the additional information the HLOS/App in block 924.
In response to determining that the remote TCP ACK does not contain additional information not found in the local TCP ACK (i.e., determination block 922  = “No” ) , the processor may ignore the remote TCP ACK in block 926. In other words, if it is confirmed that the first network successfully received the TCP packet and the TCP packet does not contain any additional information, the remote TCP ACK is redundant to the local TCP ACK that was already delivered to the HLOS or application in block 914.
In response to determining that the first RAT has not received a remote TCP ACK from the first network (i.e., determination block 920 = “No” ) , the processor may determine that a loss of the TCP packet has occurred in block 928. For example, the first RAT may receive duplicate remote TCP ACKs that may be indicative of a lost packet, or the processor may check whether a RTO has been triggered.
In block 930, the processor may initiate retransmission of the TCP packet. The method 900 may be repeated for each TCP packet transmission. In this manner, the method 900 provides a way for a mobile communication device to generate local TCP ACKs from lower layer ACKs to prevent data throughput loss during a tune-away.
FIG. 10 illustrates a method 1000 for generating local acknowledgements for TCP communications in a network base station according to various examples. The method 1000 may be implemented with a processor (e.g., a general processor 206, a baseband modem processor 216, a separate controller, and/or the like) of a network base station (such as a base station of the first network 408) . The network base station may be engaged in TCP communication with a first RAT on a mobile communication device that supports a first RAT and a second RAT sharing an RF resource (e.g., a MSMS mobile communication device) .
In block 1002, the processor of the network base station may transmit a TCP packet from the network base station to the first RAT of the mobile communication device. In block 1004, the network base station may receive a HARQ ACK or a RLC ACK corresponding to the TCP packet from the mobile communication device.
In block 1006, the processor of the network base station may (e.g., via ACK generating component 264 operating in conjunction with one or  more processors  206, 216, memory 214, etc. ) generate a local TCP ACK from the HARQ/RLC ACK. For example, a PDCP layer of the network base station may include a TCP adaption sub-layer as described with reference to FIG. 5. The MAC layer may notify the TCP adaption sub-layer of the received HARQ/RLC ACK. The TCP adaption sub-layer may generate a local TCP ACK from the HARQ/RLC ACK. The TCP adaption sub-layer may also store a copy of the transmitted TCP packet. The processor may set a receive window value of the local TCP ACK to a prior receive window value from the last received TCP ACK. This allows the network base station to maintain the same data throughput in the TCP communication with the mobile communication device. In block 1008, the processor may deliver the local TCP ACK to a HLOS or application executing on network base station (i.e., deliver to the upper TCP/IP layer) .
In block 1010, the processor may instruct the mobile communication device to not send a TCP ACK corresponding to the transmitted TCP packet. The instruction may be done through various mobile network signaling mechanisms, such as radio resource control (RRC) signaling or TCP/IP signaling. This may be done so that the mobile communication device transmits the RLC ACK but does not also have to transmit the TCP ACK because the RLC ACK arrives earlier.
In determination block 1012, the processor may determine whether the network base station has received a subsequent remote ACK from the mobile communication device. For example, after receiving the TCP packet transmitted in block 1002, the mobile communication device may first generate and transmit a RLC ACK indicating successful reception of the TCP packet, and then later transmit a TCP ACK for the same TCP packet. If the local TCP ACK was generated from a received HARQ ACK, the subsequent remote ACK may be a RLC ACK. If the local TCP ACK was generated from a received RLC ACK, the subsequent remote ACK may be a TCP ACK
In response to determining that the network base station has received a subsequent remote ACK from the mobile communication device (i.e., determination block 1012 = “Yes” ) , the processor may determine whether the subsequent remote ACK contains additional information not found in the local TCP ACK in determination block 1018.
In response to determining that the subsequent remote ACK contains additional information not found in the local TCP ACK (i.e., determination block 1018 = “Yes” ) , the processor may deliver the additional information to the HLOS or application in block 1020.
In response to determining that the subsequent remote ACK does not contain additional information not found in the local TCP ACK (i.e., determination block 1018 = “No” ) , the processor may ignore the subsequent remote ACK in block 1022. In other words, if it is confirmed that the mobile communication device did successfully receive the TCP packet and did not send any additional information other than the acknowledgement, the subsequent remote ACK is redundant to the local TCP ACK that was already delivered to the HLOS or application in block 1008. The TCP adaption sub-layer may also delete the stored TCP packet when the subsequent remote ACK is received.
In response to determining that the network base station has not received a subsequent remote ACK from the mobile communication device (i.e., determination block 1012 = “No” ) , the processor may determine that a loss of the TCP packet has occurred in block 1014, and initiate retransmission of the TCP packet in block 1016. For example, the network base station may receive duplicate remote TCP ACKs that may be indicative of a lost packet, or the processor may check whether a RTO has been triggered.
The method 1000 may be repeated for each transmitted TCP packet. In this manner, the method 1000 provides a way for a network base station to generate local  TCP ACKs from lower layer ACKs to prevent data throughput loss when communicating with a mobile communication device that may be performing tune-aways.
FIG. 11 illustrates a method 1100 for utilizing acknowledgement buffers for TCP communications in a mobile communication device according to various examples. The method 1100 may be implemented with a processor (e.g., the general processor 206, the baseband modem processor 216, a separate controller, and/or the like) of a mobile communication device (such as the  mobile communication devices  110, 120, 602) that supports a first RAT and a second RAT that share an RF resource. The first RAT and the second RAT may share the same subscription, or may be associated with different subscriptions. The first RAT may be engaged in TCP communications with an associated first network.
In block 1102, the processor of the mobile communication device may transmit a TCP packet from the first RAT to the first network. As described, the TCP packet can be transmitted in one or more lower layer PDUs.
In determination block 1104, the processor (e.g., via ACK generating component 264 operating in conjunction with one or  more processors  206, 216, memory 214, etc. ) may determine there is an upcoming tune-away before receiving a TCP response from the first network. For example, the processor may estimate the average time that the first network takes to send a TCP response and compare it to the tune-away schedule on the mobile communication device.
In response to determining that there is no upcoming tune-away before receiving a TCP response from the first network (i.e., determination block 1104 =“No” ) , the processor may receive the TCP response from the first network in block 1118.
In response to determining that there is an upcoming tune-away before receiving a TCP response from the first network (i.e., determination block 1104 = “Yes” ) , the processor (e.g., via ACK generating component 264 operating in conjunction with one or  more processors  206, 216, memory 214, etc. ) may buffer a previously received TCP ACK in block 1106 (e.g., in memory 214) .
In block 1108, the processor may initiate the tune-away from the first RAT to the second RAT.
In block 1110, the processor may initiate a timer with a time interval T. The duration of the timer may be chosen to be shorter than a RTO threshold time so that a RTO is not triggered during the tune-away.
In determination block 1112, the processor may determine whether the tune-away has ended.
In response to determining that the tune-away has ended (i.e., determination block 1112 = “Yes” ) , the processor may the processor may receive the TCP response from the first network in block 1118.
In response to determining that the tune-away has not ended (i.e., determination block 1112 = “No” ) , the processor may determine whether the timer has expired in determination block 1114. In response to determining that the timer has not expired (i.e., determination block 1114 = “No” ) , the processor may continue to wait until either the tune-away has ended or the timer has expired in determination block 1112.
In response to determining that the timer has expired (i.e., determination block 1114 = “Yes” ) , the processor (e.g., via ACK generating component 264 operating in conjunction with one or  more processors  206, 216, memory 214, etc. ) may deliver the buffered TCP ACK to a HLOS or application executing on the mobile communication device (i.e., deliver to the upper TCP/IP layer) in block 1116. The HLOS or application may respond to the duplicate TCP ACK by reducing the congestion window value of the first RAT (e.g., reducing the value by half) . However, the  reduction is usually less than if no TCP ACK is delivered and an RTO is triggered (i.e., the congestion window value may be set to one in a RTO) . The processor may then reinitiate the timer in block 1110. The processor may continue to deliver the buffered TCP ACK to the HLOS or application according to the timer period until the tune-away has ended. Before the RTO time expires (i.e., the time interval T has passed) , the mobile communication device may deliver the buffered TCP ACKs as fake duplicate TCP ACPS so that an RTO is not triggered. In this manner, the method 1100 provides a way for a mobile communication device to reduce the impact of tune-aways to data throughput by utilizing buffered TCP ACKs before an RTO is triggered.
Various examples may be implemented in any of a variety of communication devices, an example of which (e.g., multi-SIM mobile communication device 1200) is illustrated in FIG. 12. The multi-SIM mobile communication device 1200 may be similar to the  mobile communication devices  110, 120, 200, 402, and 602 as described. As such, the multi-SIM mobile communication device 1200 may implement the  methods  700, 900, and 1100 according to various examples.
The multi-SIM mobile communication device 1200 may include a processor 1202 coupled with a touchscreen controller 1204 and an internal memory 1206. The processor 1202 may be one or more multi-core integrated circuits designated for general or specific processing tasks. For example, the processor 1202 can be similar to one or more of  processors  206, 216, and may implement one or more actions associated with a TCP layer component 260. The internal memory 1206 may 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 internal memory 1206 may be similar to memory 214 and may store one or more instructions or parameters related to a TCP layer component 260. The touchscreen controller 1204 and the processor 1202 may also be coupled with a touchscreen panel 1212, such as a resistive-sensing touchscreen, capacitive-sensing touchscreen, infrared sensing  touchscreen, etc. Additionally, the display of the multi-SIM mobile communication device 1200 need not have touch screen capability.
The multi-SIM mobile communication device 1200 may have one or more cellular network transceivers 1208 coupled with the processor 1202 and to one or more antennas 1210 and configured for sending and receiving cellular communications. The one or more transceivers 1208 and the one or more antennas 1210 may be used with the herein-mentioned circuitry to implement various example methods. The multi-SIM mobile communication device 1200 may include one or more SIM cards 1216 coupled with the one or more transceivers 1208 and/or the processor 1202 and may be configured as described herein.
The multi-SIM mobile communication device 1200 may also include speakers 1214 for providing audio outputs. The multi-SIM mobile communication device 1200 may also include a housing 1220, constructed of a plastic, metal, or a combination of materials, for containing all or some of the components discussed herein. The multi-SIM mobile communication device 1200 may include a power source 1222 coupled with the processor 1202, such as a disposable or rechargeable battery. The rechargeable battery may also be coupled with the peripheral device connection port to receive a charging current from a source external to the multi-SIM mobile communication device 1200. The multi-SIM mobile communication device 1200 may also include a physical button 1224 for receiving user inputs. The multi-SIM mobile communication device 1200 may also include a power button 1226 for turning the multi-SIM mobile communication device 1200 on and off.
Various examples may be implemented in any of a variety of network base stations, an example of which (e.g., network base station 1300) is illustrated in FIG. 13. The network base station 1300 may be similar to the base station of the  first network  408, 608 as described, and/or communication device 200. As such, the network base station 1300 may implement the  methods  800 and 1000 according to various examples.
The network base station 1300 may include a processor 1301 coupled with volatile memory 1302 and a large capacity nonvolatile memory, such as a disk drive 1303. For example, the processor 1301 can be similar to one or more of  processors  206, 216, and may implement one or more actions associated with a TCP layer component 260. The volatile memory 1302 may be similar to memory 214 and may store one or more instructions or parameters related to a TCP layer component 260. The network base station 1300 may also include a network interface 1305 coupled with the processor 1301 for establishing data connections with a network 1306, such as a mobile telephony network connected to a plurality of mobile communication devices. The processor 1301 may 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 aspects described herein. Typically, software applications may be stored in the  internal memories  1302, 1303 before they are accessed and loaded into the processor 1301. The processor 1301 may include internal memory sufficient to store the application software instructions.
The various examples illustrated and described are provided merely as examples to illustrate various features of the claims. However, features shown and described with respect to any given example are not necessarily limited to the associated example and may be used or combined with other examples that are shown and described. Further, the claims are not intended to be limited by any one example.
The foregoing method descriptions and the process flow diagrams are provided merely as illustrative examples and are not intended to require or imply that the operations of various examples must be performed in the order presented. As will be appreciated by one of skill in the art the order of operations in the foregoing examples may be performed in any order. Words such as “thereafter, ” “then, ” “next, ” etc. are not intended to limit the order of the operations; these words are simply used to guide the reader through the description of the methods. Further, any reference to  claim elements in the singular, for example, using the articles “a, ” “an” or “the” is not to be construed as limiting the element to the singular.
The various illustrative logical blocks, modules, circuits, and algorithm operations described in connection with the examples disclosed herein may be implemented as electronic hardware, computer software, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and operations have been described herein generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present examples.
The hardware used to implement the various illustrative logics, logical blocks, modules, and circuits described in connection with the aspects disclosed herein may be implemented or performed with a general purpose processor, a digital signal processor (DSP) , an application specific integrated circuit (ASIC) , a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general-purpose processor may be a microprocessor, but, in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configurations. Alternatively, some operations or methods may be performed by circuitry that is specific to a given function.
In one or more aspects, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored as one or more instructions or code on a non-transitory computer-readable storage medium or non-transitory processor-readable storage medium. The operations of a method or algorithm disclosed herein may be embodied in a processor-executable software module, which may reside on a non-transitory computer-readable or processor-readable storage medium. Non-transitory computer-readable or processor-readable storage media may be any storage media that may be accessed by a computer or a processor. By way of example but not limitation, such non-transitory computer-readable or processor-readable storage media may include RAM, ROM, EEPROM, FLASH memory, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that may be used to store desired program code in the form of instructions or data structures and that may be accessed by a computer. Disk and disc, as used herein, includes compact disc (CD) , laser disc, optical disc, digital versatile disc (DVD) , floppy disk, and Blu-ray disc in which disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the storage media are also included within the scope of non-transitory computer-readable and processor-readable media. Additionally, the operations of a method or algorithm may reside as one or any combination or set of codes and/or instructions on a non-transitory processor-readable storage medium and/or computer-readable storage medium, which may be incorporated into a computer program product.
The preceding description of the disclosed examples is provided to enable any person skilled in the art to make or use the present examples. Various modifications to these examples will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to some examples without departing from the spirit or scope of the written description. Thus, the present disclosure is not intended to be limited to the examples shown herein but is to be accorded the widest scope  consistent with the following claims and the principles and novel features disclosed herein.

Claims (30)

  1. A method for managing transmission control protocol (TCP) communications in a mobile communication device, comprising:
    transmitting a TCP packet from a first radio access technology (RAT) on the mobile communication device to a first network;
    receiving a hybrid automatic repeat request (HARQ) acknowledgement (ACK) or a radio link control (RLC) ACK from the first network;
    generating a local TCP ACK from the HARQ ACK or the RLC ACK; and
    delivering the local TCP ACK to a high level operating system (HLOS) or an application on the mobile communication device.
  2. The method of claim 1, further comprising:
    determining whether the first RAT has received a remote TCP ACK from the first network; and
    ignoring the remote TCP ACK in response to determining that the first RAT has received a remote TCP ACK from the first network.
  3. The method of claim 1, wherein a TCP adaption sub-layer in a packet data convergence protocol layer of a modem in the mobile communication device generates the local TCP ACK.
  4. The method of claim 3, wherein the TCP adaption sub-layer receives the HARQ ACK or the RLC ACK from a medium access control (MAC) layer or radio link control (RLC) layer of the modem.
  5. The method of claim 3, wherein the TCP adaption sub-layer stores a copy of the TCP packet.
  6. The method of claim 1, further comprising:
    determining that a loss of the TCP packet has occurred in response to determining that the first RAT has not received a remote TCP ACK from the first network; and
    retransmitting the TCP packet.
  7. The method of claim 1, further comprising:
    determining whether there is an upcoming tune-away from the first RAT to a second RAT on the mobile communication device; and
    in response to determining that there is an upcoming tune-away from the first RAT to the second RAT:
    setting a receive window value of the local TCP ACK to zero; and
    performing the tune-away from the first RAT to the second RAT.
  8. The method of claim 7, further comprising, in response to determining that there is no upcoming tune-away from the first RAT to the second RAT, setting the receive window value of the local TCP ACK to a prior receive window value of a prior received TCP ACK.
  9. The method of claim 7, further comprising generating one or more local TCP ACKs for each of a plurality of buffered TCP packets during the tune-away, wherein each of the one or more local TCP ACKs have a receive window value of zero.
  10. The method of claim 1, further comprising:
    determining whether the remote TCP ACK contains additional information not contained in the local TCP ACK; and
    delivering the additional information to the HLOS or the application in response to determining that the remote TCP ACK contains additional information not contained in the local TCP ACK.
  11. A method for managing transmission control protocol (TCP) communications in a mobile communication device, comprising:
    determining whether there is an upcoming tune-away from a first radio access technology (RAT) on the mobile communication device to a second RAT on the mobile communication device;
    adding a first timestamp to a TCP packet for transmission before the tune-away begins in response to determining that there is an upcoming tune-away from the first RAT to the second RAT;
    transmitting the TCP packet to a first network;
    performing the tune-away from the first RAT to the second RAT;
    triggering a retransmission time out on the first RAT;
    receiving a TCP acknowledgement (ACK) from the first network, wherein the TCP ACK includes a second timestamp;
    determining whether the TCP ACK corresponds to the TCP packet; and
    restoring a prior congestion window value of the first RAT in response to determining that the TCP ACK corresponds to the TCP packet.
  12. The method of claim 11, wherein determining whether the TCP ACK corresponds to the TCP packet comprises comparing the first timestamp to the second timestamp.
  13. The method of claim 11, further comprising:
    adding an offset to the first timestamp, wherein the offset is based on an estimated duration of the tune-away.
  14. The method of claim 11, wherein a modem of the mobile communication device adds the first timestamp to the TCP packet.
  15. The method of claim 11, wherein a high level operating system of the mobile communication device adds the first timestamp to the TCP packet.
  16. The method of claim 11, further comprising:
    keeping a current congestion window value of the first RAT in response to determining that the TCP ACK does not correspond to the TCP packet.
  17. The method of claim 11, wherein a congestion window value of the first RAT is set to one when the retransmission time out is triggered.
  18. A mobile communication device, comprising:
    a memory;
    a radio frequency (RF) resource configured to support a first radio access technology (RAT) ; and
    a processor coupled with the memory and the RF resource, and configured to:
    transmit a transmission control protocol (TCP) packet from the first RAT to a first network;
    receive a hybrid automatic repeat request (HARQ) acknowledgement (ACK) or a radio link control (RLC) ACK from the first network;
    generate a local TCP ACK from the HARQ ACK or the RLC ACK; and
    deliver the local TCP ACK to a high level operating system (HLOS) or an application on the mobile communication device.
  19. The mobile communication device of claim 18, wherein the processor is further configured to;
    determine whether the first RAT has received a remote TCP ACK from the first network; and
    ignore the remote TCP ACK in response to determining that the first RAT has received a remote TCP ACK from the first network.
  20. The mobile communication device of claim 19, wherein a TCP adaption sub-layer in a packet data convergence protocol layer of a modem in the mobile communication device generates the local TCP ACK.
  21. The mobile communication device of claim 20, wherein the TCP adaption sub-layer receives the HARQ ACK or the RLC ACK from a medium access control (MAC) layer of the modem.
  22. The mobile communication device of claim 20, wherein the TCP adaption sub-layer stores a copy of the TCP packet.
  23. The mobile communication device of claim 19, wherein the processor is further configured to:
    determine that a loss of the TCP packet has occurred in response to determining that the first RAT has not received a remote TCP ACK from the first network; and
    retransmit the TCP packet.
  24. The mobile communication device of claim 19, wherein the RF resource is further configured to support a second RAT, and the processor is further configured to:
    determine whether there is an upcoming tune-away from the first RAT to the second RAT;
    set a receive window value of the local TCP ACK to zero in response to determining that there is an upcoming tune-away from the first RAT to the second RAT; and
    perform the tune-away from the first RAT to the second RAT.
  25. The mobile communication device of claim 24, wherein the processor is further configured to:
    set the receive window value of the local TCP ACK to a prior receive window value of a prior received TCP ACK in response to determining that there is no upcoming tune-away from the first RAT to the second RAT.
  26. The mobile communication device of claim 24, wherein the processor is further configured to:
    generate one or more local TCP ACKs for each of a plurality of buffered TCP packets during the tune-away, wherein each of the one or more local TCP ACKs have a receive window value of zero.
  27. The mobile communication device of claim 19, wherein the processor is further configured to:
    determine whether the remote TCP ACK contains additional information not contained in the local TCP ACK; and
    deliver the additional information to the HLOS or the application in response to determining that the remote TCP ACK contains additional information not contained in the local TCP ACK.
  28. A mobile communication device, comprising:
    a memory;
    a radio frequency (RF) resource configured to support a first radio access technology (RAT) and a second RAT; and
    a processor coupled with the memory and the RF resource, and configured to:
    determine whether there is an upcoming tune-away from the first RAT to the second RAT;
    add a first timestamp to a transmission control protocol (TCP) packet for transmission before the tune-away begins in response to determining that there is an upcoming tune-away from the first RAT to the second RAT;
    transmit the TCP packet to a first network;
    perform the tune-away from the first RAT to the second RAT;
    trigger a retransmission time out on the first RAT;
    receive a TCP acknowledgement (ACK) from the first network, wherein the TCP ACK includes a second timestamp;
    determine whether the TCP ACK corresponds to the TCP packet; and
    restore a prior congestion window value of the first RAT in response to determining that the TCP ACK corresponds to the TCP packet.
  29. The mobile communication device of claim 28, wherein the processor is configured to determine whether the TCP ACK corresponds to the TCP packet by comparing the first timestamp to the second timestamp.
  30. The mobile communication device of claim 28, wherein the processor is further configured to:
    add an offset to the first timestamp, wherein the offset is based on an estimated duration of the tune-away.
PCT/CN2016/101804 2016-05-09 2016-10-11 Handling packet acknowledgements during tune-aways on mobile devices WO2017193533A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
PCT/CN2016/081423 WO2017193262A1 (en) 2016-05-09 2016-05-09 Handling packet acknowledgments during tune-aways on mobile devices
CNPCT/CN2016/081423 2016-05-09

Publications (1)

Publication Number Publication Date
WO2017193533A1 true WO2017193533A1 (en) 2017-11-16

Family

ID=60266033

Family Applications (2)

Application Number Title Priority Date Filing Date
PCT/CN2016/081423 WO2017193262A1 (en) 2016-05-09 2016-05-09 Handling packet acknowledgments during tune-aways on mobile devices
PCT/CN2016/101804 WO2017193533A1 (en) 2016-05-09 2016-10-11 Handling packet acknowledgements during tune-aways on mobile devices

Family Applications Before (1)

Application Number Title Priority Date Filing Date
PCT/CN2016/081423 WO2017193262A1 (en) 2016-05-09 2016-05-09 Handling packet acknowledgments during tune-aways on mobile devices

Country Status (1)

Country Link
WO (2) WO2017193262A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110971352A (en) * 2018-09-30 2020-04-07 大唐移动通信设备有限公司 HARQ retransmission processing method and device for uplink enhanced RLC (radio link control) fragments

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230180320A1 (en) * 2020-05-13 2023-06-08 Qualcomm Incorporated Tune away configuration for a user equipment with multiple subscriptions

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101399643B (en) * 2007-09-29 2012-06-27 上海贝尔股份有限公司 Control method and device for confirming mode data transmission
CN104221451A (en) * 2012-03-30 2014-12-17 高通股份有限公司 Method and apparatus for supporting tune away in dual-sim dual standby mobile devices
WO2015157206A2 (en) * 2014-04-11 2015-10-15 Qualcomm Incorporated Methods and apparatus for sending an uplink re-transmission after a tune away period
WO2015200275A1 (en) * 2014-06-23 2015-12-30 Qualcomm Incorporated Quick rlc retransmission on harq failure during tune away
EP3016455A1 (en) * 2014-10-29 2016-05-04 Samsung Electronics Co., Ltd. Mobile communication using a plurality of subscriber identity module

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101119183A (en) * 2007-09-06 2008-02-06 上海华为技术有限公司 Retransmission control method and transmission equipment
US20130235843A1 (en) * 2012-03-08 2013-09-12 Qualcomm Incorporated Alleviation of tcp performance degradation due to carrier suspension or ue tune-away
US9451497B2 (en) * 2012-08-13 2016-09-20 Apple Inc. Reducing packet loss at a wireless communication device due to a connection interruption
US8964680B2 (en) * 2013-02-07 2015-02-24 Apple Inc. Radio multiplexer aware TCP layer

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101399643B (en) * 2007-09-29 2012-06-27 上海贝尔股份有限公司 Control method and device for confirming mode data transmission
CN104221451A (en) * 2012-03-30 2014-12-17 高通股份有限公司 Method and apparatus for supporting tune away in dual-sim dual standby mobile devices
WO2015157206A2 (en) * 2014-04-11 2015-10-15 Qualcomm Incorporated Methods and apparatus for sending an uplink re-transmission after a tune away period
WO2015200275A1 (en) * 2014-06-23 2015-12-30 Qualcomm Incorporated Quick rlc retransmission on harq failure during tune away
EP3016455A1 (en) * 2014-10-29 2016-05-04 Samsung Electronics Co., Ltd. Mobile communication using a plurality of subscriber identity module

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110971352A (en) * 2018-09-30 2020-04-07 大唐移动通信设备有限公司 HARQ retransmission processing method and device for uplink enhanced RLC (radio link control) fragments
CN110971352B (en) * 2018-09-30 2021-01-26 大唐移动通信设备有限公司 HARQ retransmission processing method and device for uplink enhanced RLC (radio link control) fragments

Also Published As

Publication number Publication date
WO2017193262A1 (en) 2017-11-16

Similar Documents

Publication Publication Date Title
CN109691219B (en) System and method for performing adaptive access procedure on multi-SIM wireless communication device
US9780822B2 (en) Managing transmitter collisions
US8725145B2 (en) Mobile device requests of non-communication time periods to a wireless communication network
US8738021B2 (en) Mobile device tune away periods
US20190082446A1 (en) Uplink Transmission Handling in the Presence of Tune-Aways
US20190124575A1 (en) Method to improve one subscription data throughput after turn way on dsds phone
US20170034849A1 (en) Enhanced Dedicated Channel (E-DCH) Transmissions Related to Tune-Away Occurrences
CN108370520B (en) To avoid intentional retransmission of new hybrid automatic repeat request (HARQ)
WO2017136228A1 (en) Managing data reception following a tune-away
WO2017193533A1 (en) Handling packet acknowledgements during tune-aways on mobile devices
US20170070940A1 (en) Systems and Methods for Managing Carrier Transmission After a Tune-Away
US20170353898A1 (en) Systems and methods for regulating thermal performance of a user equipment
US20160323860A1 (en) Systems and methods for uplink shared channel content management
WO2018000320A1 (en) Handling retransmission grants in mobile communication devices

Legal Events

Date Code Title Description
NENP Non-entry into the national phase

Ref country code: DE

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 16901488

Country of ref document: EP

Kind code of ref document: A1

122 Ep: pct application non-entry in european phase

Ref document number: 16901488

Country of ref document: EP

Kind code of ref document: A1