Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
COORDINATION OF VOIP AND WIRELESS NETWORK PROCESSING
Document Type and Number:
WIPO Patent Application WO/2015/000169
Kind Code:
A1
Abstract:
Devices, methods and machine-readable media coordinate processing VoIP processing with network processing for a wireless or wired network. The embodiments defer processing associated with wireless or wired network tasks if the quantity of VoIP data to be processed exceeds a threshold quantity.

Inventors:
TU YIFENG (US)
WANG YUANXI (CN)
Application Number:
PCT/CN2013/078869
Publication Date:
January 08, 2015
Filing Date:
July 05, 2013
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
QUALCOMM INC (US)
TU YIFENG (US)
WANG YUANXI (CN)
International Classes:
H04W76/02
Domestic Patent References:
WO2001008426A22001-02-01
Foreign References:
CN101610161A2009-12-23
CN102970757A2013-03-13
Attorney, Agent or Firm:
SHANGHAI PATENT & TRADEMARK LAW OFFICE, LLC (Shanghai 3, CN)
Download PDF:
Claims:
WHAT IS CLAIMED IS:

1. A method comprising:

receiving one or more packets associated with a first communication interface;

determining a quantity of data for processing associated with a second communication interface; and

in response to determining that the quantity of data for processing associated with the second communication interface exceeds a threshold, deferring processing of the one or more packets associated with the first communication interface.

2. The method of claim 1, further comprising:

receiving one or more packets associated with the second communication interface; and in response to receiving the one or more packets associated with the second

communication interface, inserting a token into a token bucket associated with the second communication interface.

3. The method of claim 2, wherein determining the quantity of data for processing at the second communication interface comprises determining a number of tokens in the token bucket associated with the second communication interface.

4. The method of claim 2, further comprising:

processing the one or more packets associated with the second communication interface; and

in response to completing processing the one or more packets, removing the token

associated with the one or more packets from the token bucket associated with the second communication interface.

5. The method of claim 1, further comprising determining the threshold based, at least in part, on a size of a buffer associated with the second communication interface.

6. The method of claim 1, wherein receiving the one or more packets associated with the first communication interface comprises receiving the one or more packets for transmission using the first communication interface, and further comprising:

determining that a priority associated with the one or more packets is included in a subset of a plurality of packet transmission priorities; and

in response to determining that the priority associated with the one or more packets is included in the subset of the plurality of packet transmission priorities, transmitting the packets using the first communication interface regardless of the quantity of data for processing associated with the second communication interface.

7. A device comprising:

a first communication interface to send and receive packets;

a second communication interface;

a packet processor for the first interface, the packet processor configured to:

determine a quantity of data for processing associated with the second

communication interface; and

in response to determining the quantity of data for processing associated with the second communication interface exceeds a threshold, defer processing one or more packets associated with the first communication interface.

8. The device of claim 7, further comprising:

an interrupt service routine for the second communication interface, the interrupt service routine configured to, in response to reception of one or more packets associated with the second communication interface, insert a token into a token bucket associated with the second communication interface.

9. The device of claim 8, wherein the determination of the quantity of data for processing at the second communication interface comprises a determination of a number of tokens in the token bucket associated with the second communication interface.

10. The device of claim 8, further comprising a second packet processor to process the one or more packets associated with the second communication interface, the second packet processor configured to, in response to completing processing the one or more packets, remove the token from the token bucket associated with the second communication interface.

1 1. The device of claim 7, wherein the threshold is determined, based, at least in part, on a size of a buffer associated with the second communication interface.

12. The device of claim 7, wherein the one or more packets associated with the first communication interface comprise one or more packets for transmission using the first communication interface, and wherein the packet processor is further configured to:

determine that a priority associated with the one or more packets is included in a subset of a plurality of packet transmission priorities; and

in response to the determination that the priority associated with the one or more packets is included in the subset of the plurality of packet transmission priorities, transmit the one or more packets using the first communication interface regardless of the quantity of data for processing associated with the second communication interface.

13. The device of claim 7, wherein the first communication interface comprises a wireless networking interface and wherein the second communication interface comprises a Subscriber Line Interface Circuit (SLIC).

14. One or more machine-readable media having stored thereon machine executable instructions, which when executed by a processor causes the processor to perform operations that comprise:

receiving one or more packets associated with a first communication interface;

