# Patent

## Title
Scanning groups of profiles of wireless local area networks

## Abstract

Two or more connection profiles stored in a wireless device are partitioned into two or more groups, each group having a scanning policy associated therewith. A scanning policy of a group determines how often scanning for wireless local area networks matching any profile in that group is conducted. One or more factors may be taken into consideration when determining how to partition the profiles into groups, including, for example, a connectivity history of the wireless device.

## Background
BACKGROUND
Embodiments generally relate to wireless local area networks (WLAN), and in particular, to power saving for one or more client devices in a wireless network.
Some wireless networks are based on a cellular architecture where the system is subdivided into wireless network cells. One type of wireless network cell, known as a basic service set (BSS), contains client devices controlled by a wireless network access point (AP), and another type of wireless network cell, known as an independent basic service set (IBSS), contains client devices which are not controlled by an access point. A service set identifier (SSID) is a label or name that distinguishes one wireless network from another. Client devices use the SSID to establish and maintain connectivity. Wireless access points of different BSSs may be connected via a distribution system (DS) that is usually a wired network. The entire interconnected WLAN network, including the different WLAN cells, their respective WLAN access points and the distribution system is known as an extended service set (ESS).
A client device may, or may not, be battery-powered. For example, a client device, such as a wireless-enabled laptop, a wireless-enabled cellphone, a wireless-enabled personal digital assistant (PDA), and the like, may sometimes be battery-powered, and at other times may receive power from an external source, such as a power outlet. Other client devices, such as a desktop computer, may receive power from an external source, such as a power outlet, and may not have the option to be battery-powered. It may be beneficial to enhance the battery lifetime of battery-powered client devices.
A client device having two or more connection profiles may scan for wireless local area networks matching the profiles in sequence, and if no successful connection is achieved then the client device may go into a sleep state for a sleep interval (e.g., a few seconds) before trying to scan the profiles again. While a device is not in coverage and is scanning for wireless local area networks, the average amount of charge drawn from its battery may be related to the ratio between the time spent in the sleep state and the time spent scanning. For a device with N profiles, an exemplary sequence for scanning/sleeping may be as follows:

P1P2 . . . PN Sleep1 P1P2 . . . PN Sleep2 P1P2 . . . PN Sleep3 P1P2 . . . PN Sleep4 P1P2 . . . PN

where Sleep1, Sleep2, . . . are sleep intervals between profile scanning intervals, and the duration of sleep intervals may be increased (that is, Sleep1<Sleep2<Sleep3< . . . ) until it reaches an upper limit. The more user profiles the device is scanning for, the lower the ratio between the time spent in the sleep state and the time spent scanning. This may have an adverse effect on the battery life of the device. For example, an exemplary wireless client device that is not in coverage may have a battery life of five days if scanning for one profile, three days if scanning for two profiles, and one and a half days if scanning for three profiles.




BRIEF DESCRIPTION OF THE DRAWINGS
Embodiments are illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like reference numerals indicate corresponding, analogous or similar elements, and in which:
FIG. 1 is a block diagram of an exemplary wireless client device, according to some embodiments;
FIG. 2 is an illustration of an exemplary communications system, according to some embodiments;
FIG. 3 is a flowchart of an exemplary method to be performed by a client device, according to some embodiments; and
FIG. 4 is a flowchart of an exemplary method for scanning according to scanning policies of groups of profiles, according to some embodiments.



