Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
METHOD, APPARATUS, AND COMPUTER PROGRAM PRODUCT FOR CONTROLLING THROUGHPUT
Document Type and Number:
WIPO Patent Application WO/2009/156792
Kind Code:
A1
Abstract:
An apparatus for controlling throughput may include a processor. The processor may be configured to receive a data packet. In this regard, the data packet may be included in a stream of data packets. The processor may also be configured to provide for transmission of a throughput adjustment reply to implement a silence period in the stream of data packets. The processor may also be configured to perform an error check on the data packet to determine if the data packet includes acceptable data. Further, the processor may be configured providing for transmission of the throughput adjustment reply in response to determining that the data packet includes acceptable data. Additional apparatuses, methods and computer program products may also be provided.

Inventors:
ESKELINEN JARKKO (FI)
Application Number:
PCT/IB2008/052508
Publication Date:
December 30, 2009
Filing Date:
June 24, 2008
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
NOKIA CORP (FI)
NOKIA INC (US)
ESKELINEN JARKKO (FI)
International Classes:
H04L12/56
Domestic Patent References:
WO2004030267A12004-04-08
Foreign References:
EP1763176A12007-03-14
US20060120289A12006-06-08
Attorney, Agent or Firm:
QUIRK, Nathaniel et al. (101 South Tryon StreetSuite 400, Charlotte NC, US)
Download PDF:
Claims:

WHAT IS CLAIMED IS:

1. A method comprising: receiving a data packet, the data packet being included in a stream of data packets; and providing for transmission of a throughput adjustment reply to implement a silence period in the stream of data packets.

2. The method of claim 1 further comprising performing an error check on the data packet to determine if the data packet includes acceptable data and wherein providing for transmission of the throughput adjustment reply includes providing for transmission of the throughput adjustment reply in response to determining that the data packet includes acceptable data.

3. The method of claim 2, wherein performing the error check includes performing the error check on the data packet to determine if the data packet includes acceptable data, acceptable data including error free data or data that is usable to determine error free data.

4. The method of claim 2, wherein providing for transmission of the throughput adjustment reply includes providing for transmission of the throughput adjustment reply to implement the silence period in the stream of data packets for a given duration based on a representation of the given duration included in the throughput adjustment reply.

5. The method of claim 2 further comprising providing for transmission of an additional throughput adjustment reply or a positive acknowledgement reply in response to detecting the silence period in the stream of data packets.

6. The method of claim 1 further comprising detecting congestion in a communications link, the data packet being received via the communications link,

and wherein providing for transmission of the throughput adjustment reply includes providing for transmission of the throughput adjustment reply on a feedback channel in response to detecting congestion in the communications link.

7. An apparatus comprising a processor, the processor configured to: receive a data packet, the data packet being included in a stream of data packets; and provide for transmission of a throughput adjustment reply to implement a silence period in the stream of data packets.

8. The apparatus of claim 7, the processor further configured to perform an error check on the data packet to determine if the data packet includes acceptable data and wherein the processor configured to provide for transmission of the throughput adjustment reply includes being configured to provide for transmission of the throughput adjustment reply in response to determining that the data packet includes acceptable data.

9. The apparatus of claim 8, wherein the processor configured to perform the error check includes being configured to perform the error check on the data packet to determine if the data packet includes acceptable data, acceptable data including error free data or data that is usable to determine error free data.

10. The apparatus of claim 8, wherein the processor configured to provide for transmission of the throughput adjustment reply includes being configured to provide for transmission of the throughput adjustment reply to implement the silence period in the stream of data packets for a given duration based on a representation of the given duration included in the throughput adjustment reply.

11. The apparatus of claim 8, wherein the processor is further configured to provide for transmission of an additional throughput adjustment

reply or a positive acknowledgement reply in response to detecting the silence period in the stream of data packets.

12. The apparatus of claim 8, wherein the processor is further configured to detect congestion in a communications link, the data packet being received via the communications link, and wherein the processor being configured to provide for transmission of the throughput adjustment reply includes being configured to provide for transmission of the throughput adjustment reply on a feedback channel in response to detecting congestion in the communications link.

13. A computer program product comprising at least one computer- readable storage medium having executable computer-readable program code portions stored therein, the computer-readable program code portions comprising: a first program code portion configured to receive a data packet, the data packet being included in a stream of data packets; and a second program code portion configured to provide for transmission of a throughput adjustment reply to implement a silence period in the stream of data packets.

14. The computer program product of claim 13, wherein the computer- readable program code portions further comprise a third program code portion configured to perform an error check on the data packet to determine if the data packet includes acceptable data and wherein second program code portion configured to provide for transmission of the throughput adjustment reply includes being configured to provide for transmission of the throughput adjustment reply in response to determining that the data packet includes acceptable data.

15. The computer program product of claim 14, wherein the third program code portion configured to perform the error check includes being configured to perform the error check on the data packet to determine if the data packet includes acceptable data, acceptable data including error free data or data that is usable to determine error free data.

16. The computer program product of claim 14, wherein the second program code portion configured to provide for transmission of the throughput adjustment reply includes being configured to provide for transmission of the throughput adjustment reply to implement the silence period in the stream of data packets for a given duration based on a representation of the given duration included in the throughput adjustment reply.

17. The computer program product of claim 13, wherein the computer- readable program code portions further comprise a third program code portion configured to detect congestion in a communications link, the data packet being received via the communications link, and wherein the second program code portion being configured to provide for transmission of the throughput adjustment reply includes being configured to provide for transmission of the throughput adjustment reply on a feedback channel in response to detecting congestion in the communications link.

18. A method comprising : providing for transmission of a data packet, the data packet being included in a stream of data packets; receiving a throughput adjustment reply; and implementing a transmission silence period in the stream of data packets in response to receiving the throughput adjustment reply.

19. The method of claim 18 wherein receiving the throughput adjustment reply includes receiving the throughput adjustment reply, the throughput adjustment reply indicating that an error check of the data packet determined that acceptable data was included in the data packet.

20. The method of claim 18, wherein receiving the throughput adjustment reply includes receiving the throughput adjustment reply, the throughput adjustment reply including a representation of a transmission silence period duration; and wherein implementing a transmission silence period includes

implementing a transmission silence period for a given duration based on the transmission silence period duration.

21. The method of claim 18 further comprising: receiving an additional throughput adjustment reply or a positive acknowledgment reply in response to the transmission silence period; and implementing an additional transmission silence period in the stream of data packets in response to receiving an additional throughput adjustment reply.

22. An apparatus comprising a processor, the processor configured to: provide for transmission of a data packet, the data packet being included in a stream of data packets; receive a throughput adjustment reply; and implement a transmission silence period in the stream of data packets in response to receiving the throughput adjustment reply.

23. The method of claim 22 wherein the processor configured to receive the throughput adjustment reply includes being configured to receive the throughput adjustment reply, the throughput adjustment reply indicating that an error check of the data packet determined that acceptable data was included in the data packet.

24. The apparatus of claim 22, wherein the processor configured to receive the throughput adjustment reply includes being configured to receive the throughput adjustment reply, the throughput adjustment reply including a representation of a transmission silence period duration; and wherein the processor configured to implement a transmission silence period includes being configured to implement a transmission silence period for a given duration based on the transmission silence period duration.