determining a quantity of data for processing associated with a second communication interface; and

in response to determining that the quantity of data for processing associated with the second communication interface exceeds a threshold, deferring processing of the one or more packets associated with the first communication interface.

15. The one or more machine-readable media of claim 14, wherein the operations further comprise:

receiving one or more data packets associated with the second communication interface; and

in response to receiving the one or more packets associated with the second

communication interface, inserting a token into a token bucket associated with the second communication interface.

16. The one or more machine-readable media of claim 15, wherein determining the quantity of data for processing at the second communication interface comprises determining a number of tokens in the token bucket associated with the second communication interface.

17. The one or more machine-readable media of claim 15, wherein the operations further comprise:

processing the one or more packets associated with the second communication interface; and

in response to completing processing the one or more packets, removing the token from the token bucket associated with the second communication interface.

18. The one or more machine-readable media of claim 14, wherein the operations further comprise determining the threshold based, at least in part, on a size of a buffer associated with the second communication interface.

19. The one or more machine-readable media of claim 14, wherein receiving the one or more packets associated with the first communication interface comprises receiving the one or more packets for transmission using the first communication interface, and wherein the operations further comprise:

determining that a priority associated with the one or more packets is included in a subset of a plurality of packet transmission priorities; and

in response to determining that the priority associated with the one or more packets is included in the subset of the plurality of packet transmission priorities, transmitting the one or more packets using the first communication interface regardless of the quantity of data for processing associated with the second communication interface.

A system comprising:

means for receiving one or more packets associated with a first communication interface; means for determining a quantity of data for processing associated with a second

communication interface; and

means for, in response to determining that the quantity of data for processing associated with the second communication interface exceeds a threshold, deferring processing of the one or more packets associated with the first communication interface.

21. The system of claim 20, further comprising:

means for receiving one or more packets associated with the second communication interface; and

means for, in response to receiving the one or more packets associated with the second interface, inserting a token into a token bucket associated with the second communication interface.

22. The system of claim 22, wherein the means for determining the quantity of data for processing at the second communication interface comprises means for determining a number of tokens in the token bucket associated with the second communication interface.

23. The system of claim 22, further comprising:

means for processing the one or more packets associated with the second communication interface; and

means for, in response to completing processing the one or more packets, removing the token from the token bucket associated with the second communication interface.

The system of claim 21, further comprising means for determining the threshold based, at part, on a size of a buffer associated with the second communication interface.

25. The system of claim 21, wherein the means for receiving the one or more packets associated with the first communication interface comprises means for receiving the one or more packets for transmission using the first communication interface, and further comprising:

means for determining that a priority associated with the one or more packets is included in a subset of a plurality of packet transmission priorities; and

means for, in response to determining that the priority associated with the one or more packets is included in the subset of the plurality of packet transmission priorities, transmitting the one or more packets using the first communication interface regardless of the quantity of data for processing associated with the second communication interface.

Description:
COORDINATION OF VOIP AND WIRELESS NETWORK PROCESSING

BACKGROUND

[0001] Embodiments of the inventive subject matter generally relate to the field of network data processing, and, more particularly, to coordinating network data processing with VoIP processing.

[0002] In many conventional residential gateway devices, VoIP (Voice over Internet Protocol) processing tasks are handled by a dedicated digital signal processor (DSP). In recent years, single core processors have become increasingly powerful. In some cases, a processor may have integrated DSP instructions in its instruction set architecture (ISA), allowing a residential gateway to adopt a simpler architecture that eliminates a dedicated DSP for VoIP processing. In such an architecture, the processor handles both data and VoIP traffic. In order to provide satisfactory voice quality, VoIP tasks typically need access to CPU cycles every 10ms or 20ms in order to meet real-time and latency requirements associated with VoIP processing. However, in a uniprocessor system, when both VoIP tasks and wireless (e.g., Wi-Fi®) tasks are running simultaneously, CPU cycles are not guaranteed to VoIP tasks. The contention for CPU cycles may lead to reduced voice call quality or even dropped calls.

SUMMARY

[0003] In some embodiments, a method comprises receiving one or more packets associated with a first communication interface; determining a quantity of data for processing associated with a second communication interface; and in response to determining that the quantity of data for processing associated with the second communication interface exceeds a threshold, deferring processing of the one or more packets associated with the first communication interface.

