Channel state information (CSI) packet transmission based on a dynamic transmission period

Techniques for transmitting channel state information (CSI) are described. In an example, a device determines a condition associated with a link parameter of a link between the device and another device. Based at least in part on the condition, the device determines a CSI packet period. The device transmits, to the other device and based at least in part on the CSI packet period, a CSI packet over the link. Accordingly, when the conditions change, the CSI packet period can be adapted to the changes, thereby improving the CSI transmissions over the link given the most current conditions.

BACKGROUND

Various types of computer networks are available to connect devices. For example, a wireless local area network (WLAN) links multiple devices using wireless communication to form a local area network within a limited area such as a home or office building. A mesh network is an example of another local computer network in which devices can connect wirelessly, directly and dynamically by forming non-hierarchal computing nodes. The various types of computer networks enable the connected devices to transmit traffic data, such as data generated and exchanged between applications executing on the devices. Additional computing services are possible, such as the transmission of channel state information (CSI) describing signal propagation between devices and making it possible to adapt data transmissions to channel conditions.

DETAILED DESCRIPTION

Embodiments of the present disclosure are directed to, among other things, dynamically transmitting CSI packets between devices. In an example, a first device establishes a link with a second device. The link is usable to transmit traffic between the two devices including, for instance, data packets of applications executing on one or both devices. In addition, the first device periodically transmits CSI packets to the second device. The periodicity of such transmissions, referred to herein as a CSI packet period, can be dynamic. In particular, depending on the current conditions associated with parameters of the link and/or the devices, such as the link's current congestion, transmission time, reception time, packet error rate, and/or number of connected devices, a particular CSI packet period is determined and used to transmit the CSI packets over the link. Upon a change to the conditions, the CSI packet period can be adjusted such that the CSI transmissions are adapted to the latest conditions.

To illustrate, consider an example of a mesh network that includes multiple nodes, such as routers and smart speakers distributed within a home. Additionally, mobile devices can connect to the mesh network at various times. Audio data can be streamed from a content data network and transmitted via the routers to the smart speakers and the mobile devices. In this example, the routers can also transmit CSI packets to the nodes and CSI-related measurements, such as signal propagation measurements, are performed to detect presence in support of a home security system. When audio packets are being transmitted between two nodes over a link, the first node may determine a first CSI packet period for transmitting CSI packets to the second node over the link. When audio packets are not transmitted and/or the audio transmission rate is decreased over the link, the first node may dynamically adjust the CSI periodicity to a shorter CSI packet period, thereby increasing the CSI packet transmission rate. In this way, when the link conditions allow a higher CSI packet transmission rate (e.g., in the case of no audio transmission or a lower audio transmission rate), the first node dynamically adapts the CSI periodicity, thereby supporting CSI-related measurements at a higher resolution and, in turn, allowing a more refined presence detection.

Embodiments of the present disclosure provide various technological improvements over a conventional system that transmits CSI packets. In particular, the conventional system can transmit CSI packets at a fixed packet interval. In other words, for the conventional system, CSI packet transmissions are not dynamic. Within the context of a distributed system, such as a mesh network, where one device can be connected to multiple devices, the use of a fixed packet interval for CSI packet transmissions can cause significant disruptions and interference to the data transmissions. In contrast, some embodiments of the present disclosure, the CSI packet transmissions are adapted to the current link and device conditions. Because the CSI packet period is dynamically adjusted, impacts of CSI packet transmissions on data transmissions, such as disruptions and interference, are properly reduced or mitigated even within the context of a distributed system. In addition, when the link and device conditions allow, the CSI packet period can be shortened, thereby increasing the CSI packet transmission rate. Within the context of presence detection, different types of motions necessitate different levels of sensitivities. Hence, the increase to the CSI packet transmission rate supports capturing a wide range of motions.

In the interest of clarity of explanation, various embodiments of the present disclosure are described in connection with using CSI packets for presence detection. However, the embodiments of the present disclosure are not limited as such. Instead, the embodiments similarly apply to any computing service that relies on CSI.

Furthermore, various embodiments are described with dynamically changing the CSI packet period based on link parameters. The embodiments similarly apply to dynamically changing other resources usable for transmitting CSI packets. For instance, the transmission bandwidth and/or the number of transmit and receive antennas can be similarly changed based on the same link parameters and/or other link parameters. In an example, the transmission bandwidth can be adjusted between 20 MHz, 40 MHz, and 80 MHz and/or the number of transmit and receive antennas can be varied between one, two, four, or six antennas such that the transmission of CSI packets does not impact or minimally impacts the quality of service associated with the transmission of data packets (e.g., audio packets) between devices.

FIG. 1illustrates an example of dynamic CSI packet transmission between devices, according to embodiments of the present disclosure. A first device110and a second device120are illustrated. Nonetheless, the embodiments of the present disclosure similarly apply to a larger number of connected devices. A link130exists between the first device110and the second device120and is used to transmit data packets132, CSI packets134, and acknowledgements (ACKs)136.

Generally, the link130represents a connection between a media access control (MAC) address of a radio of the first device110and a MAC address of a radio of the second device120over a frequency channel. The link130can support one or more communications protocols, such as a Wi-Fi communication protocol.

FIG. 1illustrates the first device110as a router. However, the embodiments of the present disclosure are not limited as such and similarly apply to any device type. Generally, the first device110represents a computing device that is capable of communicating with the second device120over the link130. In particular, the first device110includes one or more processors, one or more memories storing computer-readable instructions, one or more radios, one or more network interfaces, and/or other computing components. For instance, the first device110can be any of a router, an access point, a mobile device, a smart speaker, a multimedia device, an Internet of Things (IoT) device, or any other type of suitable computing device.

FIG. 1also illustrates the second device120as a smart speaker. However, the embodiments of the present disclosure are not limited as such and similarly apply to any device type. Additionally, the second device120can be of the same type as the first device110. Generally, the second device120represents a computing device that is capable of communicating with the first device110over the link130. In particular, the second device120includes one or more processors, one or more memories storing computer-readable instructions, one or more radios, one or more network interfaces, and/or other computing components. For instance, the second device120can be any of a router, an access point, a mobile device, a smart speaker, a multimedia device, an IoT device, or any other type of suitable computing device.

The first device110and the second device120form or belong to a computer network that includes two or more devices, such as WLAN or a mesh network. The two devices110can also, but need not, be connected in a peer-to-peer connection and/or can, but need not be, in a line of sight (LOS) relative to each other.

Each of the two devices110and120can execute one or more applications, resulting in application data. The application data can be transmitted from one device to the other one or between the two devices in the data packets132over the link130according to the communication protocol. In addition, the first device110can transmit the CSI packets134to second device120over the link130(additionally or alternatively, CSI packets can be transmitted in the opposite direction over the link130). Upon receiving a CSI packet, the second device120can respond with an acknowledgment (ACK) transmitted over the link130to the first device110(illustrated inFIG. 1as ACKs136transmitted in response to the CSI packets134).

The first device110(and similarly the second device110) can include multiple computing modules, each implemented in hardware and/or software executing on hardware. The computing modules include a CSI packet resource determination module112and a presence detection module114.