25. The apparatus of claim 22, wherein the processor is further configured to:

receive an additional throughput adjustment reply or a positive acknowledgment reply in response to the transmission silence period; and implement an additional transmission silence period in the stream of data packets in response to receiving an additional throughput adjustment reply.

26. A computer program product comprising at least one computer- readable storage medium having executable computer-readable program code portions stored therein, the computer-readable program code portions comprising: a first program code portion configured to provide for transmission of a data packet, the data packet being included in a stream of data packets; a second program code portion configured to receive a throughput adjustment reply; and a third program code portion configured to implement a transmission silence period in the stream of data packets in response to receiving the throughput adjustment reply.

27. The computer program product of claim 26, wherein the second program code portion configured to receive the throughput adjustment reply includes being configured to receive the throughput adjustment reply, the throughput adjustment reply indicating that an error check of the data packet determined that acceptable data was included in the data packet.

28. The computer program product of claim 26, wherein the second program code portion configured to receive the throughput adjustment reply includes being configured to receive the throughput adjustment reply, the throughput adjustment reply including a representation of a transmission silence period duration; and wherein the third program code portion configured to implement a transmission silence period includes being configured to implement a transmission silence period for a given duration based on the transmission silence period duration.

29. An apparatus comprising: means for providing for transmission of a data packet, the data packet being included in a stream of data packets; means for receiving a throughput adjustment reply; and means for implementing a transmission silence period in the stream of data packets in response to receiving the throughput adjustment reply.

Description:

METHOD, APPARATUS, AND COMPUTER PROGRAM PRODUCT FOR CONTROLLING THROUGHPUT

TECHNICAL FIELD

Embodiments of the present invention relate generally to operation of radio communications systems, and more particularly, relate to an apparatus, method, and a computer program product for controlling throughput on radio communications systems.

BACKGROUND

The modern communications era has brought about a tremendous expansion of wireline and wireless networks. Networking technologies have experienced an unprecedented technological expansion, fueled by consumer demand. In particular, wireless and mobile networking technologies have addressed related consumer demands, while providing more flexibility and immediacy of information transfer.

With the increased expansion of networking technologies, complexities in networking technologies have also arisen. In particular, in the area of radio communications networks, error detection has become critical to maintaining effective communications links between communications devices.

In order to maintain effective communications links, many systems employ a reply, or an acknowledgement, in response to receiving data. Some systems verify the accuracy of the data through various forms of error checking, and reply with appropriate acknowledgements based on the results of the error checking. In this regard, when the results of an error check indicate that the received data is error free, then a positive acknowledgement or ACK may be provided. Upon

receipt of an ACK, the sending entity may continue to provide data in the same manner. On the other hand, when the results of an error check indicate that the received data includes errors or is otherwise unusable, then a negative acknowledgement or NACK may be provided. When an entity sending data receives a reply that is a NACK, the entity sending the data may retransmit the erroneously received data. To retransmit the data, in some instances, capacity may need to be allocated on the communications channel to allow for the retransmission.

While use of ACK and NACK replies may be sufficient in many situations, situations may arise where data may be received that is error free or otherwise usable, but the communications connection may be sub-optimal for various reasons. Under these circumstances, ACK replies may be provided, even though the receiving entity may be aware of the sub-optimal connection (e.g., a congested connection). As a result, the sending entity may continue to provide data at a high throughput even though high throughput may not be desirable to the receiving entity.

Accordingly, it may be desirable to develop a mechanism may allow for a reaction to sub-optimal or undesirable communication channel conditions. In particular, it may be desirable to develop a mechanism may allow for a reaction to sub-optimal or undesirable communication channel conditions within an error detection framework when error free or otherwise usable data is received.

BRIEF SUMMARY A method, apparatus, and computer program product are therefore described that provide for throughput control. In particular, exemplary embodiments of the present invention may transmit/receive a throughput adjustment reply, or PNACK, to implement a transmission silence period. The transmission silence period may, in turn, cause a reduction in throughput. In some exemplary embodiments, a data packet may be received, and the throughput adjustment reply may be provided in response to receipt of the data packet. In some embodiments, the data packet may checked for errors, and if as a result of the error check the data within the packet is determined to be acceptable (e.g., the data

is error free, the data may be used to determine error free data, or the data is otherwise usable), then the throughput adjustment reply may be provided. Further, in exemplary embodiments where the throughput adjustment reply is received, the entity that receives the throughput adjustment reply may reduce throughput by implementing a silence period in response to receipt of the reply.

In various exemplary embodiments, a method for throughput control is described. The method may include receiving a data packet. In this regard, the data packet may be included in a stream of data packets. The method may also include providing for transmission of a throughput adjustment reply to implement a silence period in the stream of data packets. In some exemplary embodiments, the method may also include performing an error check on the data packet to determine if the data packet includes acceptable data. Further, in some exemplary embodiments of the method, transmission of the throughput adjustment reply may be provided in response to determining that the data packet includes acceptable data.

In various exemplary embodiments, another method for throughput control is described. The method may include providing for transmission of a data packet. In this regard, the data packet may be included in a stream of data packets. Further, the method may include receiving a throughput adjustment reply and implementing a transmission silence period in the stream of data packets in response to receiving the throughput adjustment reply.

In other exemplary embodiments, an apparatus for throughput control is described. The apparatus may include a processor. The processor may be configured to receive a data packet. In this regard, the data packet may be included in a stream of data packets. The processor may also be configured to provide for transmission of a throughput adjustment reply to implement a silence period in the stream of data packets. In some exemplary embodiments, the processor may also be configured to perform an error check on the data packet to determine if the data packet includes acceptable data. Further, in some exemplary embodiments, the processor may be configured to provide for transmission of the throughput adjustment reply in response to determining that the data packet includes acceptable data.

In other exemplary embodiments, an apparatus for throughput control is described. The apparatus may include a processor. The processor may be configured to provide for transmission of a data packet. In this regard, the data packet may be included in a stream of data packets. Further, the processor may be configured to receive a throughput adjustment reply and implement a transmission silence period in the stream of data packets in response to receiving the throughput adjustment reply.

In another exemplary embodiment, a computer program product for throughput control is described. The computer program product may include at least one computer-readable storage medium having computer-readable program code portions stored therein. The computer-readable program code portions may include a first program code portion and a second program code portion. The first program code portion may be configured to receive a data packet. In this regard, the data packet may be included in a stream of data packets. The second program code portion may be configured to provide for transmission of a throughput adjustment reply to implement a silence period in the stream of data packets. In some exemplary embodiments, a third program code portion may be included that is configured to perform an error check on the data packet to determine if the data packet includes acceptable data. Further, in some exemplary embodiments, the second program code portion may be configured to provide for transmission of the throughput adjustment reply in response to determining that the data packet includes acceptable data.

In another exemplary embodiment, another computer program product for throughput control is described. The computer program product may include at least one computer-readable storage medium having computer-readable program code portions stored therein. The computer-readable program code portions may include a first program code portion, a second program code portion, and a third program code portion. The first program code portion may be configured to provide for transmission of a data packet. In this regard, the data packet may be included in a stream of data packets. Further, the second program code portion may be configured to receive a throughput adjustment reply and the third program

