mech_eap.git
11 years agohostapd: Make VHT IE struct more expressive
Johannes Berg [Fri, 1 Mar 2013 16:24:57 +0000 (18:24 +0200)]
hostapd: Make VHT IE struct more expressive

The VHT IE struct just has an opaque 8-byte array for the MCS
set, make it more expressive by explicitly naming the pieces.

Signed-hostap: Johannes Berg <johannes.berg@intel.com>

11 years agoP2P: Fix regression in GO Negotiation
Jouni Malinen [Fri, 1 Mar 2013 09:53:46 +0000 (11:53 +0200)]
P2P: Fix regression in GO Negotiation

Commit fb8984fd6f4b49d9178dd87a880dd7add514b7d1 cleared wps_method to
WPS_NOT_READY in p2p_stop_find_for_freq() as an attempt to clear
authorization when a group formation is cancelled. However, this code
path is hit also in cases where the user did not actually cancel
anything (e.g., from p2p_process_go_neg_req()). As such, it is not fine
to clear wps_method here even if it could be proper for some cases. For
now, revert that part to avoid regressions and consider clearing
wps_method on cancel separately.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoP2P: Skip Listen phase when peer is expected to be waiting
Jouni Malinen [Thu, 28 Feb 2013 20:35:11 +0000 (22:35 +0200)]
P2P: Skip Listen phase when peer is expected to be waiting

In case we have replied to a peer's GO Negotiation Request frame with a
GO Negotiation Response frame using status code
info-currently-unavailable (1), the peer is likely going to wait for us
to initiate GO Negotiation on its Listen channel. We were previously
using alternativing send-GO-Neg-Req and Listen phase when providing that
response after the user had authorized the connection. However, the
Listen phase here is unnecessary in this case and will make the
connection take longer time to go through. Skip the Listen phase and
make the wait-for-GO-Neg-Resp timeout random between 100 and 200 ms to
avoid getting in sync with the peer. In practice, this will make us
retry GO Negotiation Request frames more frequently and remain on the
peer's Listen channel for most of the time when initiating GO
Negotiation after status=1 response.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoP2P: Increase GO Negotiation timeouts
Jouni Malinen [Thu, 28 Feb 2013 20:15:46 +0000 (22:15 +0200)]
P2P: Increase GO Negotiation timeouts

There may be environments in which large number of devices are operating
on the social channels. In such cases, it is possible for the Action
frame TX operation wait for quite long time before being able to get the
frame out. To avoid triggering GO Negotiation failures, increase the
timeouts for GO Neg Req (with TX ACK) and GO Neg Resp (with or without
TX ACK as long as status=0) to 500 ms.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agonl80211: Add debug print for cancel-frame-wait command
Jouni Malinen [Thu, 28 Feb 2013 20:09:32 +0000 (22:09 +0200)]
nl80211: Add debug print for cancel-frame-wait command

This makes it easier to interpret the logs for offloaded TX frame
operations.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoAvoid partial BSS entries in control interface
Jouni Malinen [Thu, 28 Feb 2013 16:49:33 +0000 (18:49 +0200)]
Avoid partial BSS entries in control interface

Most of the print_bss_info() cases were already returning zero lenth to
avoid returning partial returns to the BSS commands, but the HS 2.0 and
Wi-Fi Display entries behaved differently. Make those consistent with
rest of the items.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoMark last BSS entry by #### instead of ====
Dmitry Shmidt [Thu, 28 Feb 2013 16:46:06 +0000 (18:46 +0200)]
Mark last BSS entry by #### instead of ====

This allows ctrl_iface users to iterate through the BSS entries by
fetching multiple BSS entries with "BSS RANGE=N-" without having to use
one extra round to get empty return value as the indication of the last
entry having been found.

Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
11 years agoAdd WPA_BSS_MASK_DELIM flag to BSS command
Dmitry Shmidt [Thu, 28 Feb 2013 16:43:05 +0000 (18:43 +0200)]
Add WPA_BSS_MASK_DELIM flag to BSS command

This flag will add ==== delimiter between to separate bss results.
Unlike the other BSS command MASK values, this delimiter is not
included by default to avoid issues with existing users of the BSS
command.

Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
11 years agonl80211: Fix WDS STA handling with multiple BSS interfaces
Felix Fietkau [Thu, 28 Feb 2013 14:55:13 +0000 (16:55 +0200)]
nl80211: Fix WDS STA handling with multiple BSS interfaces

The MAC address of the AP VLAN needs to be the same as the BSS that the
STA belongs to.

Signed-hostap: Felix Fietkau <nbd@openwrt.org>

11 years agoUse scan results for reconnection
Masashi Honma [Thu, 28 Feb 2013 14:33:28 +0000 (16:33 +0200)]
Use scan results for reconnection

This patch uses existing scan results for fast connection on REASSOCIATE
and RECONNECT commands.

Signed-hostap: Masashi Honma <masashi.honma@gmail.com>

11 years agoFix test-{md5,sha1} builds
Jouni Malinen [Thu, 28 Feb 2013 14:16:07 +0000 (16:16 +0200)]
Fix test-{md5,sha1} builds

These need to include the libraries to fix aliasing_hide_typecast()
in md5-internal.c.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoInterworking: Remove unused variable warnings
Masashi Honma [Thu, 28 Feb 2013 13:01:09 +0000 (15:01 +0200)]
Interworking: Remove unused variable warnings

This patch removes these warnings.

interworking.c: In function 'interworking_credentials_available_3gpp':
interworking.c:1330:6: warning: unused variable 'ret' [-Wunused-variable]
interworking.c:1329:19: warning: unused variable 'cred' [-Wunused-variable]