In an example, the CSI packet resource determination module112determines conditions associated with link parameters, such as the current congestion, transmission time, reception, and/or packet error rate of the link130and/or the number of devices with which the first device110is connected. Based on these conditions, the CSI packet resource determination module112determines and adjusts one or more CSI packet transmission resources, such as a CSI packet period for the transmission of the CSI packets134over the link130. The CSI packet period can indicate how often the device can transmit a CSI packet between the devices over the link. Generally, the conditions can change for various reasons including, for instance, the amount and/or transmission rate of the data packets132. The higher the busyness of the link130and/or the device110as indicated by the conditions, the longer the CSI packet period becomes. In this way, when the conditions indicate, for instance, a high data transmission rate, the CSI packet transmission rate can be reduced by increasing the CSI packet period to minimize or avoid disruption or interference with the transmission of the data packets132. Conversely, when the conditions indicate, for instance, a low data transmission rate or no data transmission, the CSI packet transmission rate can be increased because such disruption or interference would not exist.

Other resources for the transmission of CSI packets134can be similarly adjusted. For instance, the bandwidth, and/or number of antennas used in the transmission can be set depending on the same parameters (e.g., congestion, transmission time, reception, packet error rate, and/or number of connected devices) and/or other parameters (signal to noise ratio, battery level). Here also, depending on changes to the conditions, such resources can be adjusted. For instance, the higher the busyness of the link130and/or the device110, the lower the signal to noise ratio, and/or the lower the battery level of the device110as indicated by the conditions, the smaller the bandwidth and/or the smaller the number of antenna become.

The parameters and the conditions that CSI packet resource determination module112is to analyze can be defined in a data structure, as further illustrated in connection with the next figures. The data structure can be pre-stored by the device110(e.g., as part of device production or upon a first power on). Additionally or alternatively, the data structure and/or any updates thereto can be received from a server.

In an example, the presence detection module114uses CSI-related measurements to detect objects in the vicinity of the presence detection module114and, thereby, detect presences.

The CSI-related measurements can be performed based on the ACKs136. For instance, measurements at the physical layer of the signals encoding the ACKs are performed and include, propagation time delays, arrival angles, signal strengths, and the like. Changes in the measurements can indicate a motion of an object in vicinity of the device110. Generally, the higher the CSI packet transmission rate is (e.g., corresponding to a shorter CSI packet period), the higher the ACK transmission rate is, and, in turn, the higher the frequency and resolution of the CSI-related measurements are, allowing a higher level of presence detection sensitivity.

To illustrate, the first device110is a router located in a room and the second device120is a smart speaker also located in the room. Audio can be streamed from a remote audio source to the smart speaker via the router. When no audio stream exists, the CSI packet transmission rate can be maximized, resulting in the highest presence detection sensitivity. In this way, objects moving in the room can be detected with high precision and the type of the object can be recognized (e.g., human, pet, etc.). When an audio stream exists at a first audio resolution, the CSI packet transmission rate can be reduced. As a result, the presence detection sensitivity can be reduced to detecting the object, but, for example, not recognizing the type of the object. Yet, when an audio stream exists at a much higher audio resolution, the CSI packet transmission rate can be further reduced. As a result, the presence detection sensitivity can be reduced to detecting the object when in proximity to the smart speaker and/or the router.

In the interest of clarity of explanation, various embodiments are described in connection with adjusting the CSI packet period. However, the embodiments similarly apply to adjusting other resources for the transmission of CSI packets including, for instance, bandwidth and number of antennas. As further described in the next figures, plan data and periodicity data can be received from a server and used by a device to determine a CSI packet period per link. In an example, the determination involves using decision trees, each corresponding to a link parameter and indicating a CSI packet period. Similarly, the device can receive plan data and resource data indicating conditions for parameters that need to be met to select a particular configuration of a resource (e.g., a particular bandwidth, such as 20, 40, or 80 MHz, or a particular number of antennas, such as one, two, four, or six). The device can also use decision trees, each corresponding to one of the parameters in order to determine the resource configuration.

FIG. 2illustrates an example of dynamic CSI packet transmissions over multiple links between devices, according to embodiments of the present disclosure. A first device210and a second device220are illustrated. Nonetheless, the embodiments of the present disclosure similarly apply to a larger number of connected devices. Multiple links230A through230K (for a total of “K” links) exist between the first device210and the second device220and are used to transmit CSI packets, in addition to acknowledgements (ACKs) to the CSI packets and data packets. The first device210and the second device220are examples of the first device110and the second device120, respectively, ofFIG. 1. Likewise, each of the links230A through230K is an example of a link130ofFIG. 1. In particular, each of the first device210and the second device220can include one more radios, and each radio has a MAC address and can support one or more frequency channels. A link is established between a first MAC address of a first radio of the first device210and a second MAC address of a second radio of the second device220and uses a particular frequency channel.

In an example, the first device210determines a CSI packet period per link212based on link parameters associated with the particular link and the first device210. In other words, a CSI packet period can be specific to a link and can be different from a CSI packet period of another link. As illustrated inFIG. 2, the first device210determines a first CSI packet period for the link230A and transits CSI packets232A to the second device220over the link230A according to the first CSI packet period. Likewise, the first device210determines a “Kth” CSI packet period for the link230K and transmits CSI packets232K to the second device220over the link230K according to the “Kth” CSI packet period. The first packet period and the “Kth” CSI packet period may, but need not, be the same.

To illustrate, the first device210is a router located in a room and the second device220is a smart speaker also located in the room. Two links are established between the two devices (i.e., K is equal to two in this illustration). Audio can be streamed from a remote audio source to the smart speaker via the router. An audio stream exists over the first link and uses a high audio resolution. No audio stream exists over the second link. Accordingly, the router maximizes the CSI packet transmission rate over the second link and minimizes (or sets it to zero) the CSI packet transmission rate over the first link. In this way, the audio stream may not be disrupted by the CSI packet transmissions, while maximizing the presence detection sensitivity at the same time.

FIG. 3illustrates an example of dynamic CSI packet transmissions between devices310and320based on server data provided by the server340, according to embodiments of the present disclosure. Although two devices are illustrated, the embodiments of the present disclosure similarly apply to a larger number of connected devices. One or more links330exist between the first device310and the second device320and are used to transmit CSI packets, in addition to acknowledgements (ACKs) to the CSI packets and data packets. The first device310and the second device320are examples of the first device110and the second device120, respectively, ofFIG. 1. Likewise, each of the links330is an example of a link130ofFIG. 1. Generally, the server340can control aspects of the CSI packet transmissions. In particular, the server340can send data to any or both devices310and320related to the CSI packet transmission periodicity.

In an example, the server340represents a remote computing resource that may be part of a standalone system or that may be implemented in a datacenter as a cloud computing service. The devices310and320can be registered under a user account maintained at the server340. Computing services, such as audio streaming, can be facilitated by the server to the devices310and320based on the user account.

The first device310can be connected to the server340over one or more data networks including, for instance, the Internet. The second device320can also be connected to the server340. This connection can be via the router310in the case of a mesh network, where the two devices310and320are nodes of the mesh network.

The server340sends first data, illustrated as a report schedule342, to the first device310instructing the first device310about measurements requested to report to the server340. For example, the report schedule342includes an identifier of the first device310(e.g., a device serial number (DSN) assigned to the first device310in the mesh network), a MAC address of a radio of the first device310, an identifier of a frequency channel (e.g., a channel identifier), a start time of a time period, an end time of the time period, and the periodicity of the reporting during that time period. A similar report schedule can be sent to the second device320. In the case of the mesh network, the report schedule342can include the reporting instructions for both devices310and320and the first device310can send, to the second device320, the full report schedule342or only the portion thereof specific to the second device320. An example of such a report schedule342is illustrated in Table 1 below, although a different data structure (e.g., a string, an array, or the like) can be similarly used.