code portion may be configured to implement a transmission silence period in the stream of data packets in response to receiving the throughput adjustment reply.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWING(S) Having thus described the invention in general terms, reference will now be made to the accompanying drawings, which are not necessarily drawn to scale, and wherein:

FIG. l is a schematic block diagram of a mobile terminal according to an exemplary embodiment of the present invention; FIG. 2 is a schematic block diagram of a wireless communications system according to an exemplary embodiment of the present invention;

FIGs. 3 is a schematic block diagram of a transmitting and receiving entity involved in a communications scenario according to exemplary embodiments of the present invention; FIG. 4 illustrates a transmitting entity, a receiving entity, and associated network connectivity according to exemplary embodiments of the present invention; and

FIGs. 5-8 are flow charts of exemplary methods of determining throughput control according to exemplary embodiments of the present invention.

DETAILED DESCRIPTION

Embodiments of the present invention will now be described more fully hereinafter with reference to the accompanying drawings, in which some, but not all embodiments of the invention are shown. Indeed, the invention may be embodied in many different forms and should not be construed as limited to the embodiments set forth herein; rather, these embodiments are provided so that this disclosure will satisfy applicable legal requirements. Like reference numerals refer to like elements throughout. Further, the term "exemplary" as used herein is defined to indicate an example, and should not be construed to indicate a qualitative assessment.

FIG. 1 illustrates a block diagram of a mobile terminal 10 that could benefit from, and may be an exemplary apparatus that incorporates embodiments of the

present invention. It should be understood, however, that a mobile telephone as illustrated and hereinafter described is merely illustrative of one type of mobile terminal that could benefit from embodiments of the present invention and, therefore, should not be taken to limit the scope of embodiments of the present invention. While several embodiments of the mobile terminal 10 are illustrated and will be hereinafter described for purposes of example, other types of mobile terminals, such as portable digital assistants (PDAs), pagers, mobile televisions, gaming devices, mobile computers, laptop computers, cameras, video recorders, audio/video player, radio, GPS devices, or any combination of the aforementioned, and other types of voice and text communications systems, can readily employ embodiments of the present invention.

In addition, while several embodiments of the method of the present invention may be performed or used by a mobile terminal 10, the method may be employed by other than a mobile terminal. Moreover, the apparatus and method of embodiments of the present invention will be primarily described in conjunction with mobile communications applications. It should be understood, however, that the apparatus and method of embodiments of the present invention can be utilized in conjunction with a variety of other applications, both in the mobile communications industries and outside of the mobile communications industries. The mobile terminal 10 may include an antenna 12 (or multiple antennas) in operable communication with a transmitter 14 and a receiver 16. The mobile terminal 10 may further include an apparatus, such as a controller 20 or other processing element that provides signals to and receives signals from the transmitter 14 and receiver 16, respectively. The signals may include or be representative of signaling information in accordance with the air interface standard of the applicable cellular system, and also user speech, received data and/or user generated data. In this regard, the mobile terminal 10 may be capable of operating with one or more air interface standards, communication protocols, modulation types, and/or access types. By way of illustration, the mobile terminal 10 may be capable of operating in accordance with any of a number of first, second, third and/or fourth-generation communication protocols or the like. For example, the mobile terminal 10 may be capable of operating in accordance with

second-generation (2G) wireless communication protocols IS-136 (time division multiple access (TDMA)), GSM (global system for mobile communication), and IS-95 (code division multiple access (CDMA)), or with third-generation (3G) wireless communication protocols, such as Universal Mobile Telecommunications System (UMTS), CDMA2000, wideband CDMA (WCDMA) and time division- synchronous CDMA (TD-SCDMA), with 3.9 generation (3.9G) wireless communication protocols, such as Evolved Universal Terrestrial Radio Access Network (E-UTRAN), with fourth-generation (4G) wireless communication protocols, Long Term Evolution (LTE) protocols, or the like. As an alternative (or additionally), the mobile terminal 10 may be capable of operating in accordance with non-cellular communication mechanisms. For example, the mobile terminal 10 may be capable of communication in a wireless local area network (WLAN), or other communication networks. Further, the mobile terminal 10 may communicate in accordance with techniques such as, for example, radio frequency (RF), infrared (IrDA) or any of a number of different wireless networking techniques, including WLAN techniques such as IEEE 802.11 (e.g., 802.1 Ia, 802.1 Ib, 802.1 Ig, 802.1 In, etc.), world interoperability for microwave access (WiMAX) techniques such as IEEE 802.16, and/or wireless Personal Area Network (WPAN) techniques such as IEEE 802.15, BlueTooth (BT), ultra wideband (UWB) and/or the like. It is understood that the apparatus, such as the controller 20, may include circuitry desirable for implementing audio and logic functions of the mobile terminal 10. For example, the controller 20 may be comprised of a digital signal processor device, a microprocessor device, and various analog to digital converters, digital to analog converters, and other support circuits. Control and signal processing functions of the mobile terminal 10 may be allocated between these devices according to their respective capabilities. The controller 20 thus may also include the functionality to convolutionally encode and interleave message and data prior to modulation and transmission. The controller 20 can additionally include an internal voice coder, and may include an internal data modem. Further, the controller 20 may include functionality to operate one or more software programs, which may be stored in memory. For example, the controller 20 may be capable of operating a connectivity program, such as a conventional Web browser.