Signed-hostap: Masashi Honma <masashi.honma@gmail.com>

11 years agowpa_cli: Increase receive buffer from 2048 to 4096 bytes
Jouni Malinen [Wed, 27 Feb 2013 13:59:55 +0000 (15:59 +0200)]
wpa_cli: Increase receive buffer from 2048 to 4096 bytes

wpa_supplicant uses 4096 byte buffer for control interface responses, so
wpa_cli should do the same to avoid truncating responses unnecessarily.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoP2P: Only schedule a single p2p_go_neg_start timeout at a time
Jouni Malinen [Tue, 26 Feb 2013 16:07:17 +0000 (18:07 +0200)]
P2P: Only schedule a single p2p_go_neg_start timeout at a time

It is possible for the driver to indicate multiple Probe Request frames
that would be processed in a single loop. If those frames happen to be
from a peer which with we are trying to start GO Negotiation, multiple
timeouts to start GO Negotiation (p2p_go_neg_start) could end up being
scheduled. This would result in confusing burst of multiple GO
Negotiation Request frames being sent once the RX loop finally
concludes. Avoid this by scheduling only a single eloop timeout to
trigger GO Negotiation regardless of how many Probe Request frames from
the peer is received. In addition, make sure this timeout gets canceled
in p2p_deinit().

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoP2P: Do not start new GO Neg on Probe Req when waiting for Confirm
Jouni Malinen [Tue, 26 Feb 2013 16:02:51 +0000 (18:02 +0200)]
P2P: Do not start new GO Neg on Probe Req when waiting for Confirm

If we have already sent out GO Negotiation Response and are waiting for
the peer to reply with GO Negotiation Confirm, there is no point in
re-starting GO Negotiation based on Probe Request frame from the peer.
Doing that would just result in confusing GO Negotiation exchange with
multiple sessions running at the same time.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoP2P: Fail GO Negotiation on missing Group ID
Jouni Malinen [Tue, 26 Feb 2013 15:22:11 +0000 (17:22 +0200)]
P2P: Fail GO Negotiation on missing Group ID

The device that is selected as the GO shall incode P2P Group ID
attribute in GO Negotiation Response/Confirm message. Previously we did
not reject a message without that attribute since it was possible to
continue operations even without knowing the SSID. However, this can
potentially result in confusing results since missing P2P Group ID
attribute can be a sign of conflicting GO role determination (both
devices assuming the peer is the GO). To get clearer end result for the
GO Negotiation, reject this as a fatal error. In addition, stop GO
Negotiation if GO Negotiation Confirm indicates non-zero status since
that is also a fatal error.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoP2P: Assign GO tie breaker bit at the same time with dialog token
Jouni Malinen [Tue, 26 Feb 2013 14:56:48 +0000 (16:56 +0200)]
P2P: Assign GO tie breaker bit at the same time with dialog token

Commit 624b4d5a6469c92b039e0d39655b9e0eb26588aa changed GO Negotiation
to use the same Dialog Token value for all retransmissions of the GO
Negotiation Request within the same session. However, it did leave the
tie breaker bit changing for each frame. While this should not have
caused issues for most cases, it looks like there are possible sequences
where the peer may end up replying to two GO Negotiation Request frames
with different tie breaker values. If in such a case the different GO
Negotiation Response frames are used at each device, GO role
determination may result in conflicting results when same GO intent is
used.

Fix this by assigning the tie breaker value at the same time with the
dialog token (i.e., when processing the p2p_connect command instead of
for each transmitted GO Negotiation Request frame) to avoid issues with
GO selection.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoTDLS: Pass peer's VHT Capability information during sta_add
Sunil Dutt [Mon, 25 Feb 2013 08:31:50 +0000 (10:31 +0200)]
TDLS: Pass peer's VHT Capability information during sta_add

The information of the peer's VHT capability is required for the
driver to establish a TDLS link in VHT mode with a compatible peer.
Pass this information to the driver when the peer station is
getting added.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoWPS: Clear sent_carrier to avoid errors in python script
Jouni Malinen [Sun, 24 Feb 2013 11:12:32 +0000 (13:12 +0200)]
WPS: Clear sent_carrier to avoid errors in python script

This is needed to avoid errors when reporting the result of an NFC
connection handover that failed.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoWPS: Fix OOB Device Password use in PSK1,PSK1 derivation
Jouni Malinen [Sun, 24 Feb 2013 08:57:49 +0000 (10:57 +0200)]
WPS: Fix OOB Device Password use in PSK1,PSK1 derivation

WSC specification 2.0 section 7.4 describes OOB password to be expressed
in ASCII format (upper case hexdump) instead of raw binary.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoWPS: Add AP mode NFC connection handover with wpa_supplicant/nfcpy
Jouni Malinen [Sun, 24 Feb 2013 08:57:06 +0000 (10:57 +0200)]
WPS: Add AP mode NFC connection handover with wpa_supplicant/nfcpy

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoWPS NFC: Add connection handover support for ER
Jouni Malinen [Sun, 24 Feb 2013 08:56:29 +0000 (10:56 +0200)]
WPS NFC: Add connection handover support for ER

wpa_supplicant can now generate the WPS carrier record for connection
handover response when acting as an ER. The AP whose configuration is
provided in this way is identified with an UUID as an argument to
wps-nfc.py.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoWPS: Add wps-er-config command for writing config token from ER
Jouni Malinen [Sun, 24 Feb 2013 08:54:18 +0000 (10:54 +0200)]
WPS: Add wps-er-config command for writing config token from ER

UUID of the AP is specified on the command line to select which
configuration is used.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoInterworking: Select highest priority cred if multiple matches
Jouni Malinen [Sat, 16 Feb 2013 17:54:09 +0000 (19:54 +0200)]
Interworking: Select highest priority cred if multiple matches