The first device310sends second data to the server340, where the second data reports the measurements based on the report schedule342. This second data is illustrated inFIG. 3as reports312. For example, the reports can include a Metric Report and a Congestion Report. The Metric Report includes the identifier of the first device310(e.g., DSN), the MAC of the radio, a device type to identify the type of the first device310(e.g., router, phone, smart speaker, tablet, etc.), a start time of an activity (e.g., a start timestamp), an end time of the activity (e.g., an end timestamp), and a state of the activity (e.g., transmission activity to the second device320, reception activity from the second device320, association activity with the second device320, disassociation activity from the second device320, etc.). An example of such a Metric Report is illustrated in Table 2 below, although a different data structure (e.g., a string, an array, or the like) can be similarly used.

The Congestion Report can include the identifier of the first device310, the MAC address of the radio, channel, the start time and the end time of the measurements, an identifier of the frequency channel (e.g., a channel ID), and the channel airtime load. An example of such a Congestion Report is illustrated in Table 3 below, although a different data structure (e.g., a string, an array, or the like) can be similarly used.

Similarly, the second device320can send reports322to the server340, where the reports include a Metric Report and/or a Congestion Report.FIG. 3uses a dashed arrow for the sending of the reports322to indicate that the reports322may, but need not, be sent, via the first device310. Likewise, other devices may send corresponding reports.

In turn, the server340generates and sends third data to the first device310based on the reports312, the reports322, and/or the reports of the other devices. The third data can include, per link, one or more conditions associated with link parameters, CSI packet periods usable for the transmission of CSI packets, and one or more associations between the CSI packet periods and the conditions. A condition can indicate a range of values for a link parameter of a link or one or more sub-ranges of the range of values (e.g., a first range of values for a congestion of packet transmissions on the link, first and second sub-ranges of the first range, a second range of values for a packet error rate associated with the packet transmission, and the like). An association between a CSI packet period and the condition is in an indication in the third data that the CSI packet period is applicable to the link based on a value of the link parameter meeting the condition (e.g., a value of the congestion being within the first range or within one of the sub-ranges, a value of the packet error rate being within the second range, and the like). In this way, the third data can indicate, to the first device310, that a particular CSI packet period is usable in association with CSI packet transmissions over the link when one or more conditions associated with one or more link parameters are met. The link parameter includes any of a congestion of packet transmissions on the link, a transmission time on the link, a reception time on the link, a packet error rate of the packet transmissions on the link, or a number of devices connected with the first device310.FIG. 3illustrates the third data as plan data and periodicity data344. Similar data can be sent, via or independent of the first device310, to the second device320to assist the second device with dynamically determining its CSI packet period. The plan data of the third data indicates to the first device310a schedule for CSI packet transmission per link. The periodicity data indicates to the first device310conditions that need to be met per link parameter to use a particular CSI packet period in support of the schedule. The plan data may include a reference to the periodicity data and/or vice versa.

In an example, the plan data associates a link (e.g., by identifying the MAC address of the radio of the first device310, the MAC address of the radio of the second device320, the device, a second MAC address of the other device, and a frequency channel) with a periodicity identifier. The periodicity data associates the periodicity identifier with one or more link parameters, conditions associated with the link parameters, and usable CSI packet periods depending on how conditions are met. The periodicity identifier can be a reference that is included in the plan data and in the periodicity data and that associates the schedule of a link with the condition(s) and link parameter(s) to apply to the link and the resulting CSI packet period. In particular, in the plan data, the reference is associated with the link, and in the periodicity data, the reference is associated with the condition(s), link parameter(s), and CSI packet period, In this way, the first device310can determine from the plan data a particular schedule for use on the link with the second device320. Based on the periodicity identifier from this schedule (e.g., used as a reference to the periodicity data), the first device310looks up the applicable link parameter(s) from the periodicity data, determines how the condition(s) are met, and deduces the usable CSI packet period.

To illustrate, the plan data is implemented as a schedule plan. The schedule plan identifies source and destination MAC addresses to identify the link between two peers, the channel per link, the start time and the end time for the CSI transmissions (e.g., a start time stamp and an end timestamp), and an identifier of a periodicity matrix. Here, the identifier is an example of the periodicity identifier. An example of such a schedule plan is illustrated in Table 4 below, although a different data structure (e.g., a string, an array, or the like) can be similarly used.

In this illustration, the periodicity data is implemented as a periodicity matrix. The periodicity matrix includes a set of conditions for triggering different CSI Packet Periods. One or more periodicity matrices can be associated with a schedule plan tuple. An example of such periodicity matrices is illustrated in Table 5 below, where each row corresponds to a periodicity matrix and has a corresponding periodicity identifier (shown as an “ID” in the first column). However, a different data structure (e.g., a string, an array, or the like) can be similarly used.

Referring back to the above illustration, the first device310receives the schedule plan shown in Table 4 and the periodicity matrices shown in Table 5. The first row of the schedule plan indicates that CSI packet transmissions on a link between the first device310and the second device320(e.g., associated with the source MAC address of 00:00:00:00:00:01 and the destination MAC address of 00:00:00:00:11:01 and using frequency channel 36) and during a time period (e.g., between times 1589042251 and 1589045255) is to follow periodicity matrix1and periodicity matrix2. The first device310then looks up the periodicity matrices having identifiers1and2and determines the various conditions that need to be met for congestion, transmission time, reception time, and packet error rate on the link and the number of devices connected with the first device310. Depending on how these conditions are met, the first device310can use a CSI packet period of thirty milliseconds or one hundred milliseconds to transmit CSI packets over the link. As further described inFIGS. 7 and 8, the first device310can generate decision trees, one per link parameter (e.g., per column of Table 5), where the number of branches and the branch nodes depend on the periodicity matrix identified (e.g., the rows of Table 5) and the decision nodes correspond to the CSI packet period column. The first device310can traverse the decision trees to determine a CSI packet period per decision tree and then select the largest CSI packet period for use.

Similarly, the second device320can receive plan data and periodicity data from the server340. Based on such data, the second device320can determine and use a CSI packet period per link for CSI transmissions over the link.

FIG. 4illustrates an example of dynamic CSI packet transmissions between devices410and420based on application data, according to embodiments of the present disclosure. Although two devices are illustrated, the embodiments of the present disclosure similarly apply to a larger number of connected devices. One or more links430exist between the first device410and the second device420and are used to transmit CSI packets, in addition to acknowledgements (ACKs) to the CSI packets and data packets. At least the first device410is connected to a server440over one or more data networks including, for instance, the Internet. The first device410, the second device420and the server440are examples of the first device310, the second device320, and the server440, respectively, ofFIG. 4. Each of the links430is an example of a link130ofFIG. 1. In addition or alternative to relying on reports from devices, the server430relies on the application data to then send data to any or both devices410and420, where the sent data relates to the CSI packet transmission periodicity.

In an example, the first device410sends application data412to the server440. The application data412includes parameters and/or requirements related to one or more applications executing on the first device410. The execution of an application can result in data transmission to the second device420over one or more of the links430and/or in to another device over one or more other links. Alternatively, the execution of the application may not result in data transmission, but nonetheless may add processing burden to the first device410. The application data412can assist the server440with setting a schedule plan and/or a periodicity matrix for one or more of the links430depending on the parameters and/or requirements. For instance, when the application data412indicates the need for a data transmission rate within a particular range, the server440can instruct the first device410about adjusting the CSI packet transmission rate such that the data transmission rate can be met.