It will be appreciated that for simplicity and clarity of illustration, elements shown in the figures have not necessarily been drawn to scale. For example, the dimensions of some of the elements may be exaggerated relative to other elements for clarity.
DETAILED DESCRIPTION OF EMBODIMENTS
In the following detailed description, numerous specific details are set forth in order to provide a thorough understanding of embodiments. However it will be understood by those of ordinary skill in the art that the embodiments may be practiced without these specific details. In other instances, well-known methods, procedures, components and circuits have not been described in detail so as not to obscure the embodiments.
Reference is made to FIG. 1, which is a block diagram of an exemplary wireless client device 100, according to some embodiments. A non-exhaustive list of examples for client device 100 includes a wireless-enabled laptop, a wireless-enabled cellphone, a wireless-enabled personal digital assistant (PDA), a wireless-enabled video camera, a wireless-enabled gaming console, a wireless Internet-Protocol (IP) phone and any other suitable wireless client device.
Wireless client device 100 includes at least one antenna 101 coupled to a radio 102, which in turn is coupled to a WLAN controller 104. WLAN controller 104 may be coupled to a memory 106 storing firmware 108 to be executed by WLAN controller 104. Wireless client device 100 includes a processor 110 and a memory 112 coupled to processor 110. Memory 112 may store executable code 114 to be executed by processor 110.
Processor 110 may be coupled to WLAN controller 104 and may be able to control, at least in part, the operation of WLAN controller 104. Client device 100 includes a battery 116 to provide power to radio 102, WLAN controller 104, processor 110 and memories 106 and 112. Wireless client device 100 may include other components that, for clarity, are not shown.
A non-exhaustive list of examples for processor 110 includes a central processing unit (CPU), a digital signal processor (DSP), a reduced instruction set computer (RISC), a complex instruction set computer (CISC) and the like. Memories 106 and 112 may be fixed in or removable from client device 100. A non-exhaustive list of examples for memories 106 and 112 includes any combination of the following:

    
    
        a) semiconductor devices such as registers, latches, read only memory (ROM), mask ROM, electrically erasable programmable read only memory devices (EEPROM), flash memory devices, non-volatile random access memory devices (NVRAM), synchronous dynamic random access memory (SDRAM) devices, RAMBUS dynamic random access memory (RDRAM) devices, double data rate (DDR) memory devices, static random access memory (SRAM), universal serial bus (USB) removable memory, and the like;
        b) optical devices, such as compact disk read only memory (CD ROM), and the like; and
        c) magnetic devices, such as a hard disk, a floppy disk, a magnetic tape, and the like.
    
    


A non-exhaustive list of examples for antenna 101 includes a dipole antenna, a monopole antenna, a multilayer ceramic antenna, a planar inverted-F antenna, a loop antenna, a slot antenna, a dual antenna, an omnidirectional antenna and any other suitable antenna.
Radio 102, WLAN controller 104, processor 110 and memories 106 and 112 are functional blocks and may be implemented in any physical way in client device 100. For example, radio 102, WLAN controller 104, processor 110 and memories 106 and 112 may be implemented in separate integrated circuits, and optionally in additional discrete components. Alternatively, some of the functional blocks may be grouped in one integrated circuit. Furthermore, the functional blocks may be parts of application specific integrated circuits (ASIC), field programmable gate arrays (FPGA) or application specific standard products (ASSP).
In the example of FIG. 1, client device 100 is “802.11-enabled”, which means that wireless communications via WLAN controller 104 are in accordance with one or more of the following standards defined by the Institute of Electrical and Electronic Engineers (IEEE) for Wireless LAN MAC and Physical layer (PHY) specifications. However, it will be obvious to those of ordinary skill in the art how to modify the following for other existing WLAN standards or future related standards, including 802.11n.
















Maximum




Standard
Published
Speed
Frequency
Modulation







802.11
1997
 2 Mbps
2.4 GHz
Phase-Shift


802.11a
1999
54 Mbps
5.0 GHz
Orthogonal Frequency






Division Multiplexing


802.11b
1999
11 Mbps
2.4 GHz
Complementary Code






Keying


802.11g
2003
54 Mbps
2.4 GHz
Orthogonal Frequency






Division Multiplexing