Previously, the credential to use for a connection with a specific BSS
was picked arbitrary based on first found match of each matching
mechanism. While the credential priorities were used elsewhere, this did
not take into account that different mechanisms could find multiple
matching credentials. As such, the highest priority credential was not
always used in case more than one credential matched with the selected
BSS. Fix this by checking credential priorities again during connection
request.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoGAS server: Fix a regression in GAS server callback
Jouni Malinen [Sat, 16 Feb 2013 17:15:05 +0000 (19:15 +0200)]
GAS server: Fix a regression in GAS server callback

Commit 2d9ffe1e855410839468a75cf6723ee339acdd7e broke GAS server
callback for receiving Public Action frames. The incorrect context
pointer was used in the public_action_cb2 case. Fix this to use the
correct context pointer.

Signed-hostap: Jouni Malinen <j@w1.fi>

11 years agohostapd: Fix Max SP Length derivation from QoS Info
Srinivasan B [Sat, 16 Feb 2013 09:15:13 +0000 (11:15 +0200)]
hostapd: Fix Max SP Length derivation from QoS Info

Hostapd provides QoS info of the STA (Service Period & AC mask) to the
kernel during wpa_driver_nl80211_sta_add call. Bit 5 and Bit 6 of QoS
info represents the Max SP length. Fix an issue in the code to fetch the
Max SP by shifting right the QoS info by value WMM_QOSINFO_STA_SP_SHIFT.
(operator ">" is replaced with ">>" operator).

Signed-off-by: Srinivasan <srinivasanb@posedge.com>
11 years agonl80211: Configure STA Capabilities and Extended Capabilities
Sunil Dutt [Thu, 14 Feb 2013 16:12:42 +0000 (18:12 +0200)]
nl80211: Configure STA Capabilities and Extended Capabilities

These are needed to allow drivers to implement all TDLS functionality
properly.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoSynchronize with wireless-testing.git include/uapi/linux/nl80211.h
Jouni Malinen [Fri, 15 Feb 2013 21:45:02 +0000 (23:45 +0200)]
Synchronize with wireless-testing.git include/uapi/linux/nl80211.h

Signed-hostap: Jouni Malinen <j@w1.fi>

11 years agoWPS: Fix build without CONFIG_WPS_NFC
Jouni Malinen [Fri, 15 Feb 2013 15:09:24 +0000 (17:09 +0200)]
WPS: Fix build without CONFIG_WPS_NFC

Commit bbf41865c90c2e16510712fa32290729c194422d added calls to functions
that are only defined if CONFIG_WPS_NFC=y. Protect those calls properly
to avoid build issues.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoWPS: Add support for NFC handover select generation with wpa_supplicant
Jouni Malinen [Fri, 15 Feb 2013 10:34:55 +0000 (12:34 +0200)]
WPS: Add support for NFC handover select generation with wpa_supplicant

When wpa_supplicant is controlling an AP mode interface, it can generate
the alternative carrier record for NFC connection handover select
message similarly to the way this is done in hostapd.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoWPS: Update NFC connection handover documentation
Jouni Malinen [Fri, 15 Feb 2013 09:51:28 +0000 (11:51 +0200)]
WPS: Update NFC connection handover documentation

The last couple of changes to the control interface commands for NFC
connection handover had not yet been documented.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoWPS: Add support for config token generation with wpa_supplicant
Jouni Malinen [Fri, 15 Feb 2013 09:45:29 +0000 (11:45 +0200)]
WPS: Add support for config token generation with wpa_supplicant

When wpa_supplicant is controlling an AP mode interface, it can generate
the NFC configuration token similarly to the way this is done in
hostapd.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoWPS: Allow password token to be written with nfcpy
Jouni Malinen [Fri, 15 Feb 2013 09:29:37 +0000 (11:29 +0200)]
WPS: Allow password token to be written with nfcpy

This adds write-password option for the nfcpy example script for
wpa_supplicant to match hostapd wps-ap-nfc.py functionality.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoWPS: Use pre-configured NFC password token instead of overriding it
Jouni Malinen [Fri, 15 Feb 2013 09:24:29 +0000 (11:24 +0200)]
WPS: Use pre-configured NFC password token instead of overriding it

"WPS_NFC_TOKEN <WPS/NDEF>" used to generate a new NFC password token
regardless of whether there was a pre-configured token in the
configuration. Change this to use the pre-configured value, if
available, instead. This allows the same command to be used to write the
password token to an NFC tag more conveniently.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoTDLS: Pass peer's Capability and Ext Capability info during sta_add
Sunil Dutt [Tue, 5 Feb 2013 14:50:36 +0000 (16:50 +0200)]
TDLS: Pass peer's Capability and Ext Capability info during sta_add

The contents of the peer's capability and extended capability
information is required for the driver to perform TDLS P-UAPSD and Off
Channel operations. Pass this information to the driver when the peer
station is getting added.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoAndroid: Enable TDLS support in the build
Sunil Dutt [Thu, 14 Feb 2013 15:47:42 +0000 (17:47 +0200)]
Android: Enable TDLS support in the build

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoTDLS: Pass peer's HT Capability and QOS information during sta_add
Sunil Dutt [Tue, 5 Feb 2013 14:41:01 +0000 (16:41 +0200)]
TDLS: Pass peer's HT Capability and QOS information during sta_add