Similarly, the second device420can send application data422to the server422.FIG. 4uses a dashed arrow for the sending of the application data422to indicate that application data422may, but need not, be sent, via the first device410. Likewise, other devices may send corresponding application data to the server440. Based on the application data412, the application data422, and/or any of the other application data, the server440can instruct any of the first device410or the second device420about adjusting their CSI packet transmission rates.

In an example, the instructions are sent as plan data and/or periodicity data444. The plan data and the periodicity data can be similar to the schedule plan and the periodicity matrices, respectively, described herein above in connection withFIG. 3. For instance, upon the application data412indicating a higher data transmission rate, the server440may send plan data indicating a shorter time period during which CSI transmissions are to occur. Additionally or alternatively, the server440may send data plan indicating a longer CSI packet period.

To illustrate, the application data412is sent as an application usage request. The application usage request includes an identifier of an application executing on the first device410, an identifier of the application's or request's category (e.g., voice over internet protocol (VOIP)), video, etc.), a start time (e.g., a start timestamp) indicating the timing of when the requested usage starts, a duration of the request, a bandwidth needed by the application, and a latency requirement of the application. An example of such an application usage request is illustrated in Table 6 below, although a different data structure (e.g., a string, an array, or the like) can be similarly used.

FIG. 5illustrates an example of a sequence diagram500for dynamic CSI packet transmissions between devices based on application data, according to embodiments of the present disclosure. As illustrated in the sequence diagram500, a device510, similar to the device410ofFIG. 4, may be performing CSI transmission to another device over a link at a CSI packet period (shown as thirty milliseconds). A server520, similar to the server440ofFIG. 4, may receive, from an application530, application data532that includes parameters and/or requirements related to the execution of the application530(e.g., a request of voice, having a particular start time, lasting for three-hundreds seconds, at two-hundred fifty-six kilobits per second, and with a maximum of three milliseconds latency). The application530may be executing on the device510, the other device, or yet another device that may not necessarily be connected to the device510.

In turn, the server520sends first data to the device510, where the first data instructs the device510in relation to changing the CSI packet period. The first data can include new or updated plan data (e.g., schedule plan). Additionally or alternatively, the first data can include new or updated periodicity data (e.g., periodicity matrices). In the illustration ofFIG. 5, the first data instructs the device510to add a plan with a particular identifier (shown as add plan ID522). For instance, and referring to Tables 4 and 5 above, prior to these instructions, the link corresponds to the first row in Table 4, where this first row identifies that periodicity matrices1and2from Table 5 are to be used and this use results in the thirty milliseconds CSI packet period. The instructions can request the device510to add the periodicity matrix3(e.g., in which case, the received data can include an updated first row of Table 4, where the “ID=3” is added to the last entry in that row). Accordingly, the device510determines that the CSI packet period should change to two-hundred milliseconds given how the conditions of the three periodicity matrices1,2, and3are met.

The server520starts a countdown (illustrated as start countdown524) of the duration identified in the application data532(e.g., three-hundred seconds). During that duration, the device510transmits CSI packets over the link at the updated CSI packet period (e.g., every two-hundred milliseconds, a CSI packet is transmitted).

Upon an end of the countdown (illustrated as end countdown526), the server520sends second data to the device510, where the second data instructs the device510in order to change the CSI packet period back to its previous value. The second data can include new or updated plan data (e.g., schedule plan). Additionally or alternatively, the second data can include new or updated periodicity data (e.g., periodicity matrices). In the illustration ofFIG. 5, the second data instructs the device510to remove the plan with the particular identifier (shown as remove plan ID528). For instance, and referring again to Tables 4 and 5 above, the instructions can request the device510to remove the periodicity matrix3(e.g., in which case, the received data can include an updated first row of Table 4, where the “ID=3” is removed from the last entry in that row). Accordingly, the device510determines that the CSI packet period should change back to thirty milliseconds given how the conditions of the two periodicity matrices1and2are met. From that point on, the device510transmits CSI packets over the link at the thirty milliseconds CSI packet period, until further instructions from the server520.

FIG. 6illustrates another example of a sequence diagram600for dynamic CSI packet transmissions between devices based on application data, according to embodiments of the present disclosure. Here, the application data may be renewed such that any change to an updated CSI packet period can be extended. As illustrated in the sequence diagram600, a device610, similar to the device510ofFIG. 5, may be performing CSI transmission to another device over a link at a CSI packet period (shown as thirty milliseconds). A server620, similar to the server520ofFIG. 5, may receive, from an application630, application data632that includes parameters and/or requirements related to the execution of the application630(e.g., a request of voice communication session having a particular start time, lasting for three-hundreds seconds, at two-hundred fifty-six kilobits per second, and with a maximum of three milliseconds latency). The application630may be similar to the application530ofFIG. 5.

In turn, the server620sends first data to the device610, where the first data instructs the device610in relation to changing the CSI packet period. The first data can include new or updated plan data (e.g., schedule plan). Additionally or alternatively, the first data can include new or updated periodicity data (e.g., periodicity matrices). In the illustration ofFIG. 6, the first data instructs the device610to add a plan with a particular identifier (shown as add plan ID622). For instance, and referring to Tables 4 and 5 above, prior to these instructions, the link corresponds to the first row in Table 4 identifying that periodicity matrices1and2from Table 5 are to be used and this use results in the thirty milliseconds CSI packet period. The instructions can request the device610to add the periodicity matrix3(e.g., in which case, the received data can include an updated first row of Table 4, where the “ID=3” is added to the last entry in that row). Accordingly, the device610determines that the CSI packet period should change to two-hundred milliseconds given how the conditions of the three periodicity matrices1,2, and3are met.

The server620starts a countdown (illustrated as start countdown624) of the duration identified in the application data632(e.g., three-hundred seconds). From that point on, the device610transmits CSI packets over the link at the updated CSI packet period (e.g., every two-hundred milliseconds, a CSI packet is transmitted). And the device610continues transmitting CSI packets over the link at the updated CSI packet period until further instructions from the server620.

Prior to an end of the countdown, the server620receives additional application data634from the application630. This application data634can be the same as the application data632, or one or more of the indicated parameters and/or requirements can differ between the application data632and the application data634. In the illustration ofFIG. 6, the application data634represents a request to renew the application usage by another three-hundred milliseconds. Accordingly, the server620restarts the countdown (shown as extension626).

Upon an end of the countdown (illustrated as end countdown627), the server620sends second data to the device610, where the second data instructs the device610about changing the CSI packet period back to its previous value. The second data can include new or updated plan data (e.g., schedule plan). Additionally or alternatively, the second data can include new or updated periodicity data (e.g., periodicity matrices). In the illustration ofFIG. 6, the second data instructs the device610to remove the plan with the particular identifier (shown as remove plan ID628). For instance, and referring again to Tables 4 and 5 above, the instructions can request the device610to remove the periodicity matrix3(e.g., in which case, the received data can include an updated first row of Table 4, where the “ID=3” is removed from the last entry in that row). Accordingly, the device610determines that the CSI packet period should change back to thirty milliseconds given how the conditions of the two periodicity matrices1and2are met. From that point on, the device610transmits CSI packets over the link at the thirty milliseconds CSI packet period, until further instructions from the server620.