[0004] In some embodiments, the method further comprises receiving one or more packets associated with the second communication interface; and in response to receiving the one or more packets associated with the second communication interface, inserting a token into a token bucket associated with the second communication interface. [0005] In some embodiments, determining the quantity of data for processing at the second communication interface comprises determining a number of tokens in the token bucket associated with the second communication interface.

[0006] In some embodiments, the method further comprises processing the one or more packets associated with the second communication interface; and in response to completing processing the one or more packets, removing the token associated with the one or more packets from the token bucket associated with the second communication interface.

[0007] In some embodiments, the method further comprises determining the threshold based, at least in part, on a size of a buffer associated with the second communication interface.

[0008] In some embodiments, receiving the one or more packets associated with the first communication interface comprises receiving the one or more packets for transmission using the first communication interface, and further comprises determining that a priority associated with the one or more packets is included in a subset of a plurality of packet transmission priorities; and in response to determining that the priority associated with the one or more packets is included in the subset of the plurality of packet transmission priorities, transmitting the packets using the first communication interface regardless of the quantity of data for processing associated with the second communication interface.

[0009] In some embodiments, a device comprises a first communication interface to send and receive packets; a second communication interface; a packet processor for the first interface, the packet processor configured to determine a quantity of data for processing associated with the second communication interface; and in response to determining the quantity of data for processing associated with the second communication interface exceeds a threshold, defer processing one or more packets associated with the first communication interface.

[0010] In some embodiments, the device further comprises an interrupt service routine for the second communication interface, the interrupt service routine configured to, in response to reception of one or more packets associated with the second communication interface, insert a token into a token bucket associated with the second communication interface. [0011] In some embodiments, the determination of the quantity of data for processing at the second communication interface comprises a determination of a number of tokens in the token bucket associated with the second communication interface.

[0012] In some embodiments, the device further comprises a second packet processor to process the one or more packets associated with the second communication interface, the second packet processor configured to, in response to completing processing the one or more packets, remove the token from the token bucket associated with the second communication interface.

[0013] In some embodiments, the threshold is determined, based, at least in part, on a size of a buffer associated with the second communication interface.

[0014] In some embodiments, the one or more packets associated with the first

communication interface comprise one or more packets for transmission using the first communication interface, and the packet processor is further configured to determine that a priority associated with the one or more packets is included in a subset of a plurality of packet transmission priorities; and in response to the determination that the priority associated with the one or more packets is included in the subset of the plurality of packet transmission priorities, transmit the one or more packets using the first communication interface regardless of the quantity of data for processing associated with the second communication interface.

[0015] In some embodiments, the first communication interface comprises a wireless networking interface and the second communication interface comprises a Subscriber Line Interface Circuit (SLIC).

[0016] In some embodiments, one or more machine-readable media having stored thereon machine executable instructions, which when executed by a processor causes the processor to perform operations that comprise receiving one or more packets associated with a first communication interface; determining a quantity of data for processing associated with a second communication interface; and in response to determining that the quantity of data for processing associated with the second communication interface exceeds a threshold, deferring processing of the one or more packets associated with the first communication interface.

[0017] In some embodiments, the operations further comprise receiving one or more data packets associated with the second communication interface; and in response to receiving the one or more packets associated with the second communication interface, inserting a token into a token bucket associated with the second communication interface.

[0018] In some embodiments, determining the quantity of data for processing at the second communication interface comprises determining a number of tokens in the token bucket associated with the second communication interface.

[0019] In some embodiments, the operations further comprise processing the one or more packets associated with the second communication interface; and in response to completing processing the one or more packets, removing the token from the token bucket associated with the second communication interface.

[0020] In some embodiments, the operations further comprise determining the threshold based, at least in part, on a size of a buffer associated with the second communication interface.

[0021] In some embodiments, receiving the one or more packets associated with the first communication interface comprises receiving the one or more packets for transmission using the first communication interface, and the operations further comprise determining that a priority associated with the one or more packets is included in a subset of a plurality of packet transmission priorities; and in response to determining that the priority associated with the one or more packets is included in the subset of the plurality of packet transmission priorities, transmitting the one or more packets using the first communication interface regardless of the quantity of data for processing associated with the second communication interface.

[0022] In some embodiments, a system comprises means for receiving one or more packets associated with a first communication interface; means for determining a quantity of data for processing associated with a second communication interface; and means for, in response to determining that the quantity of data for processing associated with the second communication interface exceeds a threshold, deferring processing of the one or more packets associated with the first communication interface. BRIEF DESCRIPTION OF THE DRAWINGS

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