The information of the peer's HT capability and the QOS information is
required for the driver to perform TDLS operations. Pass this
information to the driver when the peer station is getting added.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agonl80211: Add debug prints for STA add/set operations
Jouni Malinen [Thu, 14 Feb 2013 15:44:21 +0000 (17:44 +0200)]
nl80211: Add debug prints for STA add/set operations

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoTDLS: Fix add/set STA operation
Jouni Malinen [Thu, 14 Feb 2013 16:23:33 +0000 (18:23 +0200)]
TDLS: Fix add/set STA operation

Commit a9a1d0f08aaf7c96f40def0d7966399b89b2a7c0 added vht_capabilities
to struct hostapd_sta_add_params but forgot to update
wpa_supplicant_tdls_peer_addset() to initialize the variable to NULL.
This could result in uninitialized pointer being used in
driver_nl80211.c when adding a TDLS peer entry. Fix this by clearing the
hostapd_sta_add_params with memset.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoSynchronize with wireless-testing.git include/uapi/linux/nl80211.h
Jouni Malinen [Thu, 14 Feb 2013 16:17:16 +0000 (18:17 +0200)]
Synchronize with wireless-testing.git include/uapi/linux/nl80211.h

Signed-hostap: Jouni Malinen <j@w1.fi>

11 years agoWPS: Allow Device Password to be changed from M1 to M2
Jouni Malinen [Thu, 14 Feb 2013 18:41:14 +0000 (20:41 +0200)]
WPS: Allow Device Password to be changed from M1 to M2

Registrar is allowed to propose another Device Password ID in M2. Make
Enrollee validate Device Password ID in M2 to check if this happened.
This commit adds support for changing from NFC password token to default
PIN for the case where the AP is the Enrollee and has both the NFC
password token and AP PIN enabled at the same time.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoWPS: Fix wps_reg nfc-pw option
Jouni Malinen [Thu, 14 Feb 2013 17:44:54 +0000 (19:44 +0200)]
WPS: Fix wps_reg nfc-pw option

Commit ffdaa05a6b1b59c4b2e50f9b7fef82769fc2d3fe added support for using
NFC password token from an AP. However, it had a bug that prevented the
wpa_supplicant wps_reg command from being used with "nfc-pw" as the PIN
value. Fix string comparison to handle this correctly.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoTDLS: Tear down peers when disconnecting from the AP
Sunil Dutt [Tue, 12 Feb 2013 21:25:21 +0000 (23:25 +0200)]
TDLS: Tear down peers when disconnecting from the AP

A TDLS Teardown frame with Reason Code 3 (Deauthenticated because
sending STA is leaving (or has left) IBSS or ESS) shall be transmitted
to all TDLS peer STAs (via the AP or via the direct path) prior to
transmitting a Disassociation frame or a Deauthentication frame to the
AP.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoP2P: Do not use old scan result data for peer discovery
Jouni Malinen [Tue, 12 Feb 2013 17:25:18 +0000 (19:25 +0200)]
P2P: Do not use old scan result data for peer discovery

The driver may have cached (e.g., in cfg80211 BSS table) the scan
results for relatively long time. To avoid reporting stale information,
update P2P peers only based on results that have based on frames
received after the last p2p_find operation was started.

This helps especially in detecting when a previously operating GO stops
the group since the BSS entry for that could live for 30 seconds in the
cfg80211 cache. Running p2p_flush followed by p2p_find will now allow
wpa_supplicant to not add a P2P peer entry for that GO if the group had
been terminated just before that p2p_flush command. Previously, that GO
could have been indicated as a newly found device for up to 30 seconds
after it had stopped the group.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoUse more accurate timestamps for scan results
Jouni Malinen [Tue, 12 Feb 2013 17:14:32 +0000 (19:14 +0200)]
Use more accurate timestamps for scan results

For various P2P use cases, it is useful to have more accurate timestamp
for the peer information update. This commit improves scan result
handling by using a single timestamp that is taken immediately after
fetching the results from the driver and then using that value to
calculate the time when the driver last updated the BSS entry. In
addition, more debug information is added for P2P peer updates to be
able to clearly see how old information is being used here.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoP2P: Postpone P2P-DEVICE-FOUND if config_methods not known
Jouni Malinen [Tue, 12 Feb 2013 16:24:56 +0000 (18:24 +0200)]
P2P: Postpone P2P-DEVICE-FOUND if config_methods not known

If we discover a P2P peer based on a Beacon frame from the GO role, we
do not get information about the supported configuration methods. This
can result in issues if the P2P managing entity above wpa_supplicant is
not prepared to handling config_methods=0x0. To avoid this, postpone
reporting of the P2P-DEVICE-FOUND event when this happens on one of the
social channels. It would be good to be able to this on all channels,
but that could result in issues of never indicating the event for a peer
that is operating a GO on a channel that requires passive scanning.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoP2P: Do not allow peer update to clear config_methods
Jouni Malinen [Tue, 12 Feb 2013 16:14:48 +0000 (18:14 +0200)]
P2P: Do not allow peer update to clear config_methods

It could be possible for the scan results to include two entries for a
peer, one from the Listen state and the second one from the GO role. The
latter could be based on a Beason frame. If that happens and the entry
from GO is processed last, the P2P peer config_methods value could
potentially get cleared since Beacon frames do not include this
information in either WPS or P2P element. Avoid this by allowing the
config_methods value for P2P peers to be updated only if the new value
is non-zero.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoWPS: Report NFC connection handover completion differently
Jouni Malinen [Mon, 11 Feb 2013 16:43:46 +0000 (18:43 +0200)]
WPS: Report NFC connection handover completion differently

Instead of reporting only one connection handover message, report
completion of NFC connection handover with carrier record from both the
request and select messages.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoP2P: Avoid concurrent scans during all steps of group formation
Jouni Malinen [Mon, 11 Feb 2013 10:21:03 +0000 (12:21 +0200)]
P2P: Avoid concurrent scans during all steps of group formation