FIG. 7illustrates an example of a decision tree usable to determine a CSI packet period, according to embodiments of the present disclosure. Generally, the decision tree represents a model usable to decide on a CSI packet period given how conditions associated with a link parameter are met. In an example, the structure of the decision tree includes a root node at a top level of a hierarchy. At the next level of the hierarchy, one or more branch nodes can be connected to the root node. At other lower levels of the hierarchies, one or more branch nodes may similarly exist all the way to the lowest level of the hierarchy. The lowest level includes decision nodes, each of which can be connected to one or more branch nodes. The decision can be generated based on the plan data and the schedule data. In particular, the decision tree can correspond to one of the columns of Table 5, where the root node corresponds to the link parameter identified in the column, where the branch nodes correspond to the conditions (e.g., ranges and sub-ranges of values) identified as being applicable given the periodicity matrix identifiers, and where the decision nodes correspond to the CSI packet periods associated with the conditions.

In the illustration ofFIG. 7, the root node represents the link parameter710. Next, K branch nodes are connected to the root node, each representing a condition (illustrated as condition710through condition710K, and each of which corresponds to a range of values. For instance, the condition710indicates a first range of values, and the condition710K indicates a second range of values). If condition710A is met, the decision moves to a decision node that corresponds to a CSI packet period750A associated with the condition710A (e.g., with the first range of values indicated by the condition710A). Otherwise, one of the remaining conditions are met and the decision moves down the branch corresponding to the condition that is met. For instance, if the condition710K is met, the decision moves down to the next hierarchy level that includes L branch nodes corresponding to condition720A through condition720L. Each of the condition720A through the condition720L corresponds to a sub-range of values within the range of values indicated by the condition710K (e.g., the condition720A indicates a first sub-range of the second range, and the condition720L indicates a second sub-range of the second range). Depending on which of these conditions is met, the decision moves and so on and so forth to traverse the decision tree through various conditions and until reaching a decision node from M possible decision nodes. For instance, if condition720A is met, a CSI packet period750B is determined based on this CSI packet period750B being associated with the first sub-range of values. Otherwise, the traversal of the decision continues which can result in determining a CSI packet period750M.

Generally, the M number of decision nodes correspond to M possible CSI packet periods. The M possible CSI packet periods can include various values or an infinite periodicity (e.g., no CSI transmission) as defined by, for instance, a server. The number of branch nodes and branches of the decision tree can depend on the number of applicable conditions (and, more specifically, the different ranges and sub-ranges of values).

FIG. 8illustrates an example of decision trees specific to three link parameters, according to embodiments of the present disclosure. Here, three link parameters are illustrated: congestion, number of clients, and packet error rate. Nonetheless, the embodiments of the present disclosure similarly apply to other link parameters.

As illustrated, a first decision tree810is associated with the congestion, where this link parameter corresponds to the root node of the first decision tree810. The first decision tree810also includes three branches (less than twenty-five percent, between twenty-five percent and fifty percent, and more than fifty percent) and three decision nodes (thirty milliseconds, sixty milliseconds, and one hundred milliseconds), each corresponding to a branch.

According to the first decision tree810, a device measures a congestion on a link. If the congestion is less than twenty-five percent, the device determines a candidate CSI packet period of thirty milliseconds. If the congestion is between twenty-five percent and fifty percent, the device determines a candidate CSI packet period of sixty milliseconds. Otherwise, the device determines a candidate CSI packet period of one hundred milliseconds.

A second decision tree820is associated with the number of clients (e.g., the number of devices connected to the device). Here also, the number of clients corresponds to the root node of the second decision tree820. The second decision tree820includes three branches (less than four, between four and eight, and more than eight) and three decision nodes (thirty milliseconds, sixty milliseconds, and one hundred milliseconds), each corresponding to a branch.

According to the second decision tree820, the device determines the number of its connected device. If the number is less than four, the device determines a candidate CSI packet period of thirty milliseconds. If the number is between four and eight, the device determines a candidate CSI packet period of sixty milliseconds. Otherwise, the device determines a candidate CSI packet period of one hundred milliseconds.

A third decision tree830is associated with the packet error rate over the link. Here also, the packet error rate corresponds to the root node of the third decision tree830. The third decision tree830includes three branches (less than ten, between ten and thirty, and more than thirty) and three decision nodes (thirty milliseconds, sixty milliseconds, and one hundred milliseconds), each corresponding to a branch.

According to the third decision tree830, the device measures the packet error rate. If the number is less than ten per a hundred packets, the device determines a candidate CSI packet period of thirty milliseconds. If the number is between ten and thirty per a hundred packets, the device determines a candidate CSI packet period of sixty milliseconds. Otherwise, the device determines a candidate CSI packet period of one hundred milliseconds.

In the illustration ofFIG. 8, three candidate CSI packet periods are determined, one per decision tree. If they are not the same, the device selects one of the three candidate CSI packet periods as the CSI packet period to use for the CSI transmissions over the link. In an example, the device selects the largest candidate CSI packet period (e.g., the maximum of the three).

FIG. 9illustrates an example of a mesh network that includes a number of devices implementing dynamic CSI packet transmissions, according to embodiments of the present disclosure. In an example, a server910is connected with the mesh network, such as with a node920A. In turn, the node920A is connected with a node920B. In turn, the node920B is connected with a node920C, and the node920C is connected with a node920D. The nodes920A,920B,920C, and920D form the mesh network and each can be a wireless router. Of course, other network topologies of the mesh network are possible.

Transiently, a number of mobile devices can join the mesh network by connecting with one or more of the nodes920A,920B,920C, and920D. For example, at various times, a laptop930, a phone940, and a smart speaker950connect with the node920B. Similarly, at other times, any or all of the laptop930, the phone940, and the smart speaker950can disconnect from the node920B and connect with any of the remaining nodes920A,920C, or920D. Each connection between two nodes and between a node and the laptop930, the phone940, or the smart speaker950can include one or more links. For each link, a CSI packet period may be dynamically determined and used for CSI transmissions over the link.

The server910can request and receive reports from any or all of the nodes920A,920B,920C, and920D, the laptop930, the phone940, and the smart speaker950. Further, the server can receive application data from any or all of the nodes920A,920B,920C, and920D, the laptop930, the phone940, and the smart speaker950. Based on the reports and/or the application data, the server910can send to the nodes920A,920B,920C, and920D, the laptop930, the phone940, and the smart speaker950schedule plans and/or periodicity matrices to assist with the determination of CSI packet periods. The determination of a CSI packet period can rely on a traversal of one or more decision trees generated according to schedule plans and/or periodicity matrices.

FIGS. 10 and 11illustrate examples of flows for determining a dynamic CSI packet period. Operations of the flows can be performed by a device, such as any of the devices described herein above. Some or all of the instructions for performing the operations of flows can be implemented as hardware circuitry and/or stored as computer-readable instructions on a non-transitory computer-readable medium of the device. As implemented, the instructions represent modules that include circuitry or code executable by processors of the device. The use of such instructions configures the device to perform the specific operations described herein. Each circuitry or code in combination with the relevant processor(s) represent a means for performing a respective operation(s). While the operations are illustrated in a particular order, it should be understood that no particular order is necessary and that one or more operations may be omitted, skipped, performed in parallel, and/or reordered.

In the interest of clarity of explanation, the flows are described in connection with adjusting the CSI packet period. However, the flows similarly apply to adjusting other resources for the transmission of CSI packets including, for instance, bandwidth and number of antennas.