[0024] The term "based on" is used in the specification and claims to describe one or more factors that affect a determination. This term does not foreclose additional factors that may affect a determination. That is, a determination may be solely based on those factors or based, at least in part, on those factors. Consider the phrase "determine A based on B." While B may be a factor that affects the determination of A, such a phrase does not foreclose the determination of A from also being based on C. In other instances, A may be determined based solely on B.

[0025] Figure 1 is a block diagram depicting components of a gateway system according to embodiments.

[0026] Figure 2 is a block diagram illustrating components of a communication coordination component according to embodiments.

[0027] Figure 3 is a flow chart illustrating a method for receiving data according to embodiments.

[0028] Figure 4 is a flow chart illustrating a method for coordinating processing of network data according to embodiments.

[0029] Figure 5 is a block diagram illustrating components of a communication coordination component according to alternative embodiments.

DESCRIPTION OF EMBODIMENT(S)

[0030] The description that follows includes example systems, methods, techniques, instruction sequences and computer program products that embody techniques of the present inventive subject matter. However, it is understood that the described embodiments may be practiced without these specific details. For instance, although examples refer to particular communication interfaces, other communication interfaces such as 3 G or 4G LTE (Long Term Evolution) may be used as well. In other instances, well-known instruction instances, protocols, structures and techniques have not been shown in detail in order not to obfuscate the description.

[0031] In general, the embodiments coordinate VoIP processing with network processing for a wireless or wired network. The embodiments defer processing associated with wireless or wired network tasks if the quantity of VoIP data to be processed exceeds a threshold quantity.

[0032] Figure 1 is a block diagram depicting components of a system 100 according to some embodiments, wherein system 100 comprises a gateway system 102 that provides an interface between a telephone handset and a VoIP communication system. Gateway system 102 includes at least one processor 104, a telephone interface 106, and either or both a wireless network interface 108 and a wired network interface 1 10. Gateway 102 further includes communication coordination tasks 120 executed by processor 104 from memory 1 14 to coordinate processing between tasks associated with VoIP processing and tasks associated with processing data received at a wireless network interface 108 or wired network interface 1 10. In some embodiments, processor 104 is a single core processor having a RISC (Reduced Instruction Set Computing) architecture. However, the embodiments are not limited to RISC architectures (e.g., Complex Instruction Set Computing (CISC) architecture), to single core processors (e.g., a multi-core processor), or to a system having a single processor (e.g., an architecture including multiple CPUs for parallel or concurrent processing).

[0033] Telephone interface 106 provides an interface between a telephone handset 1 12 and gateway system 102. Telephone handset 1 12 may be an analog telephone handset or digital telephone handset configured to connect to a plain old telephone service (POTS), e.g., using a cable having a connector such as 6P2C, 6P4C, 6P6C, 8P4C, etc. formats for coupling to a registered jack (RJ, e.g., RJ1 1 , RJ12, RJ31X, etc.) of the telephone interface 106. In some embodiments, telephone interface 106 is a Subscriber Line Interface Circuit (SLIC). Telephone interface 106 may be configured to provide ring generation, on/off hook detection, analog to digital conversion (ADC) and digital to analog (DAC) conversion. Telephone interface 106 may implement PCM (pulse code modulation) and Serial Peripheral Interface (SPI) as interface methods between telephone handset 1 12 and processor 104.

[0034] Wireless network interface 108 may implement any of a variety of wireless network interfaces allowing gateway system 102 to communicate with peer wireless network devices. For example, wireless network interface 108 may be a WLAN interface, a BLUETOOTH® (Bluetooth) interface, a WiMAX interface, a ZigBee® interface, a Wireless USB interface, etc.

[0035] Wired network interface 1 10, when present, may be any type of wired interface communicably coupling gateway system 102 to a WAN (Wide Area Network). For example, wired network interface may be an Ethernet interface or a powerline communication network interface. In some embodiments, wired network interface 1 10 may implement a RGMII (Reduced Gigabit Media Independent Interface).

[0036] Coordinated communication tasks 120 are a set of tasks used to process data that is received or transmitted over the various interfaces provided by gateway system 102 (e.g., telephone interface 106, wireless network interface 108 and wired network interface 1 10), wherein the tasks may include methods of coordinating processing between some or all of the tasks. Further details on a set of coordinated communication tasks 120 according to