Previously, only some P2P states were considered to postpone concurrent
station mode scans during group formation. Especially the WPS
provisioning step was skipped due to issues to scans run on the P2P
client interface (see commit fc6997b345d97c80965725b12c52b0d225f32a1a).
This is not ideal since a concurrent scan can slow down group formation
considerably and potentially make it time out. Enforce p2p-in-progress
through all steps of group formation on another interface to address
this.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoP2P: Cancel group formation timeout on group removal (on client)
Jouni Malinen [Sun, 10 Feb 2013 21:36:52 +0000 (23:36 +0200)]
P2P: Cancel group formation timeout on group removal (on client)

Group formation timeout is normally canceled when 4-way handshake is
completed (WPA_COMPLETED -> wpas_p2p_completed). However, it is possible
for the GO to stop the group before this happens (i.e., send
Deauthentication frame with reason code 3 before 4-way handshake is
completed). This resulted in the group getting removed, but the group
formation timeout left behind. The unexpected timeout may then result in
undesired termination of the following operation. Fix this by canceling
the group formation timeout in wpas_p2p_group_delete() similarly to how
group idle timeout was canceled there.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoWPS: Change listen time to match nfcpy default (250 ms)
Jouni Malinen [Sun, 10 Feb 2013 16:49:20 +0000 (18:49 +0200)]
WPS: Change listen time to match nfcpy default (250 ms)

Signed-hostap: Jouni Malinen <j@w1.fi>

11 years agoWPS: Report only the carrier record from NFC to wpa_supplicant
Jouni Malinen [Sun, 10 Feb 2013 16:42:43 +0000 (18:42 +0200)]
WPS: Report only the carrier record from NFC to wpa_supplicant

Since there could be multiple carrier records, it is cleaner to report
only the WPS carrier record instead of full NFC connection handover
select to wpa_supplicant.

Signed-hostap: Jouni Malinen <j@w1.fi>

11 years agoWPS: Fetch only the carrier record from wpa_supplicant for NFC
Jouni Malinen [Sun, 10 Feb 2013 16:19:59 +0000 (18:19 +0200)]
WPS: Fetch only the carrier record from wpa_supplicant for NFC

Since there could be multiple carrier records, it is cleaner to build
only the WPS carrier record instead of full NFC connection handover
request within wpa_supplicant.

Signed-hostap: Jouni Malinen <j@w1.fi>

11 years agoWPS: Update nfcpy script to support AP mode NFC connection handover
Jouni Malinen [Sun, 10 Feb 2013 15:14:11 +0000 (17:14 +0200)]
WPS: Update nfcpy script to support AP mode NFC connection handover

Initialize NFC connection handover as the server and reply with WPS
carrier record in connection select.

Signed-hostap: Jouni Malinen <j@w1.fi>

11 years agoWPS: Add command for fetching carrier record for NFC handover
Jouni Malinen [Sun, 10 Feb 2013 15:12:55 +0000 (17:12 +0200)]
WPS: Add command for fetching carrier record for NFC handover

Control interface command "NFC_GET_HANDOVER_SEL NDEF WPS-CR" can now be
used to fetch WPS carrier record from hostapd.

Signed-hostap: Jouni Malinen <j@w1.fi>

11 years agoWPS: Clean up debug prints with nfcpy
Jouni Malinen [Sun, 10 Feb 2013 14:27:59 +0000 (16:27 +0200)]
WPS: Clean up debug prints with nfcpy

Signed-hostap: Jouni Malinen <j@w1.fi>

11 years agoWPS: Remove 0.5 sec extra wait from NFC handover with nfcpy
Jouni Malinen [Sun, 10 Feb 2013 14:27:14 +0000 (16:27 +0200)]
WPS: Remove 0.5 sec extra wait from NFC handover with nfcpy

Signed-hostap: Jouni Malinen <j@w1.fi>

11 years agoWPS: Use alternating poll/listen for NFC peer discovery with nfcpy
Jouni Malinen [Sun, 10 Feb 2013 14:25:20 +0000 (16:25 +0200)]
WPS: Use alternating poll/listen for NFC peer discovery with nfcpy

This is needed to find the NFC peer to avoid cases where both devices
could be using the same operation.

Signed-hostap: Jouni Malinen <j@w1.fi>

11 years agoWPS: Configure logging to show nfcpy log message
Jouni Malinen [Sun, 10 Feb 2013 14:20:25 +0000 (16:20 +0200)]
WPS: Configure logging to show nfcpy log message

Signed-hostap: Jouni Malinen <j@w1.fi>

11 years agoWPS: Add an example python script for NFC operations with hostapd
Jouni Malinen [Sat, 9 Feb 2013 18:44:15 +0000 (20:44 +0200)]
WPS: Add an example python script for NFC operations with hostapd

wps-ap-nfc.py uses nfcpy and python-wpactrl to support NFC operations
with hostapd for WPS operations.

Signed-hostap: Jouni Malinen <j@w1.fi>

11 years agohostapd: Do not change HT40 capability due to OBSS scan
Johannes Berg [Sat, 9 Feb 2013 10:16:58 +0000 (12:16 +0200)]
hostapd: Do not change HT40 capability due to OBSS scan

The capability itself isn't really affected by an OBSS
scan, only the HT operation must then be restricted to
20 MHz. Change this, and therefore use the secondary
channel configuration to determine the setting of the
OP_MODE_20MHZ_HT_STA_ASSOCED flag.

This shouldn't really change anything functionally,
it just makes the code a little less confusing and
is also needed to implement more dynamic bandwidth
changes if ever desired.

Signed-hostap: Johannes Berg <johannes.berg@intel.com>