FIG. 10illustrates an example of a flow of dynamic CSI packet transmissions, according to embodiments of the present disclosure. In the interest of clarity of explanation, each operation ofFIG. 10is illustrated in connection with a link. Nonetheless, the operations can be repeated for each link of the device.

In an example, the flow includes operation1002, where the device sends data packets to a second device over a link. For instance, the data packets, such as audio packets, are sent based on an execution of an application on the device.

In an example, the flow also includes operation1004, where the device receives data indicating a range of values associated with a link parameter of the link and indicating a CSI packet period associated with the range of values. For instance, the data can be received from a server. Alternatively, the data can be pre-stored in local memory of the device and retrieved from the memory. In both examples, the data can indicate range of values per link parameter of the link and sub-ranges of values, as applicable, per range. The data can also indicate per range or sub-range, as applicable, a candidate CSI packet period. As such, depending on measurements on the link parameters, these measurements can be compared to the ranges and sub-ranges of values to determine, from candidate CSI packet periods, a CSI packet period to use in the transmission of CSI packets over the link. In an illustration, the data includes server plan data (e.g., a schedule plan) and periodicity data (e.g., periodicity matrices). Such data can identify each link parameter, applicable conditions thereto (e.g., ranges and sub-ranges), and candidate CSI packet periods.

In an example, the flow also includes operation1006, where the device determines that a first value of the link parameter is within a first range of values. For instance, the first value corresponds to a measurement of the link parameter on the first link (e.g., the current congestion value of the congestion). The device compares the first value to the ranges of values indicated by the data for the link parameter and determines that the first value falls within the first range. If the first range includes sub-ranges, the device further compares the first value to the sub-ranges to determine the particular sub-range that includes the first value.

In an example, the flow includes operation1008, where the device determines a first CSI packet period that is associated with the first range of values. For instance, the association between the first CSI packet period and the first range is indicated by the data and can be determined from a decision tree generated based on the data. If the first range includes sub-ranges, the first CSI packet period is determined based on an association with the particular sub-range that includes the first value.

To illustrate, the first range of values corresponds to a condition defined for congestion of packet transmission on the link. A first measurement of the congestion is determined. The value of this first measurement can be due to ongoing packet transmissions on the link and can be compared to the first range of values. If the first measurement is within the first range of values, the condition is met. Similarly, the condition can indicate a range of value per link parameter (e.g., a range for each of the packet error rate, a transmission time, a reception time, and a number of connected devices). Measurements are performed to determine the current value of each of these links and the current values are compared to the applicable ranges in order to derive the CSI packet period. In an illustrative example, the device generates a decision trees, where each tree corresponds to a link parameter and includes branches and branch nodes depending on the conditions. A branch node corresponds to a condition and a decision node corresponds to a candidate CSI packet period. The device performs measurements of the link parameters on the link and determines how the measurements meet the conditions. In particular, the device uses the measurements of a link parameter in a traversal of the decision tree that corresponds to the link parameter to identify one of the candidate CSI packet periods. Operation1008can be repeated for the different link parameters. If the determined candidate CSI packet periods do not match, the device selects the largest one of them as the CSI packet period to use for the link.

In an example, the flow also includes operation1010, where the device transmits a CSI packet over the link based on the first CSI packet period determined for the link (and/or a new resource configuration for CSI packet transmission). For instance, the CSI packet transmission rate over the link is set according to the first CSI packet period. In particular, the device transmits over the link, a first CSI packet at a first time and a second CSI packet at a second time. The difference between the second time and the first time is equal to the first CSI packet period.

In an example, the flow also includes operation1012, where the device determines that a second value of the link parameter is within a second range of values that is associated with a second CSI packet period. For instance, the second value is determined at a different time than the first value and is an updated link parameter value (e.g., an updated congestion value of the congestion). The second value can be different than the first value, in which case the second value corresponds to a change of the link parameter.

In an example, the flow also includes operation1014, where the device determines that the second value is within a first sub-range of the second range of values. For instance, the second sub-range includes the first sub-range and a second sub-range of values. The device compares the second value to each of these sub-ranges and determines that the first sub-range includes the second value.

In an example, the flow also includes operation1016, where the device determines a second CSI packet period (and/or a new resource configuration for CSI packet transmission). If the current value of the link parameter changed, the first CSI packet period may no longer be applicable. Instead, the second CSI packet is applicable based on the association with the first sub-range of values and on the second value falling within the first sub-range.

In an example, the flow also includes operation1018, where the device transmits an additional CSI packet over the link based on the second CSI packet period (and/or a new resource configuration for CSI packet transmission). For instance, the CSI packet transmission rate over the link is set again according to the second CSI packet period.

FIG. 11illustrates another example of a flow of dynamic CSI packet transmissions, according to embodiments of the present disclosure. Operations of the flow ofFIG. 11can be implemented as sub-operations of the flow ofFIG. 10.

In an example, the flow ofFIG. 11includes operation1102, where the device receives a report request. For instance, the report request is received from the server and corresponds to a report schedule having a data structure similar to the one shown in Table 1.

In an example, the flow also includes operation1104, where the device transmits reports to the server. For instance, the reports include a metric report and a congestion report having data structures similar to the ones shown in Table 2 and 3, respectively. In particular, the device collects metrics and performs congestion measurements per link and sends the resulting reports to the server.

In an example, the flow also includes operation1106, where the device receives plan data and periodicity data from the server. For instance, the plan data and the periodicity data are generated by the server based on the reports of the device, reports of other devices, and/or application data. The plan data can be a schedule plan having a data structure similar to the one shown in Table 4. The periodicity data can be periodicity matrices, having a data structure similar to the one shown in Table 5.

In an example, the flow also includes operation1107, where the device processes the plan data and the periodicity data for a link. Operation1107can be repeated for the various links of the device, as illustrated with the dotted rectangles.

In an example, the flow also includes operation1108as a sub-operation of operation1107, where the device performs measurements per link parameter. For instance, the periodicity data identifies different link parameters that need to be measured. The measurements can be performed at the physical layer, the MAC layer, and/or the application layer.

In an example, the flow also includes operation1110as a sub-operation of operation1107, where the device determines a set of conditions that are met per link parameter by traversing a decision tree associated with the link parameter. For instance, for each of the link parameters, a decision tree is generated (e.g., as illustrated inFIG. 8) and is traversed by using the measurements for the link parameter.

In an example, the flow also includes operation1112as a sub-operation of operation1107, where the device determines a CSI packet period per link parameter. For instance, upon a traversal of a tree associated with a link parameter, the device determines a candidate CSI packet period. This candidate CSI packet corresponds to the decision node identified based on the traversal.

In an example, the flow also includes operation1114as a sub-operation of operation1107, where the device selects a CSI packet period from the candidate CSI packet periods determined for the different link parameters. For instance, the device selects the largest candidate CSI packet period as the CSI packet period to use for the link.

In an example, the flow also includes operation1116as a sub-operation of operation1107, where the device transmits a CSI packet over the link based on the selected CSI packet period. This operation1116is illustrated with a dashed box to indicate that it can be performed instead of, or in addition to, operations1118and1120.

In an example, the flow also includes operation1118, where the device selects a link from the different links of the device for the CSI transmission. Here, a CSI packet period has been determined per link, based on repeating operation1107. However, rather than performing CSI transmissions on these multiple links, one of them is selected and used for CSI transmissions. The link selection can follow techniques further described in the next figures.