embodiments are provided below with reference to Figure 2.

[0037] In some embodiments, a task or tasklet may be a process, thread, subroutine, function or other unit of executable code that can be scheduled for execution on one or more processors (e.g., processor 104). In alternative embodiments, a task or tasklet may be embodied in firmware or in one or more embedded circuits. In further alternative embodiments, a task or tasklet may be embodied as one or a combination of some or all of executable code, firmware and embedded circuits. Tasks, tasklets, and routines are described below as executing, handling, and processing information, interrupts, etc., meaning that, in some embodiments, one or more processors of a device execute the tasks so that the device takes the action(s) described below. In alternative embodiments, firmware and/or software may be executed and/or an embedded circuit activated for the device to take the below described actions.

[0038] Figure 2 is a block diagram illustrating coordinated communication components 200 according to embodiments. In some embodiments, coordinated communication components 200 include telephone interface ISR (Interrupt Service Routine) 202, VoIP task 204, VoIP call control task 206, wireless interface ISR 208, and wireless tasklet 210.

[0039] Telephone interface ISR 202 handles transmit and receive interrupts related to transmitting or receiving data via the telephone interface. In some embodiments, telephone interface ISR 202 is periodically triggered and moves voice frames between memory accessible by processor 104 and telephone interface 106. In some embodiments, the period for triggering an interrupt may be 10ms, in alternative embodiments, the period may be 20ms. A transmit interrupt may be triggered when 10ms or 20ms of voice data frames are to be transmitted to telephone interface 106. Similarly, a receive interrupt may be triggered when 10ms or 20ms of voice data frames are received from telephone interface 106. Telephone ISR 202 generally moves data to and from transmit and receive queues, and then schedules VoIP task 204 to process the data.

[0040] VoIP task 204 may be scheduled by telephone ISR 202 and processes data after it is received from telephone interface 106 or before transmission to telephone interface 106. VoIP task 204 includes instructions or logic for various processing for data on transmit or receive queues associated with telephone interface 106. Such processing may include voice encoding, voice decoding, echo cancellation, tone generation and detection, jitter buffer processing, sample rate conversion, filtering data and mixing data. The frequency at which VoIP task 204 runs can have an impact on call quality. Thus, VoIP task 204 may be scheduled to run every 10ms or 20ms in order to provide desirable end-to-end latency.

[0041] VoIP call control task 206 is for handling call setup and teardown. In some embodiments, VoIP call control task 206 is event driven and typically does not have a stringent real-time processing requirement. Examples of events handled by execution of VoIP call control task 206 are phone off-hook events, session initiation events, phone on-hook transitions etc. In some embodiments, VoIP call control task 206 is used to implement Session Initiation Protocol (SIP) to start and end sessions and provide other session control functions.

[0042] Wireless interface ISR 208 is invoked when one or more wireless data frames are transmitted or received. In some embodiments, wireless interface ISR 208 performs minimal processing of the data, for example setting and clearing registers indicating the location and status of data transmitted or received via wireless interface 108.

[0043] Wireless tasklet 210 processes the data received via wireless network interface 108. For example, wireless tasklet 210 may process header information in received packets to determine a destination application to receive the data. Wireless tasklet 210 may also encrypt or decrypt data in packets transmitted or received, respectively, via wireless interface 108. The processing performed by wireless tasklet 210 may be processor intensive. Further, the processing performed by wireless tasklet 210 is dependent on the quantity of data transmitted or received through wireless interface 106; the more data that is transmitted/received, the more processor time consumed by wireless tasklet 210.

[0044] As shown in Figure 2, wireless tasklet 210 may maintain multiple transmit queues. In some embodiments, transmit queues may be assigned a priority. For example, four priorities may be assigned for data: Voice (VO), Video (VI), Best Effort (BE), and Background (BK) in descending priority. A transmit queue may be maintained for each priority level. Wireless tasklet 210 may insert data into a transmit queue based on the priority associated with the data, and wireless interface ISR 208 may select data for transmission based on the priority associated with a queue.