11 years agodbus: Add missing signal description for WPS (7)
Peter Wu [Sat, 9 Feb 2013 10:13:54 +0000 (12:13 +0200)]
dbus: Add missing signal description for WPS (7)

Commit caff399250311abfea3376b38530a88bb78b957d added a property named
"WPS" to the dbus interface. It did not add the new
WPAS_DBUS_BSS_PROP_WPS property to the function responsible for marking
changed properties though. This cause the following messages to be
printed repeatedly to syslog:

    dbus: wpas_dbus_bss_signal_prop_changed: Unknown Property value 7

Signed-hostap: Peter Wu <lekensteyn@gmail.com>

11 years agoEAP peer: Add Session-Id derivation to more EAP methods
Jouni Malinen [Fri, 8 Feb 2013 22:53:54 +0000 (00:53 +0200)]
EAP peer: Add Session-Id derivation to more EAP methods

This commit adds Session-Id derivation for EAP-SIM, EAP-AKA, EAP-AKA',
EAP-PSK, and EAP-SAK peer methods.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoEAP peer: Add Session-Id derivation
Stevent Li [Wed, 6 Feb 2013 16:52:33 +0000 (18:52 +0200)]
EAP peer: Add Session-Id derivation

This adds a new getSessionId() callback for EAP peer methods to allow
EAP Session-Id to be derived. This commits implements this for EAP-FAST,
EAP-GPSK, EAP-IKEv2, EAP-PEAP, EAP-TLS, and EAP-TTLS.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoEAP-IKEV2 server: Fix invalid memory freeing operation
Jouni Malinen [Fri, 8 Feb 2013 22:44:13 +0000 (00:44 +0200)]
EAP-IKEV2 server: Fix invalid memory freeing operation

wpabuf needs to be freed with wpabuf_free(), not os_free().

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoeap_proxy: Add a dummy implementation for compilation testing
Jouni Malinen [Wed, 6 Feb 2013 23:17:43 +0000 (01:17 +0200)]
eap_proxy: Add a dummy implementation for compilation testing

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoAndroid: Enable EAP-AKA support in the build
Deepthi Gowri [Wed, 6 Feb 2013 23:07:14 +0000 (01:07 +0200)]
Android: Enable EAP-AKA support in the build

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoeap_proxy: Add mechanism for allowing EAP methods to be offloaded
Deepthi Gowri [Wed, 6 Feb 2013 22:55:06 +0000 (00:55 +0200)]
eap_proxy: Add mechanism for allowing EAP methods to be offloaded

In addition to the offload mechanism, the Android configuration and
makefiles are extended to allow this to be configured for the build by
dropping in platform specific configuration files and makefile without
having to modify any existing files.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoAndroid: Allow setgroups to be overridden from build configuration
Deepthi Gowri [Wed, 6 Feb 2013 22:36:16 +0000 (00:36 +0200)]
Android: Allow setgroups to be overridden from build configuration

ANDROID_SETGROUPS_OVERRIDE macro can now be used to override setgroups()
values based on build configuration.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoP2P: Send p2p_stop_find event on failure to start pending p2p_find
Deepthi Gowri [Fri, 8 Feb 2013 09:37:07 +0000 (11:37 +0200)]
P2P: Send p2p_stop_find event on failure to start pending p2p_find

When pending p2p_find fails we need to send p2p_stop_find event to
indicate the previous p2p_find command has been processed.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoP2P: Fix GO Probe Response IEs when Wi-Fi Display is enabled
Jouni Malinen [Thu, 7 Feb 2013 22:10:39 +0000 (00:10 +0200)]
P2P: Fix GO Probe Response IEs when Wi-Fi Display is enabled

Commit 1a9f6509b3a711071c12006ff7c3a9cb2a6691f2 added support for
fragmenting the P2P IE in Probe Response frames from a GO. However, it
did not take into account the possibility of Wi-Fi Display IE being
included in the same buffer and caused a regression for the cases where
Wi-Fi Display is enabled. Fix this by building the possibly fragmented
P2P IE first and then concatenating the separate IEs together.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoAdd 'SCAN TYPE=ONLY' functionality
Dmitry Shmidt [Thu, 7 Feb 2013 16:06:51 +0000 (18:06 +0200)]
Add 'SCAN TYPE=ONLY' functionality

Usual manual scan request may cause reassociation due to several
reasons. New command is intended to perform pure scan without taking any
automatic action based on the results.

Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
11 years agoCapability matching for 60 GHz band
Vladimir Kondratiev [Thu, 7 Feb 2013 14:20:18 +0000 (16:20 +0200)]
Capability matching for 60 GHz band

On the DMG (60 GHz) band, capability bits defined differently from
non-DMG ones. Adjust capability matching to cover both cases.

Also, for non-DMG bands, check ESS bit is set.

Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
11 years agonl80211: Add ctrl_iface message for AP mode connection rejection
Raja Mani [Thu, 7 Feb 2013 13:24:53 +0000 (15:24 +0200)]
nl80211: Add ctrl_iface message for AP mode connection rejection

When AP mode operation reject the client, nl80211 layer advertises the
connect failed event with the reason for failures (for example, max
client reached, etc.) using NL80211_CMD_CONN_FAILED.

This patch adds some debug messages whenever such an event is received
from the nl80211 layer and also the same event is posted to the upper
layer via wpa_msg().

Signed-off-by: Raja Mani <rmani@qca.qualcomm.com>
11 years agoP2P: Allow local configuration to use 5 GHz band 40 MHz channels
Jouni Malinen [Thu, 7 Feb 2013 10:51:17 +0000 (12:51 +0200)]
P2P: Allow local configuration to use 5 GHz band 40 MHz channels