The 802.11 standard explains that access points transmit beacon frames at substantially regular time periods to announce the existence of and to synchronize wireless networks. The format of beacon frames and their contents is explained in detail in the 802.11 standard. The beacon interval is included in each beacon frame. The number of time units between target beacon transmission times is referred to as a “beacon interval”.
Beacon frames may, or may not include the SSID of the wireless network they belong to. In addition, each beacon frame also includes a timestamp which is the value of a clock internal to the access point at the actual transmission time of the beacon. A client device receiving the beacon frame will update its internal clock according to the timestamp in the received beacon frame. Moreover, beacon frames may include other information.
Reference is made additionally to FIG. 2, which is an illustration of an exemplary communications system 200 according to embodiments. System 200 includes a wireless access point (AP) 202 and a network gateway 204 coupled to AP 202 via wired connections 206. Network gateway 204 and wired connections 206 may be part of a “distribution system” for AP 202. Non-limiting examples for network gateway 204 are cable modems, Asymmetric Digital Subscriber Line (ADSL) modems, Asynchronous Transfer Mode (ATM) network gateways, dial-up modems, satellite modems, Integrated Services Digital Network (ISDN) gateways, T-carrier 1 (T1) modems, and the like. It is obvious that any other configuration of a distribution system for AP 202 is possible.
AP 202 has at least one antenna 208 and is configurable to support at least one wireless network name, for example, at least one service set identifier (SSID). A non-exhaustive list of examples for antenna 208 includes a dipole antenna, a monopole antenna, a multilayer ceramic antenna, a planar inverted-F antenna, a loop antenna, a slot antenna, a dual antenna, an omnidirectional antenna and any other suitable antenna. AP 202 may include a router. In the example of FIG. 2, AP 202 is “802.11-enabled”, however, it will be obvious to those of ordinary skill in the art how to modify the following for other existing WLAN standards or future related standards, including 802.11n.
Code 114 may implement a scanning module, possibly along with additional functionality. When executed by processor 110, the scanning module may cause client device 100 to look for a wireless network to which it can connect using techniques known as “active scanning” and “passive scanning”. Processor 110 may program a connection profile, including the SSID (which may be an empty string), to WLAN controller 104. Upon being operatively coupled to radio 102, WLAN controller 104 may automatically initiate passive scanning for a wireless network that matches the programmed connection profile.
In passive scanning, WLAN controller 104 listens for beacon frames, one communication channel at a time. Standard 802.11b, for example, defines 11 different communication channels. If a beacon frame including the SSID of the sought wireless network is received, WLAN controller 104 may initiate an authentication process and, if the authentication process is successful, may initiate an association process with the access point that sent the beacon frame. For example, the access point that sent the beacon frame may be AP 202, and if the association process is successful, client device 100 may become associated with AP 202 over a wireless network 212.
If a beacon frame not including any SSID is received, WLAN controller 104 may initiate a connectivity sequence by transmitting a probe request on the communication channel on which the beacon frame was received. If a “probe response” for the transmitted probe request is received, and if the profile included in the probe response matches the profile stored in WLAN controller 104, WLAN controller 104 may initiate an authentication process and, if the authentication process is successful, may initiate an association process with the access point that sent the probe response. For example, the access point that sent the probe response may be AP 202, and if the association process is successful, client device 100 may become associated with AP 202 over a wireless network 212.
If the profile in the probe response matches the SSID of the profile stored in WLAN controller 104, but does not match other characteristics of that profile, or if the profile in the probe response does not match the SSID of the profile stored in WLAN controller 104, then WLAN controller 104 may proceed to passively scan on the next communication channel. Client device 100 may wait a predefined period of time, for example, 3 seconds, for WLAN controller 104 to report having successfully associated with the sought wireless network. If no such report is received during this predefined period of time (timed using a timer 120 in processor 110), client device 100 may take additional action, such as, for example, programming into WLAN controller 104 an additional connection profile or putting radio 102 into a sleep state.
In active scanning, WLAN controller 104 does not wait for the receipt of a beacon frame in order to transmit the probe request. Moreover, WLAN controller 104 reports back to processor 110 as soon as WLAN controller 104 has succeeded in discovering an access point with the particular wireless network name in the probe requests of the active scanning. Similarly, WLAN controller 104 reports back to processor 110 as soon as WLAN controller 104 has failed to discover any access points with the particular wireless network name in the probe requests of the active scanning. Consequently, if no access point with the particular wireless network name has been discovered due to the active scanning, client device 100 will be notified of such sooner than if it had relied on passive scanning.
Client device 100 may have stored in memory 112 two or more connection profiles 118 of wireless local area networks. For example, a user of client device 100 may store in memory 112 a profile P1 of the wireless local area network at the user's home, a profile P2 of the wireless local area network at the user's workplace, and a profile P3 of any wireless local area network (e.g. a hotspot, which is a WLAN node that provides Internet connection and virtual private network access from a given location).
Reference is now made to FIG. 3, which is a flowchart of an exemplary method to be implemented in client device 100, according to some embodiments. Executable code 114, when executed by processor 110, may cause client device 100 to implement the method of FIG. 3.
At 302, client device 100 may partition connection profiles 118 into two or more groups. By “partition”, it is meant that while each profile belongs to a group, none of the profiles belongs to more than one of the groups. A group may consist of one or more profiles. At 304, client device 100 may associate with each group a scanning policy that determines how often scanning for wireless local area networks that match any profile in the group is conducted. For the experience of a user of the client device to be tolerable, there is a limit to how infrequently scanning for wireless local area networks matching certain profiles is conducted. For example, it may be tolerable to the user that certain profiles are scanned only once every third sleep interval if a sleep interval is 60 seconds or less in duration.
Associating scanning policies with the groups may occur before, after or concurrently with partitioning the connection profiles into groups. Moreover, the connection profiles may be newly partitioned into groups each time client device 100 begins a new scanning sequence, for example, when client device 100 loses a connection to or goes out of range of any wireless local area networks matching any of the stored profiles
One or more factors may be taken into consideration when determining how to partition the connection profiles into groups. A non-exhaustive list of examples for such factors includes a connectivity history of client device 100 and priorities assigned to the profiles. The connectivity history of client device may include, for example, any or a combination, possibly weighted, of one or more of the following:

    
    
        i) how many times client device 100 was connected to wireless local area networks matching a particular profile;
        ii) how recently client device 100 was connected to a wireless local area network matching a particular profile; and
        iii) the total duration of connections of client device 100 to wireless local area networks matching a particular profile.