In an example, the flow also includes operation1120, where the device transmits a CSI packet over the selected link. This CSI transmission can be based on the CSI packet period determined for the selected link.

In an example, the flow also includes operation1122, where the device transmits application data to the server1122. The application data may cause the server to send updated plan data and/or periodicity data. If so, such updates can be received at operation1106, where this operation can be repeated as indicated with the loop back from operation1122to operation1106.

FIG. 12illustrates an example of a selection of a link for CSI packet transmissions, according to embodiments of the present disclosure. A first device1210and a second device1220are illustrated. Nonetheless, the embodiments of the present disclosure similarly apply to a larger number of connected devices. Multiple links1230A through1230K (for a total of “K” links) exist between the first device1210and the second device1220and can be used to transmit CSI packets, in addition to acknowledgements (ACKs) to the CSI packets and data packets. The first device1210and the second device1220are examples of the first device110and the second device120, respectively, ofFIG. 1. Likewise, each of the links1230A through1230K is an example of a link130ofFIG. 1. In particular, each of the first device1210and the second device1220can include one more radios, and each radio has a MAC address and can support one or more frequency channels. A link is established between a first MAC address of a first radio of the first device1210and a second MAC address of a second radio of the second device1220and uses a particular frequency channel. Here, rather than performing CSI transmissions on all the links1230A through1230K, the first device1210selects a subset of the links1230A through1230K and performs the CSI transmissions on the subset.

In an example, the first device1210includes a CSI link selection module1212that selects the link(s). The selection includes determining the link(s) to use and the number of such links. In addition, the first device1210can determine a CSI packet period per selected link. The determination of a link includes a comparison of parameters associated with the different links. The parameters can include physical layer parameters, such as the packet error rate (PER), the physical layer (PHY) rate, and the RSSI. Further, the parameters can be associated with priorities and ranges. In this case, the comparison starts with the parameter having the highest priority. If this parameter is similar between the links, the comparison proceeds to the parameter having the next priority, and so on and so forth. The measurements of a parameter on two links are similar if the difference between the measurements (e.g., parameter) is within the range associated with the parameter. Otherwise, the measurements are not dissimilar.

To illustrate, consider an example of a comparison between link1230A and1230K for the PER, PHY rate, and RSSI. The PER has a higher priority than the PHY rate and, in turn, the PHY rate has a higher priority than RSSI. In addition, the PER is associated with a PER range of ten percent, the PHY rate is associated with a PHY rate range of three-hundred percent, and the RSSI is associated with a ten decibel (10 db) range. In this illustration, the CSI link selection module1212starts with the comparison of PERs of the links1230A and1230K given that the PER parameter has the highest priority. If the PER difference (or ratio) indicates that the PER of the link1230A is lower than that of the link1230K and is outside the PER range (e.g., more than ten percent), the CSI link selection module1212selects the link1230A. If the PER difference (or ratio) indicates that the PER of the link1230K is lower than that of the link1230A and is outside the PER range (e.g., more than ten percent), the CSI link selection module1212selects the link1230K. Otherwise, the PER is similar between the two links1230A and1230K, and the CSI link selection module1212proceeds to compare the PHY rates of the of links1230A and1230K given that the PHY rate parameter has the next priority. Similarly here, if the PHY rate difference (or ratio) indicates that the PHY rate of the link1230A is lower than that of the link1230K and is outside the PHY rate range (e.g., more than three-hundred percent), the CSI link selection module1212selects the link1230A. If the PHY rate difference (or ratio) indicates that the PHY rate of the link1230K is lower than that of the link1230A and is outside the PHY rate range (e.g., more than three-hundred percent), the CSI link selection module1212selects the link1230K. Otherwise, the PHY rate is similar between the two links1230A and1230K, and the CSI link selection module1212proceeds to compare the RSSIs of the of links1230A and1230K. Here, given that the RSSI parameter has the lowest priority and no other parameters are to be further compared, the CSI link selection module1212selects the link that has the largest RSSI.

The number of links to select can be one (e.g., select one and only one of the links1230A through1230K). Otherwise, this number can correspond to a subset L of the links1230A through1230K (where L is smaller than K and is more than one). If more than two links are to be selected, the CSI link selection module1212still uses the priorities and ranges as described above to select. For instance, the CSI link selection module1212selects the two or more links that have the best PERs. If the PERs are similar, the CSI link selection module1212selects the two or more links that have the best PHY rates. And if the PHY rates are similar, the CSI link selection module1212selects the two or more links that have the best RSSIs.

For a selected link, the first device1210can determine a CSI packet period to use. In one example, the CSI packet period is dynamic and can be determined using the techniques described herein above. In another example, the CSI packet period can preconfigured to be a fixed time interval.

Data about the various parameters to use and their priorities and ranges, the number of links to select, and/or whether dynamic CSI packet periods are to be used can pre-stored at the first device1210in one or more data structures. Alternatively or additionally, the first device1210can receive such data and/or updates to the data from a server, as further illustrated in the next figures.

As illustrated inFIG. 12, the first device1210selects link1232A and not the link1230K for CSI transmissions (shown with an X over the link1230K). Accordingly, the first device1210transmits CSI packets1232A to the second device1220over the link1230A according to a CSI packet period associated with the link1230A.

FIG. 13illustrates another example of a selection of a link for CSI packet transmissions based on data of a server1340, according to embodiments of the present disclosure. A first device1310and a second device1320are illustrated. Nonetheless, the embodiments of the present disclosure similarly apply to a larger number of connected devices. Multiple links1330A through1330K (for a total of “K” links) exist between the first device1310and the second device1320and can be used to transmit CSI packets, in addition to acknowledgements (ACKs) to the CSI packets and data packets. The first device1310and the second device1320are examples of the first device1210and the second device1220, respectively, ofFIG. 12. Each of the links1330A through1330K is an example of a link130ofFIG. 1. The server1340is connected with the first device1310over one or more data networks including, for instance, the Internet. The server1340is an example of the server340ofFIG. 3.

Here, the server1340sends data to the first device1310(shown as link selection instructions1342) instructing the first device1310about the various parameters to use and their priorities and ranges, the number of links to select, and/or whether dynamic CSI packet periods are to be used. This data can also include an override, by which the server1340identifies the subset of links that the first device1310is to use for the CSI transmissions regardless of what the first device1310may have selected otherwise. The server1340can generate the data and/or update to the data based on reports and/or application data received from the first device1310, the second device1320, and/or other devices.

In an illustration, the server1340of the link selection instructions1342are sent as a link quality matrix. The link quality matrix includes parameter identifiers to identify parameters to be used for the link quality assessment, priorities to identify the order of the comparison, and range to identify the similarities, and a time interval to identify a duration during which each parameter needs to be measured. An example of such a quality matrix is illustrated in Table 7 below, although a different data structure (e.g., a string, an array) can be similarly used.

The above quality matrix indicates a range of values per parameter (e.g., a first range of values for the PER, referred to as a PER range of values; a second range of values for PHY rate, referred to as a PHY rate range of values, and a third range of values for the RSSI, referred to as an RSSI range of values). Each range of values indicates a similarity. If the difference or ratio between two parameters is within the range of values of the parameters, the two parameter are found to be similar. Otherwise, the two parameters are found to be dissimilar. If two parameters are similar, the link selection cannot be based on one of these two parameters. In this case, the selection considers two other parameters that are dissimilar.