These channels were already enabled for P2P use, but the local
configuration parameter was not allowed to use the operating class in
which the 40 MHz channels are specified.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoFix BSS RANGE command for no exact id match cases
Amar Singhal [Thu, 7 Feb 2013 10:27:52 +0000 (12:27 +0200)]
Fix BSS RANGE command for no exact id match cases

The RANGE=N1-N2 command did not return any entries in some cases where
N1 does not match with any BSS entry. Fix this by allow entries to be
fetched even without knowing the exact id values.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoAdd "BSS LAST ..." command
Amar Singhal [Tue, 5 Feb 2013 22:31:34 +0000 (00:31 +0200)]
Add "BSS LAST ..." command

Add the "BSS LAST ..." command. This command helps in fetching the scan
entries iteratively from FIRST entry to LAST entry by ID.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoFix the "BSS FIRST.." command
Amar Singhal [Tue, 5 Feb 2013 22:28:48 +0000 (00:28 +0200)]
Fix the "BSS FIRST.." command

The "BSS FIRST.." command fails when additional parameters (e.g., MASK)
is used since the string comparsion does not take into account the
number of characters. Fix by comparing only 5 characters as in other
commands.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoHS 2.0: Fix IE buffer length for extra scan IEs
Jouni Malinen [Tue, 5 Feb 2013 15:40:09 +0000 (17:40 +0200)]
HS 2.0: Fix IE buffer length for extra scan IEs

The HS 2.0 Indication element is 7 (not 6) octets. The previous
implementation could result in wpabuf validation code stopping the
program if HS 2.0 was enabled without Interworking or P2P (which would
have created a large enough buffer to avoid hitting this) being enable.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoTDLS: Fix MIC calculation for teardown frame to depend on reason code
Sunil Dutt [Tue, 5 Feb 2013 11:36:36 +0000 (13:36 +0200)]
TDLS: Fix MIC calculation for teardown frame to depend on reason code

The reason code used for calculating the MIC should correspond to the
reason code with which the teardown frame is sent, as the receiver shall
use the one obtained in the frame for validating the MIC.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoTDLS: Remove link, if any, on an implicit set up request
Sunil Dutt [Tue, 5 Feb 2013 11:27:56 +0000 (13:27 +0200)]
TDLS: Remove link, if any, on an implicit set up request

If an implicit TDLS set up request is obtained on an existing link or an
to be established link, the previous link was not removed. This commit
disables the existing link on a new set up request. Also,
wpa_tdls_reneg() function was invoking wpa_tdls_start() on an already
existing peer for the case of internal setup, which is incorrect. Thus
the invocation of wpa_tdls_start() is removed in wpa_tdls_reneg() and
also this function is renamed to wps_tdls_remove() as it does not
renegotiation rather shall remove the link (if any) for the case of
external setup.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoTDLS: Move existing-entry check into wpa_tdls_add_peer()
Jouni Malinen [Tue, 5 Feb 2013 11:16:35 +0000 (13:16 +0200)]
TDLS: Move existing-entry check into wpa_tdls_add_peer()

There is no need to have this check copied to each caller since this
needs to be done for every case when a new peer is being added.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoTDLS: Use existing peer entry if available when processing discovery
Sunil Dutt [Tue, 5 Feb 2013 11:10:34 +0000 (13:10 +0200)]
TDLS: Use existing peer entry if available when processing discovery

Peer entries were getting added on every discover request from the peer,
thus resulting in multiple entries with the same MAC address. Ensures
that a check is done for the presence of the peer entry and reuse the
existing entry instead of adding a new one.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoP2P: Fix P2P-GROUP-STARTED event for p2p_connect-join
Jouni Malinen [Mon, 4 Feb 2013 13:52:53 +0000 (15:52 +0200)]
P2P: Fix P2P-GROUP-STARTED event for p2p_connect-join

Commit 50178335bff450829729c91c8af798a1d3a7b408 introduced a regression
for P2P-GROUP-STARTED event indication during p2p_connect-join when
using a separate P2P group interface. wpa_s->global->p2p_group_formation
was already set in that case to point to the group interface and this
commit changed this to point to incorrect interface. Fix this by setting
p2p_group_formation here only in case a separate group interface is not
used.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agoP2P: Fix Action frame processing if Interworking is enabled
Jouni Malinen [Mon, 4 Feb 2013 13:38:35 +0000 (15:38 +0200)]
P2P: Fix Action frame processing if Interworking is enabled

GAS server used the same public_action_cb mechanism as P2P to process
Action frames. This ended up overriding P2P processing of Action frames
while running an AP/GO interface with a build that enables Interworking
(e.g., for Hotspot 2.0) and a driver that uses hostapd for AP mode
SME/MLME. Fix this by adding a separate callback registration for the
GAS server. This should really be cleaned up by supporting arbitrary
number of callback handlers, but for now, this addresses the regression
with a minimal change.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

11 years agowpa_supplicant: Fix access to the freed memory when removing all networks
Jaewan Kim [Sun, 3 Feb 2013 19:22:59 +0000 (21:22 +0200)]
wpa_supplicant: Fix access to the freed memory when removing all networks

Commit 59ff6653aad1c228cb2e9ccfe02b9dd4e6fc7901 fixed this issue for
'removing a network', and we also need to take care of 'removing all
networks'.

Signed-hostap: Jaewan Kim <jaewan at google.com>

11 years agoAdd driver for OpenBSD net80211 layer
Mark Kettenis [Sun, 3 Feb 2013 19:16:29 +0000 (21:16 +0200)]
Add driver for OpenBSD net80211 layer

Very basic support for OpenBSD.  No support for scanning yet, so this needs
ap_scan=0 and expects that the user has configured the interface manually
using ifconfig(8).