The connectivity program may then allow the mobile terminal 10 to transmit and receive Web content, such as location-based content and/or other web page content, according to a Wireless Application Protocol (WAP), Hypertext Transfer Protocol (HTTP) and/or the like, for example. The mobile terminal 10 may also comprise a user interface that may include an output device such as a conventional earphone or speaker 24, a ringer 22, a microphone 26, a display 28, and/or a user input interface, all of which may be coupled to the controller 20. The user input interface, which allows the mobile terminal 10 to receive data, may include any of a number of devices allowing the mobile terminal 10 to receive data, such as a keypad 30, a touch display (not shown) or other input device. In embodiments including the keypad 30, the keypad 30 may include the conventional numeric (0-9) and related keys (#, *), and/or other hard and soft keys used for operating the mobile terminal 10. Alternatively, the keypad 30 may include a conventional QWERTY keypad arrangement. The keypad 30 may also include various soft keys with associated functions. In addition, or alternatively, the mobile terminal 10 may include an interface device such as a joystick or other user input interface. The mobile terminal 10 may further include a battery 34, such as a vibrating battery pack, for powering various circuits that are required to operate the mobile terminal 10, as well as, optionally providing mechanical vibration as a detectable output.

The mobile terminal 10 may further include a user identity module (UIM) 38. The UIM 38 may be a memory device having a processor built in. The UIM 38 may include, for example, a subscriber identity module (SIM), a universal integrated circuit card (UICC), a universal subscriber identity module (USIM), a removable user identity module (R-UIM), etc. The UIM 38 may store information elements related to a mobile subscriber. In addition to the UIM 38, the mobile terminal 10 may be equipped with memory. For example, the mobile terminal 10 may include volatile memory 40, such as volatile Random Access Memory (RAM) including a cache area for the temporary storage of data. The mobile terminal 10 may also include other non-volatile memory 42, which can be embedded and/or may be removable. The non- volatile memory 42 can additionally or alternatively comprise an electrically erasable programmable read only memory (EEPROM),

flash memory or the like, such as that available from the SanDisk Corporation of Sunnyvale, California, or Lexar Media Inc. of Fremont, California. The memories can store any of a number of pieces of information, and data, used by the mobile terminal 10 to implement the functions of the mobile terminal 10. For example, the memories can include an identifier, such as an international mobile equipment identification (IMEI) code, capable of uniquely identifying the mobile terminal 10. Furthermore, the memories may store instructions for determining cell id information. Specifically, the memories may store an application program for execution by the controller 20, which may determine an identity of the current cell, i.e., cell id identity or cell id information, with which the mobile terminal 10 is in communication.

FIG. 2 is a schematic block diagram of a wireless communications system that may include or support exemplary embodiments of the present invention. The system may include a plurality of network devices. As shown, one or more mobile terminals 10 may each include an antenna 12 for transmitting signals to and for receiving signals from a base site or base station (BS) 44. The base station 44 may be a part of one or more cellular or mobile networks each of which may include elements required to operate the network, such as a mobile switching center (MSC) 46. In operation, the MSC 46 may be capable of routing calls or other communications to and from the mobile terminal 10 when the mobile terminal 10 is making and receiving calls or communications. The MSC 46 may also provide a connection to landline trunks when the mobile terminal 10 is involved in a call. In addition, the MSC 46 may be capable of controlling the forwarding of messages to and from the mobile terminal 10, and may also control the forwarding of messages for the mobile terminal 10 to and from a messaging center. It should be noted that although the MSC 46 is shown in the system of FIG. 2, the MSC 46 is merely an exemplary network device and embodiments of the present invention are not limited to use in a network employing an MSC.

The MSC 46 may be coupled to a data network, such as a local area network (LAN), a metropolitan area network (MAN), and/or a wide area network (WAN). The MSC 46 may be directly coupled to the data network. In one exemplary embodiment, the MSC 46 may be coupled to a gateway device (GTW)

48, and the GTW 48 may be coupled to a WAN, such as the Internet 50. In turn, devices such as processing elements (e.g., personal computers, server computers or the like) may be coupled to the mobile terminal 10 via the Internet 50. For example, as explained below, the processing elements may include one or more processors associated with a computing system 52 (two shown in FIG. 2), origin server 54 (one shown in FIG. 2) or the like, as described below.

The BS 44 may also be coupled to a serving GPRS (General Packet Radio Service) support node (SGSN) 56. The SGSN 56 may be capable of performing functions similar to the MSC 46 for packet switched services. The SGSN 56, like the MSC 46, may be coupled to a data network, such as the Internet 50. The SGSN 56 may be directly coupled to the data network. In some exemplary embodiments, the SGSN 56 may be coupled to a packet-switched core network, such as a GPRS core network 58. The packet-switched core network may be coupled to another GTW 48, such as a gateway GPRS support node (GGSN) 60, and the GGSN 60 may be coupled to the Internet 50. In addition to the GGSN 60, the packet-switched core network may also be coupled to a GTW 48. Also, the GGSN 60 may be coupled to a messaging center. In this regard, the GGSN 60 and the SGSN 56, like the MSC 46, may be capable of controlling the forwarding of messages, such as MMS messages. The GGSN 60 and SGSN 56 may also be capable of controlling the forwarding of messages for the mobile terminal 10 to and from the messaging center.

In addition, by coupling the SGSN 56 to the GPRS core network 58 and the GGSN 60, devices such as a computing system 52 and/or origin server 54 may be coupled to the mobile terminal 10 via the Internet 50, SGSN 56 and GGSN 60. In this regard, devices such as the computing system 52 and/or origin server 54 may communicate with the mobile terminal 10 across the SGSN 56, GPRS core network 58 and the GGSN 60. By directly or indirectly connecting mobile terminals 10 and the other devices (e.g., computing system 52, origin server 54, etc.) to the Internet 50, the mobile terminals 10 may communicate with the other devices and with one another, such as according to the Hypertext Transfer Protocol (HTTP) and/or the like, to thereby carry out various functions of the mobile terminals 10.

Although not every element of every possible mobile network is shown and described herein, it should be appreciated that the mobile terminal 10 may be coupled to one or more of any of a number of different networks through the BS 44. In this regard, the network(s) may be capable of supporting communication in accordance with any one or more of a number of first-generation ( 1 G), second- generation (2G), 2.5G, third-generation (3G), 3.9G, such as Evolved Universal Terrestrial Radio Access Network (E-UTRAN), fourth-generation (4G), Long Term Evolution (LTE) mobile communication protocols or the like. For example, one or more of the network(s) may be capable of supporting communication in accordance with 2G wireless communication protocols IS- 136 (TDMA), GSM, and IS-95 (CDMA). Also, for example, one or more of the network(s) may be capable of supporting communication in accordance with 2.5G wireless communication protocols GPRS, Enhanced Data GSM Environment (EDGE), or the like. Further, for example, one or more of the network(s) may be capable of supporting communication in accordance with 3G wireless communication protocols, such as a UMTS network employing WCDMA radio access technology, and/or 4G wireless communication protocols. Some narrow-band analog mobile phone service (NAMPS), as well as total access communication system (TACS), network(s) may also benefit from embodiments of the present invention, as should dual or higher mode mobile stations (e.g., digital/analog or TDMA/CDMA/analog phones).

The mobile terminal 10 may be further coupled to one or more wireless access points (APs) 62. The APs 62 may comprise access points configured to communicate with the mobile terminal 10 in accordance with techniques such as, for example, radio frequency (RF), infrared (IrDA) or any of a number of different wireless networking techniques, including WLAN techniques such as IEEE 802.11 (e.g., 802.1 Ia, 802.1 Ib, 802.1 Ig, 802.1 In, etc.), world interoperability for microwave access (WiMAX) techniques such as IEEE 802.16, and/or wireless Personal Area Network (WPAN) techniques such as IEEE 802.15, BlueTooth (BT), ultra wideband (UWB) and/or the like. The APs 62 may be coupled to the Internet 50. Like with the MSC 46, the APs 62 may be directly coupled to the Internet 50. In one embodiment, however, the APs 62 are indirectly coupled to the

Internet 50 via a GTW 48. Furthermore, in one embodiment, the BS 44 may be considered as another AP 62. In some exemplary embodiments, the system may support communications between the mobile terminal 10 and another network entity within a social proximity network (SPN) as described below. As will be appreciated, by directly or indirectly connecting the mobile terminals 10 and the computing system 52, the origin server 54, and/or any of a number of other devices, to the Internet 50, the mobile terminals 10 can communicate with one another, the computing system, etc., to thereby carry out various functions of the mobile terminals 10, such as to transmit data, content or the like to, and/or receive content, data or the like from, the computing system 52. As used herein, the terms "data," "content," "information" and similar terms may be used interchangeably to refer to data capable of being transmitted, received and/or stored in accordance with embodiments of the present invention. Thus, use of any such terms should not be taken to limit the spirit and scope of embodiments of the present invention. In an exemplary embodiment, content or data may be communicated over the system of FIG. 2 between a mobile terminal, which may be similar to the mobile terminal 10 of FIG. 1, and a network device of the system of FIG. 2 in order to, for example, execute applications or establish communication (for example, for purposes of content or information sharing) between the mobile terminal 10 and other mobile terminals. As such, it should be understood that the system of FIG. 2 need not be employed for communication between mobile terminals or between a network device and the mobile terminal, but rather FIG. 2 is merely provided for purposes of example. Furthermore, it should be understood that embodiments of the present invention may be resident on a communication device such as the mobile terminal 10, and/or may be resident on a server, personal computer, or other electronic device, absent any communication with the system of FIG. 2.

FIG. 3 is a schematic block diagram of a transmitting and receiving entity involved in a communications scenario according to exemplary embodiments of the present invention. The transmitting entity 300 and receiving entity 310 may be any type of network entity including, but not limited to, a base station (e.g., BS 44), a mobile terminal (e.g., mobile terminal 10), or any other network entity, such

as, for example, any network entity included in the system of FIG. 2. Further, the transmitting entity 300 and the receiving entity 310 may use any radio communication protocol for communications including the communications protocols described with respect to the mobile terminal 10 and the system of FIG. 2. Moreover, in some exemplary embodiments, transmitting entity 300 and receiving entity 310 may utilize communications protocols in accordance with LTE or E-UTRAN. According to various exemplary embodiments, the communications connection between the transmitting entity 300 and the receiving entity 310 may be a point-to-point link (e.g., a direct connection including no intermediate network entity). The communications link between the transmitting entity 300 and the receiving entity 310 may be at the data link layer or the protocol layer.

The transmitting entity 300 may transmit a data packet stream 320 to the receiving entity. According to various exemplary embodiments of the present invention, the data packet stream 320 may be comprised of one or more transmission units that may be filled by one or more data packets or silence periods. A transmission unit may have an associated duration, such that a packet of data may be transmitted with the duration. The exemplary data packet stream 320 of FIG. 3 includes seventeen transmission units. In response to receipt of the data packets stream 320, the receiving entity 310 may generate and transmit the feedback reply stream 330.

In this regard, a data packet may be any collection of data. In some exemplary embodiments, a data packet may be a data unit in a protocol layer communication, such as a PDU (Protocol Data Unit) or an SDU (Service Data Unit). As such, in some exemplary embodiments, a data packet may be processed through a protocol layer. Further, an acknowledgement reply may also be processed through a protocol layer.

The feedback reply stream 330 may also be comprised of one or more transmission units that may include various types of acknowledgement replies. According to various embodiments of the present invention, the feedback reply stream 330 and/or the various acknowledgement replies may be transmitted on a feedback or acknowledgement channel. The exemplary feedback stream 330 of

FIG. 3 includes seventeen transmission units. The acknowledgement replies that may be used to fill the transmission units of the feedback reply stream 330 may include a positive acknowledgement reply (i.e., ACK), a negative acknowledgement reply (i.e., NACK), and/or a throughput adjustment reply (i.e., PNACK).

The positive acknowledgement reply or ACK may indicate that a received data packet includes acceptable data. According to various exemplary embodiments, acceptable data may be error free data, as indicated by an error check, data that may be used to determine error free data, or otherwise usable data. As such, the reception of an ACK by a transmitting entity (e.g., transmitting entity 300) may instruct the transmitting entity that the data packet associated with the ACK was properly received. According to various embodiments, the reception of an ACK may also instruct a transmitting entity to continue to provide data packets at a current throughput. In some exemplary embodiments, such as, for example, embodiments implementing transmission control protocol (TCP), duplicate ACKs (i.e., two repeated ACKs directed to the same packet) may be transmitted/received to indicate a properly received data packet. Further, in networks implementing TCP, an ACK may be provided every time a TCP packet is received. In this regard, an ACK may be provided in response to received bytes within the TCP packet, where the bytes are indicated by a sequence number field in the TCP packet, and since the bytes are within the packet, it can be understood that the received packet may be positively acknowledged.

The negative acknowledgement reply or NACK may indicate that unacceptable or otherwise unusable data has been received. Any known error check may be utilized to determine that the data within a data packet is unacceptable or otherwise unusable. The reception of a NACK by a transmitting entity (e.g., transmitting entity 300) may instruct the transmitting entity to allocate capacity in the data packet stream for a retransmission of the associated packet. According to various exemplary embodiments, the reception of a NACK need not result in a change in the current throughput, but in some exemplary embodiments, a NACK may provide instructions for a change in throughput.

The throughput adjustment reply or PNACK may indicate that a received data packet includes acceptable data. According to various exemplary embodiments, acceptable data may be error free data, as indicated by an error check, data that may be used to determine error free data, or otherwise usable data. The reception of a PNACK by a transmitting entity (e.g., transmitting entity 300) may instruct the transmitting entity that the data packet associated with the PNACK was properly received. In some exemplary embodiments, transmission and reception of a PNACK may occur on a dedicated channel for the PNACK. According to various embodiments, the reception of a PNACK may instruct a transmitting entity to throttle down throughput. In order to throttle down throughput, according to various embodiments, the transmitting entity may implement a transmission silence period. The transmission silence period may be a portion of the data packet stream where no data is transmitted.

In some exemplary embodiments, the duration of the silence period that results from transmission of a throughput adjustment reply may be predetermined and/or static for all throughput adjustment replies. Further, in some exemplary embodiments, an alternate channel may be utilized to transfer a representation of the duration of the silence period to allow for implementation of the silence period for the requested duration. Additionally, in some exemplary embodiments, the duration of the silence period may be determined based on a representation of the duration included in the throughput adjustment reply. As a result, in some instances, a first throughput adjustment reply may result in an implementation of a transmission silence period for a first duration, and a second throughput adjustment reply may result in another transmission silence period for a second duration, where the second duration may be shorter or longer than the first duration based on the representation of the first and second durations included in each respective throughput adjustment reply. In this regard, a transmission silence period may have any duration. For example, in the exemplary scenario of FIG. 3, the duration of the transmission silence period is one transmission unit. However, according to various exemplary embodiments, a longer or shorter transmission silence period may be implemented.

According to various embodiments, a throughput adjustment reply may be provided for various reasons. Some examples of reasons or triggers for providing a throughput adjustment reply may include, but should not be limited to, power conservation, overheating of receiving hardware, computing resource management and/or conservation, and the like.

Additionally, in some exemplary embodiments, a throughput adjustment reply or PNACK may also be provided in response to the detection of congestion in the network or in a communications link. In some exemplary embodiments, a receiving entity may detect congestion in the egress direction by monitoring egress buffers and egress buffering capacity. In this regard, a receiving entity may detect congestion by monitoring an amount of free buffering capacity reserved for incoming data. Free buffering capacity may act as an indication of the egress data rate. When an egress data rate is higher than an ingress data rate, queuing of transmissions (e.g., data packets) need not occur. On other hand, if the egress data rate is smaller than the ingress data rate, free buffering capacity may be occupied due queuing. As such, a receiving entity may transmit a PNACK in response to the available buffering capacity dropping below a set threshold. In these exemplary embodiments, a receiving entity may thereby control the throughput. With respect to the exemplary scenario provided in FIG. 3, the transmitting entity 300 may begin sending data packets to the receiving entity 310. In this exemplary scenario, a receipt of a PNACK (i.e., a throughput adjustment reply) by the transmitting entity 300 may result in a silence period having a duration of one transmission unit. Further, in this exemplary scenario, a processing delay of the transmitting entity 300 and the receiving entity 310 is three transmission units long. As such, the receiving entity 310 responds to receipt of Packet Al three transmission units later with an ACK associated with Packet Al (i.e., ACK Al). The receiving entity continues to receive data packets and provide associated ACKs, until the receiving entity 310 receives Packet A5. The receiving entity 310 properly receives the data of Packet A5, but the receiving entity 310 also determines that a throttling down of the throughput of the communication link should be implemented. As such, the receiving entity 310

transmits a PNACK associated with Packet A5 (i.e., PNACK A5). Due to the three transmission unit processing delay of the transmitting entity 300, the transmitting entity 300 continues to transmit data packets at the same throughput. However, three transmission units later (six transmission units after transmission of Packet A5), the transmitting entity 300 implements a silence period (i.e., Silence 1) in response to the PNACK A5 to throttle down the throughput. Three transmission units later, the receiving entity responds to the silence period (i.e., Silence 1) by providing an ACK associated with Silence 1 (i.e., ACK Silence 1). In some exemplary embodiments, another PNACK may be provided in response to a silence period to implement additional silence periods and further throttle down of the throughput.

In the meantime, Packet A6 is transmitted by the transmitting entity 300 and properly received by the receiving entity 310. In response to receiving Packet A6, receiving entity 310 determines that an additional throttling down of the throughput is needed. As a result, receiving entity 310 transmits an additional

PNACK associated with Packet A6 (i.e., PNACK A6). The transmitting entity 300 responds three transmission units later by providing an additional silence period (i.e., Silence 2). Three transmission units after implementation of Silence 2, the receiving entity 310 responds to the silence period (i.e., Silence 2) by transmitting an ACK associated with Silence 2 (i.e., ACK Silence 2).

After transmitting Packet A6, the transmitting entity 300 transmits Packet A7, which is improperly received by the receiving entity 310 (i.e., unacceptable or otherwise unusable data was included in Packet A7 when Packet A7 was received). As a result, the receiving entity 310 transmits a NACK associated with Packet A7. Accordingly, three transmission units later, the transmitting entity 300 retransmits Packet A7. In response to the retransmission of Packet A7, the receiving entity transmits an ACK (i.e., ACK A7).

After the initial transmission of Packet A7, Packet A8 is transmitted by the transmitting entity 300 and properly received by the receiving entity 310. In response to receiving Packet A8, receiving entity 310 determines that an additional throttling down of the throughput is needed. As a result, receiving entity 310 transmits an additional PNACK associated with Packet A8 (i.e., PNACK A8). The

transmitting entity 300 responds three transmission unit later by providing an additional silence period (i.e., Silence 3). Three transmission units after implementation of Silence 3, the receiving entity 310 responds to the silence period (i.e., Silence 3) by transmitting an ACK associated with Silence 3 (i.e., ACK Silence 3).

The remaining data packets (i.e., Packet Bl through Packet B5) are transmitted and associated ACKs are provided, since the data within the packets is properly received (i.e., the data packets include acceptable data), and no further throttling of the throughput is needed. In some exemplary embodiments, an ACK/PNACK ratio may be determined based upon a selected portion of the feedback stream. The ACK/PNACK ratio may provide an indication of connection capacity to higher layers of communication. In some exemplary embodiments, the PNACK portion of the ratio may include PNACKs and NACKs. For example, a six transmission unit portion of the feedback stream 330 may be selected beginning with PNACK A5 and ending with ACK B2. For this portion of the feedback stream 330 the ACK/PNACK ratio may be two sixths, which may be reduced to one third.

Referring now to FIG. 4, an exemplary transmitting entity 400 and an exemplary receiving entity 450 for controlling throughput are described. According to various exemplary embodiments, the transmitting entity 400 may be embodied as transmitting entity 300, and receiving entity 450 may be embodied as receiving entity 310.

The transmitting and receiving entities 400, 450 may include or otherwise be in communication with processors 405, 455, communication interfaces 415, 465, and memory devices 410, 460, respectively. The memory devices 410, 460 may include, for example, volatile and/or non-volatile memory (e.g., volatile memory 40 and/or non- volatile memory 42). The memory devices 410, 460 may be configured to store information, data, applications, instructions, or the like for enabling the respective transmitting or receiving entity to carry out various functions in accordance with exemplary embodiments of the present invention.

For example, the memory devices 410, 460 may be configured to buffer input data for processing by the processors 405, 455, respectively. Additionally or

alternatively, the memory devices 410, 460 could be configured to store instructions for execution by the processors 405, 455, respectively. In yet another alternative, memory devices 410, 460 may be ones of a plurality of databases that store information such as packet data or acknowledgement replies in the form of static and/or dynamic information.

The processors 405, 455 may be embodied in a number of different ways. For example, the processors 405, 455 may be embodied as one or more microprocessors, coprocessors, controllers (e.g., controller 20 from FIG. 1), or various other processing means or elements including integrated circuits such as, for example, ASICs (application specific integrated circuits), FPGAs (field programmable gate arrays), single or multi purpose hardware accelerators, combinations thereof, or the like. In an exemplary embodiment, the processors 405, 455 may be configured to execute instructions stored in the memory devices 410, 460, respectively, or instructions otherwise accessible to the processors 405, 455.

In some exemplary embodiments, the transmitting and/or receiving entities 400, 450 may include a user interface in communication with the processors 405, 455, respectively, to receive an indication of a user input at the user interface and/or to provide an audible, visual, mechanical, or other output to the user. As such, the user interfaces may include, for example, keyboards 30, mice, joysticks, touch screen displays, conventional displays 28, microphones 26, speakers 24, or other input/output mechanisms. Further, in some exemplary embodiments, a machine-to-machine interface may be utilized in the implementation of a user interface. For example, the user interface may also be implemented remotely using, for example, a hypertext transfer protocol (HTTP) or like.

The communication interfaces 415, 465 may be embodied as any devices or means embodied in either hardware, software, or a combination of hardware and software that are configured to receive and/or transmit data from/to a network and/or any other device or module in communication with the transmitting or receiving entities 400, 450, respectively. In this regard, the communication interfaces 415, 465 may include, for example, antennas 12, transmitters 14, receivers 16, transceivers and/or supporting hardware or software for enabling

communications with network 420, which may be any type of wired or wireless network, such as the system of FIG. 2. For example, the transmitting device 400 may be a base station, such as BS 44, and receiving device 450 may be a mobile terminal 10. In this regard, the base station may utilize communication interface 425 and mobile terminal may utilize communications interface 465 to communicate with each other. While network 420 may utilize a tiered structure, a peer-to-peer structure may also be implemented. Via the communication interfaces 415, 465 and the network 420, the transmitting and receiving entities 400, 450 may communicate with each other, or various other entities that may be connected to the network 420. In some exemplary embodiments, transmitting entity 400 may communicate directly with receiving entity 450 through a point-to-point link.

With respect to the transmitting entity 400, the packet generator 425, the reply receiver 430, and the silence generator 435 may be any means or device embodied in hardware, software, or a combination of hardware and software that is configured to carry out the functions of the packet generator 425, the reply receiver 430, and the silence generator 435 as described herein. In an exemplary embodiment, the processor 405 may include, or otherwise control the packet generator 425, the reply receiver 430, and the silence generator 435. In various exemplary embodiments, the packet generator 425, the reply receiver 430, and the silence generator 435 may reside on an entity remote from transmitting entity 400 such as a server, or other network device including a mobile terminal, such as mobile terminal 10 of FIG. 1.

According to various exemplary embodiments of the present invention, the packet generator 425 may be configured to provide for transmission of a data packet. In this regard, the transmitting entity 400 may include various means for providing for transmission of a data packet, which may include the processor 405, the packet generator 425, communications interface 415, a transmitter, a transceiver, and/or the like. According to various embodiments, the data packet may be included in a stream of data packets, such as the data packet stream 320. The data packet may be transmitted to the receiving entity 450.

The reply receiver 430 may be configured to receive a throughput adjustment reply. In this regard, the transmitting entity 400 may include various

means for receiving a throughput adjustment reply, which may include the processor 405, the reply receiver 430, the communications interface 415, a receiver, a transceiver, and/or the like. In some exemplary embodiments, the throughput adjustment reply may be a PNACK. According to some exemplary embodiments, receiving the throughput adjustment reply does not include receiving an echoed congestion indicator, such as a congestion bit. According to various embodiments, the throughput adjustment reply may be included in a feedback stream, such as the feedback stream 330. Further, receiving the throughput adjustment reply may indicate that an error check of a data packet determined that acceptable data was included in the data packet. In this regard, in some exemplary embodiments, acceptable data may be error free data, data that may be used to determine error free data, for example via data recovery mechanisms, or otherwise usable data. Further, the received throughput adjustment reply may include a representation of a transmission silence period duration. In some exemplary embodiments, the throughput adjustment reply may be received from the receiving entity 450.

The silence generator 435 may be configured to implement a transmission silence period. In this regard, the transmitting entity 400 may include various means for implementing a transmission silence period, which may include the processor 405, the packet generator 425, a transmitter, a transceiver, and/or the like. The transmission silence period may be implemented within a stream of data packets, such as the data packet stream 320. Further, the transmission silence period may be implemented in response to receiving a throughput adjustment reply. In this regard, in some embodiments, the transmission silence period may be implemented for a given duration. The given duration may be based upon a representation of a transmission silence duration provided in the throughput adjustment reply. In some exemplary embodiments, the transmission silence period may be implemented on a communications link to the receiving entity 450. In some exemplary embodiments, the reply receiver 430 may also be configured to receive an additional throughput adjustment reply or a positive acknowledgement reply. The additional throughput adjustment reply or a positive acknowledgement reply may be received in response to a transmission silence

period. In some exemplary embodiments, the positive acknowledgement reply may be an ACK and the additional throughput adjustment reply may be a PNACK. Further, the additional throughput reply or the positive acknowledgement reply may be received from the receiving entity 450. According to various embodiments, the throughput adjustment reply or the positive acknowledgement reply may be included in a feedback stream, such as the feedback stream 330. Additionally, the silence generator 435 may be further configured to implement an additional transmission silence period in response to receiving an additional throughput adjustment reply. The additional silence period may be implemented within a stream of data packets such as the data packet stream 320. Further, in some exemplary embodiments, the transmission silence period may be implemented on a communications link to the receiving entity 450.

With respect to the receiving entity 450, the packet receiver 470 and the reply generator 475 may be any means or device embodied in hardware, software, or a combination of hardware and software that is configured to carry out the functions of the packet receiver 470 and the reply generator 475 as described herein. In an exemplary embodiment, the processor 455 may include, or otherwise control the packet receiver 470 and the reply generator 475. In various exemplary embodiments, the packet receiver 470 and the reply generator 475 may reside on an entity remote from receiving entity 450 such as a server, or other network device including a mobile terminal, such as mobile terminal 10 of FIG. 1.

According to various exemplary embodiments of the present invention, the packet receiver 470 may be configured to receive a data packet. In this regard, the receiving entity 450 may include various means for receiving a data packet, which may include the processor 455, the packet receiver 470, communications interface 465, a receiver, a transceiver, and/or the like. According to various embodiments, a data packet may be included in a stream of data packets, such as the data packet stream 320. The data packet may be received from the transmitting entity 400.

The reply generator 475 may be configured to provide for transmission of a throughput adjustment reply. In this regard, the receiving entity 450 may include various means for providing for transmission of a throughput adjustment reply, which may include the processor 455, the reply generator 475, communications

interface 465, a transmitter, a transceiver, and/or the like. According to various embodiments, the throughput adjustment reply may be included in a feedback stream, such as the feedback stream 330. Further, the throughput adjustment reply may be a PNACK. Additionally, transmission of the throughput adjustment reply may be provided to implement a silence period. In this regard, the silence period may be implemented in a stream of data packets, such as the data packet stream 320. According to various exemplary embodiments, the throughput adjustment reply may be transmitted to the transmitting entity 400.

Further, in some exemplary embodiments, the reply generator 475 may be configured to provide for transmission of the throughput adjustment reply to implement the silence period for a given duration based on a representation of the given duration included in the throughput adjustment reply. In this regard, the reply generator 475 may be configured to include a representation of a duration of the silence period in the throughput adjustment reply. In some exemplary embodiments, the processor 455 may be configured to perform an error check on the data packet. In this regard, the receiving entity 450 may include various means for performing an error check, which may include the processor 455 and/or the like. The error check may be performed to determine if the data packet includes acceptable data. In this regard, acceptable data may include error free data, data that may be used to determine error free data, for example via data recovery mechanisms, or otherwise usable data. In some exemplary embodiments, the reply generator 475 may be configured to provide for transmission of the throughput adjustment reply in response to determining that a data packet includes acceptable data. Additionally, in some exemplary embodiments, the reply generator 475 may be configured to provide for transmission of an additional throughput adjustment reply or a positive acknowledgement reply. In some exemplary embodiments, the additional adjustment reply may be a PNACK and the positive acknowledgement reply may be an ACK. Further, transmission of the additional throughput adjustment reply or the positive acknowledgement reply may be provided in response to detecting a silence period in a stream of data packets, such as the data packet stream 320. According to various embodiments, the throughput

adjustment reply or the positive acknowledgement reply may be included in a feedback stream, such as the feedback stream 330.

In some additional exemplary embodiments, the reply generator 475 may be configured to detect congestion in a communications link. In this regard, a received data packet may be received via the communications link. The communications link may be a channel, a frequency, a layer of a communications system, the network of a communications system (e.g., network 420), some subset of the network of a communications system (e.g., communications link between transmitting entity 400 and receiving entity 450), or the like. The reply generator 475 may be further configured to provide for transmission of a throughput adjustment reply in response to the detection of congestion in the communications link. The reply generator may be configured to monitor an amount of free buffering capacity in an egress direction against a buffering threshold. In some exemplary embodiments, if the free buffering capacity falls below the buffering threshold, a throughput adjustment reply may be transmitted.

FIGs. 5 through 8 are flowcharts of systems, methods, and program products according to exemplary embodiments of the invention. It will be understood that each block, step, or operation of the flowcharts, and combinations of blocks, steps or operations in the flowcharts, can be implemented by various means, such as hardware, firmware, and/or software including one or more computer program code portions, program instructions, or executable program code portions. For example, one or more of the procedures described herein may be embodied by computer program code instructions. In this regard, the computer program instructions which embody the procedures described herein may be stored by a memory device of the apparatus and executed by a processor in the apparatus. As will be appreciated, any such computer program instructions may be loaded onto a computer or other programmable apparatus (i.e., hardware) to produce a machine, such that the instructions which execute on the computer or other programmable apparatus create means for implementing the functions specified in the flowcharts block(s), step(s), or operation(s). These computer program instructions may also be stored in a computer-readable memory that can direct a computer, a processor, or other programmable apparatus to function in a particular

manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including instruction means which implement the function specified in the flowcharts block(s), step(s), or operation(s). The computer program instructions may also be loaded onto a computer, processor, or other programmable apparatus to cause a series of operational steps to be performed on the computer, processor, or other programmable apparatus to produce a computer-implemented process such that the instructions which execute on the computer, processor, or other programmable apparatus provide steps for implementing the functions specified in the flowcharts block(s), step(s), or operation(s).

Accordingly, blocks, steps, or operations of the flowcharts support combinations of means for performing the specified functions, combinations of steps for performing the specified functions and program instruction means for performing the specified functions. It will also be understood that one or more blocks, steps, or operations of the flowcharts, and combinations of blocks, steps, or operations in the flowcharts, can be implemented by special purpose hardware- based computer systems which perform the specified functions, steps, algorithms, or combinations of special purpose hardware and computer instructions.

In this regard, the exemplary methods described with respect to FIGs. 5 through 8 may be performed on various apparatuses including, for example, the transmitting entity 400, the receiving entity 450, or the like. In some exemplary embodiments, the methods described with respect to FIGs. 5 through 8 may be performed by the processor 405 in conjunction with the memory device 410, and/or the processor 455 in conjunction with the memory device 460. In this regard, one exemplary embodiment of a method for throughput control as illustrated in FIG. 5 may include receiving a data packet at 500. In this regard, the data packet may be included in a stream of data packets, such as the data packet stream 320. The exemplary method may also include providing for transmission of a throughput adjustment reply to implement a silence period in the stream of data packets at 510. In some exemplary embodiments, providing for transmission of the throughput adjustment reply may include providing for transmission of the throughput adjustment reply to implement the silence period

for a given duration. In this regard, the given duration may be based on a representation of the given duration included in the throughput adjustment reply. Further, the silence period may be included in a stream of data packets, such as the data packet stream 320. Another exemplary embodiment of a method for throughput control as illustrated in FIG. 6 may include receiving a data packet at 600. In this regard, the data packet may be included in a stream of data packets, such as the data packet stream 320. The method may also include performing an error check on the data packet to determine if the data packet includes acceptable data at 610. In this regard, acceptable data may include error free data, data that may be used to determine error free data, or otherwise usable data.

The exemplary method of FIG. 6 may also include providing for transmission of a throughput adjustment reply at 620. Transmission of the throughput adjustment reply may be provided to implement a silence period in the stream of data packets. The silence period may be included in a stream of data packets, such as the data packet stream 320. Further, providing for transmission of the throughput adjustment reply may include providing for transmission of the throughput adjustment reply in response to determining that the data packet includes acceptable data. In some exemplary embodiments, the exemplary method of FIG. 6 may also include providing for transmission of an additional throughput adjustment reply or a positive acknowledgement reply at 630. Further, transmission of the additional throughput adjustment reply or the positive acknowledgement reply may be provided in response to detecting the silence period in the stream of data packets.

In some additional exemplary embodiments, the method may include detecting congestion in a communications link. In this regard, a received data packet may be received via the communications link. The communications link may be a channel, a frequency, a layer of a communications system, the network of a communications system (e.g., network 420), some subset of the network of a communications system (e.g., communications link between transmitting entity 400 and receiving entity 450), or the like. In this regard, the method may also

include providing for transmission of a throughput adjustment reply in response to the detection of congestion in the communications link. The method may also include monitoring an amount of free buffering capacity in an egress direction against a buffering threshold. In some exemplary embodiments, if the free buffering capacity falls below the buffering threshold, a throughput adjustment reply may be transmitted.

Another exemplary embodiment of a method for throughput control as illustrated in FIG. 7 may include providing for transmission of a data packet at 700. In this regard, the data packet may be included in a stream of data packets, such as the data packet stream 320. The exemplary method may also include receiving a throughput adjustment reply at 710. In some exemplary embodiments, receiving the throughput adjustment reply may indicate that an error check of a data packet determined that acceptable data was included in the data packet. Further, in some exemplary embodiments, the throughput adjustment reply may include a representation of a transmission silence period duration.

Additionally, the exemplary method may include implementing a transmission silence period at 720. The silence period may be included in a stream of data packets, such as the data packet stream 320. Further, the transmission silence period may be implemented in response to receiving a throughput adjustment reply. In some exemplary embodiments, implementing a transmission silence period may include implementing a transmission silence period for a given duration based on a transmission silence period duration acquired from a representation of the transmission silence period duration included in a throughput adjustment reply. Another exemplary embodiment of a method for throughput control as illustrated in FIG. 8 may include providing for transmission of a data packet at 800. In this regard, the data packet may be included in a stream of data packets, such as the data packet stream 320. The exemplary method may also include receiving a throughput adjustment reply at 810. Additionally, the exemplary method may include implementing a transmission silence period at 720. The silence period may be included in a stream of data packets, such as the data packet

stream 320. Further, the transmission silence period may be implemented in response to receiving a throughput adjustment reply.

Further, the exemplary method of FIG. 8 may include receiving an additional throughput adjustment reply or a positive acknowledgment reply in response to the transmission silence period at 830. Further, the exemplary method may include implementing an additional transmission silence period in the stream of data packets in response to receiving an additional throughput adjustment reply at 840.

Many modifications and other embodiments of the inventions set forth herein will come to mind to one skilled in the art to which these inventions pertain having the benefit of the teachings presented in the foregoing descriptions and the associated drawings. Therefore, it is to be understood that the inventions are not to be limited to the specific embodiments disclosed and that modifications and other embodiments are intended to be included within the scope of the appended claims. Moreover, although the foregoing descriptions and the associated drawings describe exemplary embodiments in the context of certain exemplary combinations of elements and/or functions, it should be appreciated that different combinations of elements and/or functions may be provided by alternative embodiments without departing from the scope of the appended claims. In this regard, for example, different combinations of elements and/or functions than those explicitly described above are also contemplated as may be set forth in some of the appended claims. Although specific terms are employed herein, they are used in a generic and descriptive sense only and not for purposes of limitation.