The connectivity history of the wireless client device on which the partitioning of the profiles into groups is based may be cleared when appropriate, and/or may include a forgetting factor so that older connections have less effect than more recent connections.

    
    


EXAMPLE 1
Profiles P1 (work), P2 (home) and P3 (any) may be partitioned into a group of high-priority profiles consisting of profiles P1 and P2 and a group of low-priority profiles consisting of profile P3. The group of high-priority profiles may have associated therewith a scanning policy of scanning once per each sleep interval, and the group of low-priority connection profiles may have associated therewith a scanning policy of scanning once per each other sleep interval.












group description
profiles
scanning policy







high-priority profiles
P1 and P2
once per each sleep interval


low-priority profiles
P3
once per each other sleep interval









EXAMPLE 2
Client device 100 may monitor on a profile-by-profile basis how many times client device 100 connects to wireless local area networks matching profiles P1 (work), P2 (home) and P3 (any). For example, client device 100 may have connected to WLANs matching profile P1 15 times, to WLANs matching profile P2 8 times, and to WLANs matching profile P3 3 times. Profiles P1, P2 and P3 may therefore be partitioned into a group of most-frequently used profiles (consisting of profile P1), a group of least-frequently used profiles (consisting of profile P3), and a group of profiles that are neither most-frequently used nor least-frequently used (consisting of profile P2). The group of one or more most-frequently connected profiles may have associated therewith a scanning policy for being scanned once per each sleep interval, the group of one or more least-frequently connected profiles may have associated therewith a scanning policy for being scanned once per each third sleep interval, and the group of any other profiles may have associated therewith a scanning policy for being scanned once per each second sleep interval.












group description
profiles
scanning policy







most-frequently used
P1
once per each sleep interval


neither most-frequently used
P2
once per each second


nor least-frequently used

sleep interval


least-frequently used
P3
once per each third sleep interval









At 306, client device 100 may activate the scanning module to scan for wireless local area networks so that scanning for wireless local area networks matching any profile in a particular group is conducted according to the scanning policy of the particular group.
An example of scanning according to scanning policies of two or more groups of profiles is shown in FIG. 4, which is a flowchart of an exemplary method to be implemented by client device 100, according to some embodiments. Executable code 114, when executed by processor 110, may cause client device 100 to implement the method of FIG. 4.
At 402, a counter J is set to zero. At 404, client device 100 scans for wireless local area networks matching the stored profiles, one profile at a time, sequentially. As explained above, processor 110 programs a particular profile to WLAN controller 104, which scans, one communication channel at a time, for a wireless local area network matching the programmed profile. If a matching wireless local area network is found, then this method is exited during 404 so that client device 100 can attempt to associate with the access point that controls the matching wireless local area network. If no such wireless local area network is found, processor 110 programs another profile to WLAN controller 104, which scans, one communication channel at a time, for a wireless local area network matching the newly programmed profile. Once scanning has been conducted once for each of the stored profiles, at 406, radio 102 (and possibly other components of client device 100) enters a sleep state for a sleep interval Sleep1.
At 408, counter J is incremented by one. At 410, client device 100 scans, one profile at a time, sequentially, for wireless local area networks matching any profile(s) in each group that has a scanning policy of once per a fixed number M of sleep intervals, where J mod M=0. If a matching wireless local area network is found, then this method is exited during 410 so that client device 100 can attempt to associate with the access point that controls the matching wireless local area network. Otherwise, at 412, radio 102 (and possibly other components of client device 100) enters a sleep state for a sleep interval of longer duration than the previous sleep interval, subject to an upper limit.
EXAMPLE 1
The group of high-priority profiles (P1 and P2) has a scanning policy of once per each sleep interval, i.e. M=1, and the group of low-priority profiles (P3) has a scanning policy of once per each other sleep interval, i.e. M=2. For all values of counter J, J mod1=0, and scanning for wireless local area networks matching high-priority profiles is conducted. When counter J has an odd value, then J mod2=1, and no scanning for wireless local area networks matching low-priority profiles is conducted. When counter J has an even value, then J mod2=0, and scanning for wireless local area networks matching low-priority profiles is conducted. Consequently, the sequence for scanning may be as follows:

P1P2P3 Sleep1 P1P2 Sleep2 P1P2P3 Sleep3 P1P2 Sleep4 P1P2P3 Sleep5 P1P2 . . .

where Sleep1, Sleep2, . . . are sleep intervals between profile scanning, and the duration of sleep intervals increases (that is, Sleep1<Sleep2<Sleep3< . . . ) until it reaches an upper limit. Since in this example low-priority profiles are scanned less often than high-priority profiles, this scanning sequence may result in longer battery lifetimes when long periods of scanning occur, such as when client device 100 is out of range of any wireless local area networks matching any of the stored profiles.

EXAMPLE 2
The group of most-frequently used profiles has a scanning policy of once per each sleep interval, i.e. M=1, the group of least-frequently used profiles has a scanning policy of once per each third sleep interval, i.e. M=3, and the group of neither most-frequently used nor least-frequently used profiles has a scanning policy of once per each other sleep interval, i.e. M=2. Consequently the sequence for scanning may be as follows:

P1P2P3 Sleep1 P1 Sleep2 P1P2 Sleep3 P1P3 Sleep4 P1P2 Sleep5 P1 Sleep6 P1 P2P3 . . .

where Sleep1, Sleep2, . . . are sleep intervals between profile scanning, and the duration of sleep intervals increases (that is, Sleep1<Sleep2<Sleep3< . . . ) until it reaches an upper limit. Since in this example scanning for the least-recently used profiles occurs less often than scanning for the most-recently used profiles, this scanning sequence may result in longer battery lifetimes when long periods of scanning occur, such as when client device 100 is out of range of any wireless local area networks matching any of the stored profiles.

While certain features have been illustrated and described herein, many modifications, substitutions, changes, and equivalents will now occur to those of ordinary skill in the art. It is, therefore, to be understood that the appended claims are intended to cover all such modifications and changes.

## Claims

1. A method in a wireless device, the method comprising:
partitioning two or more profiles stored in the wireless device into two or more groups, each of the groups having associated therewith a different number of sleep intervals; and
waiting the number of sleep intervals associated with a particular group between subsequent scans for wireless local area networks matching any profile in the particular group,
wherein partitioning the profiles into groups comprises partitioning the profiles into the groups based on a history of connectivity of the wireless device to wireless local area networks matching the profiles, wherein the history includes a combination of two or more of how often, how many times and for how long the wireless device was connected to wireless local area networks matching a particular profile.

2. A method in a wireless device, the method comprising:
partitioning two or more profiles stored in the wireless device into two or more groups, each of the groups having associated therewith a different number of sleep intervals; and
waiting the number of sleep intervals associated with a particular group between subsequent scans for wireless local area networks matching any profile in the particular group,
wherein partitioning the profiles into the groups comprises partitioning the profiles into the groups based on a history of connectivity of the wireless device to wireless local area networks matching the profiles, wherein the history includes a weighted combination of two or more of how often, how many times and for how long the wireless device was connected to wireless local area networks matching a particular profile.

3. A method in a wireless device, the method comprising:
grouping profiles to which the most connections have been made by the wireless device in a first group;
grouping profiles to which neither the most nor the least connections have been made by the wireless device in a second group;
grouping profiles to which the least or no connections have been made by the wireless device into a third group;
scanning for wireless local area networks matching any profile in the first group once per each sleep interval;
scanning for wireless local area networks matching any profile in the second group once per each second sleep interval; and
scanning for wireless local area networks matching any profile in the third group once per each third sleep interval.

4. A wireless device comprising:
an antenna;
a radio coupled to the antenna;
a wireless local area network controller coupled to the radio;
a processor coupled to the wireless local area network controller; and
memory to store two or more profiles and to store code which, when executed by the processor, partitions the profiles into two or more groups and scans for wireless local area networks matching any of the profiles according to scanning policies of the groups,
wherein the code, when executed by the processor, groups profiles to which the most connections have been made by the wireless device in a first group having associated therewith a scanning policy for being scanned once per each sleep interval, groups profiles to which the least or no connections have been made by the wireless device in a second group having associated therewith a scanning policy for being scanned once per each third sleep interval, and groups any remaining profiles in a third group having associated therewith a scanning policy for being scanned once per each second sleep interval.

5. The wireless device of claim 4, wherein the wireless local area controller is compatible with IEEE 802.11.