[0045] In order to coordinate processor use between wireless tasklet 210 and VoIP task 204, coordination data 220 is maintained by telephone interface ISR 202 and VoIP task 204. VoIP coordination data 220 is monitored by wireless tasklet 210, which defers processing of wireless network data in the transmit and receive queues associated with a wireless interface if the quantity of data to be processed by VoIP task 204 exceeds a threshold quantity. In some embodiments, VoIP coordination data 220 is implemented as a token bucket. As voice data is received by telephone interface ISR 202, tokens 222 are added to the token bucket. As voice data is processed by VoIP task 204, tokens 222 are removed from the token bucket. Wireless tasklet 210 monitors the VoIP token bucket and if the number of tokens in the VoIP token bucket exceeds a threshold quantity, wireless tasklet 210 defers processing, thereby allowing VoIP task 204 to use processor time to process voice data received for the telephone interface. Further details on operations performed by the above-described system are provided below with respect to Figures 3 and 4.

[0046] Figure 3 is a flow chart illustrating a method 300 for receiving data according to embodiments. Method 300 begins at block 302 with receiving one or more packets associated with a communication interface. As an example, the received data may be voice frames received via a telephone interface 106.

[0047] At block 304, upon completing reception of the one or more packets (i.e., transmission is completed from telephone interface 106), a token is inserted into a token bucket associated with the communication interface. The token may represent a particular quantity of data. The quantity may be expressed in terms of bytes or in terms of time (e.g., 10ms, 20ms etc.) In some embodiments, telephone interface ISR 202 inserts a token into a token bucket associated with telephone interface 106 upon determining that transmission of data from telephone interface 106 has completed.

[0048] At block 306, the packets received at block 302 are processed. For example, a VoIP task 204 may process the received data. Such processing can include voice encoding, voice decoding, echo cancellation, tone generation and detection, jitter buffer processing, sample rate conversion, filtering data and mixing data.

[0049] At block 308, upon completion of processing the data at block 306, a token associated with the data is removed from the token bucket. For example, VoIP task 204 may remove a token associated with the data processed by VoIP task 204.

[0050] Figure 4 is a flow chart illustrating a method 400 for coordinating processing of data received for various communication interfaces according to embodiments. The method discussed above in Figure 3 describes operations that may be performed by a communication interface such as a VoIP interface that transmits or receives voice frames via a telephone interface. Figure 4 describes operations that are performed by a first communication interface (e.g., a wireless interface) where the method coordinates processing with a second interface (e.g., a VoIP interface) based on the amount of data to be processed by the "second interface.

However, it should be noted that the first and second interfaces may be other types of interfaces and are not limited to wireless interfaces or VoIP interfaces.

[0051] Method 400 begins at block 402 with receiving packets associated with a first communication interface. For example, the first communication interface may be a wireless network interface 108. The packets may be received from an application for transmission via the first communication interface or the packets may be received at the first communication interface for delivery to an application.

[0052] At block 404, a packet processing task determines a quantity of data to be processed associated with a second communication interface. For example, a wireless tasklet 210 may determine a quantity of data associated with a telephone interface 106. The quantity of data may be determined in terms of bytes or in terms of time (e.g., 10ms, 20ms etc.) In some

embodiments, the quantity of data is represented by tokens, where each token represent a quantity of data. In such embodiments, a packet processing task such as wireless tasklet 210 may monitor a token bucket associated with a telephone interface 106.

[0053] At block 406, a determination is made as to whether the quantity of data to be processed exceeds a threshold quantity. The threshold quantity may be a predetermined or configurable quantity. In some embodiments, the threshold quantity may be determined based, at least in part, on the buffer capability of the second communication interface. As an example, if the second communication interface is a VoIP interface having a buffer capable of buffering 30ms of data, and if data is inserted at 10ms intervals, then the threshold may be configured to be 20ms of data. Thus, if each token represents 10ms of data, then the threshold may be set at two tokens.

[0054] If the check at block 406 determines that the quantity of data to be processed associated with the second communication interface is below the threshold quantity, then at block 408, the packet processing task proceeds to process the data associated with the first communication interface.

[0055] If the check at block 406 determines that the quantity of data to be processed at the second communication interface is above the threshold quantity, then at block 410 the packet processing task defers processing packets associated with the first communication interface. Such deferral can allow packets associated with the second communication interface to be processed. After processing of packets associated with the first communication interface has been deferred, the method may return to block 404 to determine whether the quantity of data to be processed at the second communication interface is still above the threshold quantity . In some implementations, this may be accomplished by rescheduling the packet processing task associated with the first communication interface.