Signed-hostap: Mark Kettenis <kettenis@openbsd.org>

11 years agoMake wpas_select_network_from_last_scan() static
Jouni Malinen [Sun, 3 Feb 2013 19:13:07 +0000 (21:13 +0200)]
Make wpas_select_network_from_last_scan() static

Addition of wpa_supplicant_fast_associate() made it unnecessary to call
wpas_select_network_from_last_scan() directly from other files.

Signed-hostap: Jouni Malinen <j@w1.fi>

11 years agowpa_supplicant: Implement fast-associate on SelectNetwork
Paul Stewart [Sun, 3 Feb 2013 19:08:31 +0000 (21:08 +0200)]
wpa_supplicant: Implement fast-associate on SelectNetwork

If scan results are available when we perform a SelectNetwork, use
them to make an associate decision.  This can save an entire scan
interval-worth of time in situations where something external to
wpa_supplicant (like a connection manager) has just previously
requested a scan before calling SelectNetwork.

Signed-hostap: Paul Stewart <pstew@chromium.org>

11 years agoUpdate scan interval gracefully
Pontus Fuchs [Sun, 3 Feb 2013 16:14:05 +0000 (18:14 +0200)]
Update scan interval gracefully

When the scan interval is changed the new interval is effective
after the old interval timer fires off one last time. This can cause
an unacceptable long delay when updating the interval.

Change this behaviour to use MIN(left of old interval, new interval)
for the scan interval following the interval change.

Signed-hostap: Pontus Fuchs <pontus.fuchs@gmail.com>

11 years agoeloop: Add a timer cancel that returns the remaining time
Pontus Fuchs [Sun, 3 Feb 2013 15:17:08 +0000 (17:17 +0200)]
eloop: Add a timer cancel that returns the remaining time

This new cancel timer will give back the remaining time if it was
pending.

Signed-hostap: Pontus Fuchs <pontus.fuchs@gmail.com>

11 years agoeloop_win: Update to be closer to the current eloop.c
Jouni Malinen [Sun, 3 Feb 2013 15:13:37 +0000 (17:13 +0200)]
eloop_win: Update to be closer to the current eloop.c

Some fixes had were made only in eloop.c.

Signed-hostap: Jouni Malinen <j@w1.fi>

11 years agoeloop_win: Use struct dl_list for timeouts
Jouni Malinen [Sun, 3 Feb 2013 15:09:00 +0000 (17:09 +0200)]
eloop_win: Use struct dl_list for timeouts

This merges commit eaa3f04b97f7bf3ffb91fe0acb2bb6bcb8f566fe changes from
eloop.c into eloop_win.c.

Signed-hostap: Jouni Malinen <j@w1.fi>

11 years agoeloop_none: Update sample to be closer to the current eloop.c
Jouni Malinen [Sun, 3 Feb 2013 14:50:45 +0000 (16:50 +0200)]
eloop_none: Update sample to be closer to the current eloop.c

Signed-hostap: Jouni Malinen <j@w1.fi>

11 years agoeloop_none: Use struct dl_list for timeouts
Jouni Malinen [Sun, 3 Feb 2013 14:45:05 +0000 (16:45 +0200)]
eloop_none: Use struct dl_list for timeouts

This merges commit eaa3f04b97f7bf3ffb91fe0acb2bb6bcb8f566fe changes from
eloop.c into eloop_none.c.

Signed-hostap: Jouni Malinen <j@w1.fi>

11 years agoeloop_none: Fix compilation
Jouni Malinen [Sun, 3 Feb 2013 14:25:09 +0000 (16:25 +0200)]
eloop_none: Fix compilation

eloop.h API had been changed without updating eloop_none.c to match.

Signed-hostap: Jouni Malinen <j@w1.fi>

11 years agoFix compilation with PMKSA caching support disabled
Jouni Malinen [Sun, 3 Feb 2013 14:23:13 +0000 (16:23 +0200)]
Fix compilation with PMKSA caching support disabled

Commit 6aaac006af7fd39d618c6546939bed9f0f0cea37 modified the
pmksa_cache_init() prototype, but forgot to update the empty wrapper
function which is used when PMKSA caching is not included in the build.

Signed-hostap: Jouni Malinen <j@w1.fi>

11 years agonl80211: Do not use void pointer for driver_ops used internally
Jouni Malinen [Sun, 3 Feb 2013 13:46:47 +0000 (15:46 +0200)]
nl80211: Do not use void pointer for driver_ops used internally

This allows some more pointer type validation at compile time.

Signed-hostap: Jouni Malinen <j@w1.fi>

11 years agohostapd: Fix crash when scan fails
Ben Greear [Sun, 3 Feb 2013 11:51:54 +0000 (13:51 +0200)]
hostapd: Fix crash when scan fails

When scan failed, the wpa_driver_nl80211_scan method tried
to recursively call itself, but it passed in the wrong argument
for the void*, and so then it crashed accessing bad memory.

With this fix, hostapd still will not retry the scan later, but
at least it will exit cleanly and won't polute the file system
with core files.

Signed-off-by: Ben Greear <greearb@candelatech.com>
11 years agoTDLS: Disable the link also on driver request for teardown
Sunil Dutt [Tue, 22 Jan 2013 12:09:54 +0000 (14:09 +0200)]
TDLS: Disable the link also on driver request for teardown

The link was not disabled for the case of implicit trigger from the
driver unlike in the case of explicit trigger fromc ctrl_iface. Make the
tear down sequences match in these cases by adding the TDLS_DISABLE_LINK
tdls_oper to the driver when processing the TDLS_REQUEST_TEARDOWN event.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>