Based on the above quality matrix, a CSI link selection module1312of the first device1310starts with the comparison of PERs of the links1330A and1330K given that the PER parameter has the highest priority. If the PER difference (or ratio) indicates that the PER of the link1330A is lower than that of the link1330K and is outside the PER range of values (e.g., more than ten percent), the CSI link selection module1312selects the link1330A. If the PER difference (or ratio) indicates that the PER of the link1330K is lower than that of the link1330A and is outside the PER range of values (e.g., more than ten percent), the CSI link selection module1312selects the link1330K. Otherwise, the PER is similar between the two links1330A and1330K, and the CSI link selection module1312proceeds to compare the PHY rates of the links1330A and1330K given that the PHY rate parameter has the next priority. Similarly here, if the PHY rate difference (or ratio) indicates that the PHY rate of the link1330A is lower than that of the link1330K and is outside the PHY rate range of values (e.g., more than three-hundred percent), the CSI link selection module1312selects the link1330A. If the PHY rate difference (or ratio) indicates that the PHY rate of the link1330K is lower than that of the link1330A and is outside the PHY rate range of values (e.g., more than three-hundred percent), the CSI link selection module1312selects the link1330K. Otherwise, the PHY rate is similar between the two links1330A and1330K, and the CSI link selection module1312proceeds to compare the RSSIs of the of links1330A and1330K. Here, given that the RSSI parameter has the lowest priority and no other parameters are to be further compared, the CSI link selection module1312selects the link that has the largest RSSI.

As illustrated inFIG. 13, the first device1310selects link1332A and not the link1330K for CSI transmissions (shown with an X over the link1330K). Accordingly, the first device1310transmits CSI packets1332A to the second device1320over the link1330A according to a CSI packet period associated with the link1330A.

FIG. 14illustrates an example of link selections in a mesh network, according to embodiments of the present disclosure. In an example, a server1410is connected with the mesh network, such as with a node1420A. In turn, the node1420A is connected with a node1420B, a node1420C, and a node1420D. In addition, the node1420B is connected with the node1420C, and the node1420C is connected with the node1420D. The nodes1420A,1420B,1420C, and1420D form the mesh network and each can be a wireless router. Of course, other network topologies of the mesh network are possible. Each of the connections can include one or more links.

In an example, each of the nodes1420A,1420B,1420C, and1420D may be transmitting CSI packets. At a node level, each of the nodes1420A,1420B,1420C, and1420D may select the link(s) to use for its CSI transmissions. The selection can follow the techniques described herein above in connection withFIGS. 12 and 13.

In another example, the link selection can be performed globally at a mesh network level. In particular, each of the nodes1420A,1420B,1420C, and1420D may send reports, application data, measured PERs, measures PHY rates, and/or measured RSSIs to the server1410. In turn, the server1410may send data to each of the nodes1420A,1420B,1420C, and1420D instructing the node about the link(s) to use for its CSI transmissions. For instance, in the use case of mesh networks, the server1410may determine the minimum number of links to use such that each of the nodes1420A,1420B,1420C, and1420D participates in the CSI transmissions.

For instance, and as illustrated inFIG. 14, the server1420determines that it is sufficient to use a link between the node1420A and the node1420D for CSI transmissions1430A on that link, and to use a link between the node1420B and the nodes1420C for CSI transmissions1430B on that link. No other links may be needed. Here, these two links may be selected for having the best PERs, the best PHY rates, and/or the best RSSIs among the different links while also ensuring that all four nodes1420A,1420B,1420C, and1420D participate in CSI transmission. Accordingly, the server1420sends link selection instruction1342indicating to the nodes1420A,1420B,1420C, and1420D the selected links. Such instructions can override any other link selection made locally at a node level.

FIG. 15illustrates an example of a flow of selecting a link for CSI packet transmissions, according to embodiments of the present disclosure. Operations of the flow can be performed by a device, such as any of the devices described herein above. Some or all of the instructions for performing the operations of flows can be implemented as hardware circuitry and/or stored as computer-readable instructions on a non-transitory computer-readable medium of the device. As implemented, the instructions represent modules that include circuitry or code executable by processors of the device. The use of such instructions configures the device to perform the specific operations described herein. Each circuitry or code in combination with the relevant processor(s) represent a means for performing a respective operation(s). While the operations are illustrated in a particular order, it should be understood that no particular order is necessary and that one or more operations may be omitted, skipped, performed in parallel, and/or reordered.

In an example, the flow includes operation1502, where the device establishes a link with another device. For instance, the link is established between radios of the two devices and uses a frequency channel. Multiple links may exist between the two devices.

In an example, the flow also includes operation1504, where the device determines whether a server override was received or not. For instance, a server is connected with the device over one or more data networks including the Internet. The server may send instructions to the device about using a particular set of links for its CSI transmissions. If so, operation1522follows operation1504. Otherwise, the flow proceeds to operation1506.

In an example, the flow also includes operation1506, where the device has established more than one link with the other device. If only one link is established, no link selection is necessary. If so, operation1514follows operation1506. Otherwise, the flow proceeds to operation1508.

In an example, the flow also includes operation1508, where the device performs measurements per link. Here, multiple links exist between the two devices and each of such links is a candidate link for CSI transmissions. Accordingly, the device determines parameters to measure (e.g., PER, PHY rate, and RSSI) from, for instance, a data structure pre-stored at the device or received from the server. For each of the candidate links, the device measures the parameters over a duration.

In an example, the flow also includes operation1510, where the device determines priorities and ranges of the parameters. For instance, the data structure also indicates the relative priorities between the parameters (e.g., the PER having a higher priority than the PHY rate, and the PHY rate having a higher priority than RSSI) and the range for each parameter (e.g., a PER range, a PHY rate range, and a RSSI range) usable to determine similarities.

In an example, the flow also includes operation1512, where the device selects a number of links. The desired number may be also indicated by the data structure. In addition, the device compares the measurements of the parameters, starting with the parameters having the highest priority and moving to the next priority levels when the measurements are similar. For instance, the device compares the PER of two links. If the PER difference is within the packet error range, the device compares the PHY rate of the two links. If the PHY rate difference is within the PHY rate range, the device proceeds to compare the RSSI of the two links. Based on the comparisons, the device selects the link(s) having the best PER, PHY rate, and/or RSSI.

In an example, the flow also includes operation1514, where the device determines the CSI packet period (and/or a new resource configuration for CSI packet transmission) per selected link. In one illustration, the CSI packet period is pre-set as a fixed time interval. In another illustration, the CSI packet period (and/or a new resource configuration for CSI packet transmission) is dynamically determined, as described herein above.

In an example, the flow also includes operation1516, where the device transmits a CSI packet over each selected link at the CSI packet period determined for the link. This transmission can be repeated over time at the CSI packet period and the CSI packet period. Upon a change to the conditions of the link, the CSI packet period can be adjusted or the link selection may be restarted (e.g., by looping back to operation1508).

In an example, the flow also includes operation1518, where the device determines whether a selected link has been disconnected. If so, operation1506follows operation1518to restart the link selection. Otherwise, the flow proceeds to operation1520.

In an example, the flow also includes operation1520, where the device determines whether a new link has been established with the other device. If so, operation1508follows operation1520to restart the link selection. Otherwise, the flow loops back to operation1518.

In an example, the flow also includes operation1522, where the device has received override data from the server. Here, the device may not perform operations1506-1520. Instead, the device proceeds with using the server-selected link(s) for its CSI transmissions.