[0056] Thus, in embodiments where the first communication interface is a wireless interface and the second communication interface is a VoIP telephone interface, when wireless tasklet 210 is scheduled to run, the wireless tasklet 210 determines if there are any tokens in the VoIP token bucket. If the number of tokens in the token bucket exceeds the predetermined or configurable threshold, the wireless tasklet 210 defers processing of transmit or receive queues containing data associated with wireless network interface 108. The deferral allows the VoIP task 204 to utilize available processor cycles to process VoIP data, thereby avoiding reduced call quality or dropped calls that could result if the VoIP task 204 cannot process data in a timely manner.

[0057] In some embodiments, the processing at block 410 includes examining the token bucket when wireless packets received via wireless interface 108 are available for processing and when packets are submitted for transmission via wireless interface 108. In alternative embodiments, the token bucket is examined when packets received via wireless interface 108 are available for processing. However, for packets submitted for transmission via wireless interface 108, the token bucket may not be examined if the packets to be transmitted have a priority that indicates the packet is to be transmitted immediately. For example, as noted above, some wireless implementations support four priorities for packet transmission: Voice (VO), Video (VI), Best Effort (BE), and Background (BK) in descending priority. In such embodiments, VO packets are transmitted regardless of the number of tokens in the token bucket or quantity of data to be processed by VoIP task 204. In alternative embodiments, VO and VI packets are transmitted regardless of the number of tokens in the token bucket or quantity of data to be processed by VoIP task 204. BE and BK packets are processed if the number of tokens in the token bucket or quantity of data to be processed by VoIP task 204 are below the threshold.

[0058] In some embodiments, wireless task 210 is subdivided into two tasks, a transmit task and a receive task. The receive task is gated as described in Figure 4 and defers processing wireless data packets if the quantity of data associated with the telephone interface is above a threshold quantity. Such deferral occurs without regard to the priority of the packet. The transmit task defers processing packets to be transmitted over wireless interface 108 when the packets have a lower priority (e.g., BE and BK priorities) and if the quantity of data associated with the telephone interface is above a threshold quantity. However, for higher priority packets (e.g., VI or VO priorities), the transmit task does not defer processing and may not perform any checks regarding whether the quantity of data associated with the telephone interface is above a threshold quantity.

[0059] It should be noted that the operations illustrated in Figures 3 and 4 may overlap or be interspersed with one another. For example, ISRs (e.g., telephone interrupt ISR 202 or wireless interface ISR 208) may be triggered during the execution of operations associated with other components, such as VoIP task 204 or wireless tasklet 210.

[0060] Figure 5 is a block diagram illustrating components 500 of communication coordination tasks according to alternative embodiments. As described in Figure 1, a gateway system 102 may include multiple network interfaces (e.g., both a wireless interface 108 and a wired network interface 1 10). In such embodiments, communication coordination tasks include, in addition to the tasks illustrated in Figure 2, a WAN (Wide Area Network) interface ISR 502, a WAN tasklet 504 and WAN coordination data 520.

[0061] WAN interface ISR 502 executes when one or more Ethernet data frames are transmitted or received. Typically, WAN interface ISR 502 performs minimal processing of the data, for example setting and clearing registers indicating the location and status of data transmitted or received via wired network interface 1 10.

[0062] WAN tasklet 504 processes the data received via wireless network interface 108. For example, WAN tasklet 504 may process header information in received packets to determine a destination application to receive the data. WAN tasklet 504 may also encrypt or decrypt data in packets received of transmitted via wired network interface 1 10.

[0063] WAN coordination data 520, like VoIP coordination data 220, comprises data that indicates a quantity of data to be processed by WAN tasklet 504, which may be expressed in terms of bytes. WAN coordination data 520 may comprise a WAN coordination bucket, where tokens 522 represent the quantity of data to be processed by WAN tasklet 504. For example, a token may represent a particular amount of data or a particular number of packets.

[0064] In the embodiments illustrated in Figure 5, wireless tasklet 210, in addition to monitoring VoIP coordination data 220, also monitors WAN coordination data 520. If either of VoIP coordination data 220 or WAN coordination data 520 indicates that the data to be processed exceeds a threshold quantity, wireless tasklet 210 may defer processing of wireless packets, thereby allowing VoIP task 204 or WAN tasklet 504 the opportunity to process packets.

[0065] Additionally, WAN tasklet 504 monitors VoIP coordination data 220. If the VoIP coordination data 520 indicates that the quantity of data to be processed by VoIP task 204 exceeds a threshold quantity, then processing of packets by WAN tasklet 504 is deferred. [0066] Further details on system 100 of Figure 1 will now be provided. An electronic device such as gateway system 102 includes a processor 104 (possibly including multiple processors, multiple cores, multiple nodes, and/or implementing multi-threading, etc.). In some

embodiments, the electronic device may be implemented at least in part as a system on a chip (SOC). The electronic device includes memory 1 14. The memoryl 14 may be system memory (e.g., one or more of cache, SRAM, DRAM, zero capacitor RAM, Twin Transistor RAM, eDRAM, EDO RAM, DDR RAM, EEPROM, NRAM, RRAM, SONOS, PRAM, etc.) or any one or more of the above already described possible realizations of machine-readable media. The electronic device also includes a bus l 16 (e.g., PCI, ISA, PCI-Express, HyperTransport®, InfiniBand®, NuBus, etc.), and one or more network interfaces (e.g., wired network interface 1 10 and wireless network interface 108). Wired network interface 1 10 may be any type of wired network interface, including an ATM interface, an Ethernet interface, a Frame Relay interface, SONET interface, etc.). In some embodiments, system 100 may include a storage device(s)(not shown). Examples of such storage devices include optical storage, magnetic storage, etc. The system memory 1 14 embodies functionality to implement embodiments described above. The system memory 1 14 may include one or more communication coordination tasksl20. Any one of these functionalities may be partially (or entirely) implemented in hardware and/or on the processor 104. For example, the functionality may be implemented with an application specific integrated circuit, in logic implemented in the processor 104, in a co-processor on a peripheral device or card, etc. Further, realizations may include fewer or additional components not illustrated in Figure 1 (e.g., video cards, audio cards, additional network interfaces, peripheral devices, etc.). The processor 104, the storage device(s), and the network interfaces (e.g., wired network interface 1 10 and/or wireless network interface 108) are coupled to the bus l 16.

Although illustrated as being coupled to the bus l 16, the memoryl 14 may be coupled to the processor unitl 04.

[0067] Embodiments may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a "circuit," "module" or "system." Furthermore, embodiments of the inventive subject matter may take the form of a computer program product embodied in any tangible medium of expression having computer usable program code embodied in the medium. The described embodiments may be provided as a computer program product, or software, that may include a machine -readable medium having stored thereon instructions, which may be used to program a computer system (or other electronic device(s)) to perform a process according to embodiments, whether presently described or not, since every conceivable variation is not enumerated herein. A machine readable medium includes any mechanism for storing or transmitting information in a form (e.g., software, processing application) readable by a machine (e.g., a computer). The machine-readable medium may include, but is not limited to, magnetic storage medium (e.g., floppy diskette); optical storage medium (e.g., CD-ROM); magneto-optical storage medium; read only memory (ROM); random access memory (RAM); erasable programmable memory (e.g., EPROM and EEPROM); flash memory; or other types of medium suitable for storing electronic instructions. In addition, embodiments may be embodied in an electrical, optical, acoustical or other form of propagated signal (e.g., carrier waves, infrared signals, digital signals, etc.), or wireline, wireless, or other communication medium.

[0068] Computer program code for carrying out operations of the embodiments may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the "C" programming language or similar programming languages. The program code may execute entirely on a user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN), a personal area network (PAN), or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).

[0069] While the embodiments are described with reference to various implementations and exploitations, it will be understood that these embodiments are illustrative and that the scope of the inventive subject matter is not limited to them. In general, techniques for coordinating processing between a wireless processing task and a VoIP processing task as described herein may be implemented with facilities consistent with any hardware system or hardware systems. Many variations, modifications, additions, and improvements are possible. [0070] Plural instances may be provided for components, operations or structures described herein as a single instance. Finally, boundaries between various components, operations and data stores are somewhat arbitrary, and particular operations are illustrated in the context of specific illustrative configurations. Other allocations of functionality are envisioned and may fall within the scope of the inventive subject matter. In general, structures and functionality presented as separate components in the example configurations may be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component may be implemented as separate components. These and other variations, modifications, additions, and improvements may fall within the scope of the inventive subject matter.