]> git.ipfire.org Git - thirdparty/hostap.git/log
thirdparty/hostap.git
8 years agoFix wpa_supplicant build error with IEEE8021X_EAPOL unset
Felix Fietkau [Wed, 14 Dec 2016 11:33:33 +0000 (12:33 +0100)] 
Fix wpa_supplicant build error with IEEE8021X_EAPOL unset

Add missing inline stubs for newly added functions.

Fixes: 3459381dd260 ("External persistent storage for PMKSA cache entries")
Signed-off-by: Felix Fietkau <nbd@nbd.name>
8 years agotests: Make p2p_ext_vendor_elem_go_neg_conf more robust
Jouni Malinen [Wed, 14 Dec 2016 14:32:05 +0000 (16:32 +0200)] 
tests: Make p2p_ext_vendor_elem_go_neg_conf more robust

Use P2P listen mode on dev[1] to speed up GO Negotiation and explicitly
wait for successfully completed GO Negotiation to make the failure cases
clearer. Previously, it was possible for the GO Negotiation to fail and
execution to go to the tshark check even when no GO Negotiation Confirm
frame was sent.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agotests: Do not attach wpa_supplicant monitor interface unnecessarily
Jouni Malinen [Wed, 14 Dec 2016 11:56:15 +0000 (13:56 +0200)] 
tests: Do not attach wpa_supplicant monitor interface unnecessarily

There is no need to attach the monitor interface was events when issuing
only a single INTERFACES command.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agotests: Use longer timeout in p2p_go_neg_auth_result()
Jouni Malinen [Wed, 14 Dec 2016 10:45:37 +0000 (12:45 +0200)] 
tests: Use longer timeout in p2p_go_neg_auth_result()

It is possible for the P2P-GROUP-STARTED event to get delayed more than
one second especially when the GO Negotiation responder becomes the P2P
Client and the system is heavily loaded. Increase the default timeout
for the expected success case from 1 to 5 seconds to avoid failing test
cases that would have succeeded if given a bit more time to complete the
exchange.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agotests: Properly skip pmksa_cache_ctrl_ext if PMKSA_GET is not supported
Jouni Malinen [Tue, 13 Dec 2016 18:13:42 +0000 (20:13 +0200)] 
tests: Properly skip pmksa_cache_ctrl_ext if PMKSA_GET is not supported

Mark the test as skipped instead of failed if wpa_supplicant is built
without PMKSA_GET support.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agotests: Make dbus_p2p_go_neg_init more robust
Jouni Malinen [Tue, 13 Dec 2016 17:39:34 +0000 (19:39 +0200)] 
tests: Make dbus_p2p_go_neg_init more robust

It was apparently possible to get a propertiesChanged event from an
earlier test case with an empty Groups property. That ended up this case
exiting immediately before running through the steps and consequently,
failing due to missed operations. Make this less likely to happen by
accepting the Groups property emptying event only after a group has been
added for a peer first.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agotests: Fix scan_reqs_with_non_scan_radio_work error reporting
Jouni Malinen [Tue, 13 Dec 2016 14:48:53 +0000 (16:48 +0200)] 
tests: Fix scan_reqs_with_non_scan_radio_work error reporting

Raise an exception instead of printing out to stdout if scan fails to
complete.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agotests: Scan and both Beacon and Probe Response frame IEs
Jouni Malinen [Tue, 13 Dec 2016 14:45:51 +0000 (16:45 +0200)] 
tests: Scan and both Beacon and Probe Response frame IEs

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agoMake Beacon IEs available in wpa_supplicant BSS command
Jouni Malinen [Tue, 13 Dec 2016 13:49:22 +0000 (15:49 +0200)] 
Make Beacon IEs available in wpa_supplicant BSS command

This makes both the Probe Response and Beacon frame IEs available to
upper layers if scan results include both IE sets. When the BSS command
mask includes WPA_BSS_MASK_BEACON_IE, a new beacon_ie=<hexdump> entry
will be included in output if the BSS entry has two separate sets of IEs
(ie=<hexdump> showing the Probe Response frame contents and
beacon_ie=<hexdump> the Beacon rame contents).

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agotests: Make ap_track_sta_no_probe_resp more robust
Jouni Malinen [Tue, 13 Dec 2016 13:47:50 +0000 (15:47 +0200)] 
tests: Make ap_track_sta_no_probe_resp more robust

Check whether the unexpected BSS entry is based on having received a
Beacon frame instead of Probe Response frame. While this test case is
using a huge beacon_int value, it is still possible for mac80211_hwsim
timing to work in a way that a Beacon frame is sent. That made this test
case fail in some rare cases. Fix this by ignoring the BSS entry if it
is based on Beacon frame instead of Probe Response frame.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agotests: Mesh network on 5 GHz band and 20/40 coex change
Jouni Malinen [Tue, 13 Dec 2016 13:28:41 +0000 (15:28 +0200)] 
tests: Mesh network on 5 GHz band and 20/40 coex change

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agomesh: Fix channel configuration in pri/sec switch case
Jouni Malinen [Tue, 13 Dec 2016 13:25:52 +0000 (15:25 +0200)] 
mesh: Fix channel configuration in pri/sec switch case

If 20/40 MHz co-ex scan resulted in switching primary and secondary
channels, mesh setup failed to update the frequency parameters for
hostapd side configuration and that could result in invalid secondary
channel configuration preventing creating of the mesh network. This
could happen, e.g., when trying to set up mesh on 5 GHz channel 36 and
co-ex scan finding a BSS on channel 40. Switching the pri/sec channels
resulted in hostapd code trying to check whether channel 32 is
available. Fix this by swapping the channels for hostapd configuration
when needed.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agoMake debug print clearer for AP/mesh mode secondary channel issues
Jouni Malinen [Tue, 13 Dec 2016 13:09:15 +0000 (15:09 +0200)] 
Make debug print clearer for AP/mesh mode secondary channel issues

If the secondary channel was not found at all, no debug print was shown
to indicate that the channel was rejected due to that problem. Print a
clearer message indicating which channel was behind the reason to reject
channel configuration as unsuitable for AP mode.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agotests: Remove pmk_r1_push parameter from ap_ft_local_key_gen
Jouni Malinen [Tue, 13 Dec 2016 11:57:39 +0000 (13:57 +0200)] 
tests: Remove pmk_r1_push parameter from ap_ft_local_key_gen

Local key generation for FT-PSK does not use the AP-to-AP protocol and
as such, setting pmk_r1_push=1 is a bit confusing here since it gets
ignored in practice. Remove it to keep the test case easier to
understand.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agotests: Clear scan cache at the end of ap_wps_per_station_psk_failure
Jouni Malinen [Tue, 13 Dec 2016 11:03:52 +0000 (13:03 +0200)] 
tests: Clear scan cache at the end of ap_wps_per_station_psk_failure

It was possible for ap_wps_per_station_psk_failure to leave behind scan
entries with active PBC mode if cfg80211 BSS table. This could result in
a following test case failing due PBC overlap. Fix this by clearing the
cfg80211 BSS table explicitly.

This was found with the following test case sequence:
ap_wps_per_station_psk_failure autogo_pbc

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agotests: PMKSA cache control interface for external management
Jouni Malinen [Mon, 12 Dec 2016 21:56:57 +0000 (23:56 +0200)] 
tests: PMKSA cache control interface for external management

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agoExternal persistent storage for PMKSA cache entries
Jouni Malinen [Mon, 12 Dec 2016 21:47:04 +0000 (23:47 +0200)] 
External persistent storage for PMKSA cache entries

This adds new wpa_supplicant control interface commands PMKSA_GET and
PMKSA_ADD that can be used to store PMKSA cache entries in an external
persistent storage when terminating a wpa_supplicant process and then
restore those entries when starting a new process. The previously added
PMKSA-CACHE-ADDED/REMOVED events can be used to help in synchronizing
the external storage with the memory-only volatile storage within
wpa_supplicant.

"PMKSA_GET <network_id>" fetches all stored PMKSA cache entries bound to
a specific network profile. The network_id of the current profile is
available with the STATUS command (id=<network_id). In addition, the
network_id is included in the PMKSA-CACHE-ADDED/REMOVED events. The
output of the PMKSA_GET command uses the following format:

<BSSID> <PMKID> <PMK> <reauth_time in seconds> <expiration in seconds>
<akmp> <opportunistic>

For example:

02:00:00:00:03:00 113b8b5dc8eda16594e8274df4caa3d4 355e98681d09e0b69d3a342f96998aa765d10c4459ac592459b5efc6b563eff6 30240 43200 1 0
02:00:00:00:04:00 bbdac8607aaaac28e16aacc9152ffe23 e3dd6adc390e685985e5f40e6fe72df846a0acadc59ba15c208d9cb41732a663 30240 43200 1 0

The PMKSA_GET command uses the following format:

<network_id> <BSSID> <PMKID> <PMK> <reauth_time in seconds> <expiration
in seconds> <akmp> <opportunistic>

(i.e., "PMKSA_ADD <network_id> " prefix followed by a line of PMKSA_GET
output data; however, the reauth_time and expiration values need to be
updated by decrementing them by number of seconds between the PMKSA_GET
and PMKSA_ADD commands)

For example:

PMKSA_ADD 0 02:00:00:00:03:00 113b8b5dc8eda16594e8274df4caa3d4 355e98681d09e0b69d3a342f96998aa765d10c4459ac592459b5efc6b563eff6 30140 43100 1 0
PMKSA_ADD 0 02:00:00:00:04:00 bbdac8607aaaac28e16aacc9152ffe23 e3dd6adc390e685985e5f40e6fe72df846a0acadc59ba15c208d9cb41732a663 30140 43100 1 0

This functionality is disabled be default and can be enabled with
CONFIG_PMKSA_CACHE_EXTERNAL=y build configuration option. It should be
noted that this allows any process that has access to the wpa_supplicant
control interface to use PMKSA_ADD command to fetch keying material
(PMK), so this is for environments in which the control interface access
is restricted.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agotests: PMKSA cache control interface events
Jouni Malinen [Mon, 12 Dec 2016 19:02:49 +0000 (21:02 +0200)] 
tests: PMKSA cache control interface events

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agoAdd PMKSA-CACHE-ADDED/REMOVED events to wpa_supplicant
Jouni Malinen [Mon, 12 Dec 2016 18:59:41 +0000 (20:59 +0200)] 
Add PMKSA-CACHE-ADDED/REMOVED events to wpa_supplicant

These allow external program to monitor PMKSA cache updates in
preparation to enable external persistent storage of PMKSA cache.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agoSend "TERMINATING" event from hostapd
Daisuke Niwa [Mon, 12 Dec 2016 13:13:51 +0000 (22:13 +0900)] 
Send "TERMINATING" event from hostapd

hostapd didn't send "TERMINATING" event when stopped by
SIGTERM. Android handles this event to stop monitor thread.

This commit adds "TERMINATING" event same as with wpa_supplicant.

Signed-off-by: Tomoharu Hatano <tomoharu.hatano@sonymobile.com>
8 years agoP2P: Set p2p_persistent_group=1 at the time of reading disabled=2
Avichal Agarwal [Mon, 12 Dec 2016 11:38:48 +0000 (17:08 +0530)] 
P2P: Set p2p_persistent_group=1 at the time of reading disabled=2

Configuration file network block with disabled=2 is used for storing
information about a persistent group, so p2p_persitent_group should be
updated according to this when creating a struct wpa_ssid instance. This
will end up using D-Bus persistent network object path for the network.

Signed-off-by: Avichal Agarwal <avichal.a@samsung.com>
Signed-off-by: Kyeong-Chae Lim <kcya.lim@samsung.com>
8 years agotests: Fix wpas_ap_acs after 5 GHz use
Jouni Malinen [Sun, 11 Dec 2016 22:58:00 +0000 (00:58 +0200)] 
tests: Fix wpas_ap_acs after 5 GHz use

Work around the mac80211_hwsim limitation on channel survey by forcing
the last connection to be on 2.4 GHz band. Without this, wpas_ap_acs
would have failed to start the AP if the previous test case used the 5
GHz band.

Signed-off-by: Jouni Malinen <j@w1.fi>
8 years agoRemove MBO dependency from Supported Operating Classes element
vamsi krishna [Fri, 2 Dec 2016 08:54:39 +0000 (14:24 +0530)] 
Remove MBO dependency from Supported Operating Classes element

Supported Operating Classes element and its use is define in the IEEE
802.11 standard and can be sent even when MBO is disabled in the build.
As such, move this functionality out from the CONFIG_MBO=y only mbo.c.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agonl80211: Specify the BSSID in the QCA vendor scan
Sunil Dutt [Mon, 5 Dec 2016 11:22:20 +0000 (16:52 +0530)] 
nl80211: Specify the BSSID in the QCA vendor scan

This allows the vendor scan to be optimized when a response is needed
only from a single, known BSS.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agoDefine an attribute to do a specific BSSID QCA vendor scan
Sunil Dutt [Mon, 5 Dec 2016 11:21:20 +0000 (16:51 +0530)] 
Define an attribute to do a specific BSSID QCA vendor scan

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agoAdd QCA vendor command definitions for IDs 61-73
Sunil Dutt [Thu, 8 Dec 2016 13:28:42 +0000 (18:58 +0530)] 
Add QCA vendor command definitions for IDs 61-73

This commit documents the QCA vendor commands 61-73 and the
corresponding definitions of the attributes. This set of commands were
previously reserved for QCA without documentation here.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agoDefine QCA Beacon miss threshold attributes for 2.4 and 5 GHz bands
Sunil Dutt [Fri, 9 Dec 2016 12:08:26 +0000 (17:38 +0530)] 
Define QCA Beacon miss threshold attributes for 2.4 and 5 GHz bands

These thresholds values indicate how many Beacon frames can be missed
before before disconnecting from the AP.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agoFix QCA vendor command values for SAR power limits
Jouni Malinen [Sun, 11 Dec 2016 19:08:25 +0000 (21:08 +0200)] 
Fix QCA vendor command values for SAR power limits

Commit c79238b6a460ab6bc6ebc5e2453fd94716393105 ('Define a QCA vendor
command to configure SAR Power limits') had a mismatch between the enum
qca_vendor_attr_sar_limits_selections documentations and actual values.
The BDF SAR profiles are 0-based, so rename the enum values and reorder
the values keep the actual values more convenient. While this changes
values over the interface, this is justifiable since the new command was
introduced only recently and it had not been released in any driver.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agotests: Increase timeout in wpas_mesh_password_mismatch
Jouni Malinen [Sun, 11 Dec 2016 18:08:39 +0000 (20:08 +0200)] 
tests: Increase timeout in wpas_mesh_password_mismatch

There has been number of failures from this test case due to the
MESH-SAE-AUTH-FAILURE event from dev[0] and dev[1] arriving couple of
seconds after the one second timeout after the dev[2] events. This does
not look like a real issue, so increase the timeout to five seconds to
make this less likely to show false failures during testing.

Signed-off-by: Jouni Malinen <j@w1.fi>
8 years agotests: Verify wpa_state after INTERWORKING_SELECT
Jouni Malinen [Sun, 11 Dec 2016 17:51:09 +0000 (19:51 +0200)] 
tests: Verify wpa_state after INTERWORKING_SELECT

Signed-off-by: Jouni Malinen <j@w1.fi>
8 years agotests: Make scan_trigger_failure more informative
Jouni Malinen [Sun, 11 Dec 2016 16:41:04 +0000 (18:41 +0200)] 
tests: Make scan_trigger_failure more informative

If wpa_state is left to SCANNING by a previously executed test case,
scan_trigger_failure will fail. Instead of waiting for that failure,
check for wpa_state at the beginning of the test case and report a more
helpful error message if the test case would fail due to a previously
executed test case.

Signed-off-by: Jouni Malinen <j@w1.fi>
8 years agoInterworking: Clear SCANNING state if no network selected
Jouni Malinen [Sun, 11 Dec 2016 16:39:12 +0000 (18:39 +0200)] 
Interworking: Clear SCANNING state if no network selected

Commit 192ad3d7307473f14c049c1ea724e292a3f8ae24 ('Interworking: Clear
SCANNING state if no match found') did this for the case where no
network matched credentials, but left the SCANNING state in place if
there were a match, but automatic connection was not enabled. Extend
this to cover the case where INTERWORKING_SELECT is not followed by a
connection attempt so that wpa_state is not left indefinitely to
SCANNING.

This fixes a hwsim test case failure in the following sequence:
ap_anqp_sharing scan_trigger_failure

Signed-off-by: Jouni Malinen <j@w1.fi>
8 years agoSME: Fix IBSS setup after shared key/FT/FILS association
Jouni Malinen [Sun, 11 Dec 2016 16:23:13 +0000 (18:23 +0200)] 
SME: Fix IBSS setup after shared key/FT/FILS association

wpa_s->sme.auth_alg could have been left to a previously value other
than WPA_AUTH_ALG_OPEN if IBSS network is used after an association that
used shared key, FT, or FILS authentication algorithm. This could result
in the IBSS setup failing due to incorrect authentication processing
steps.

Fix this by setting wpa_s->sme.auth_alg = WPA_AUTH_ALG_OPEN whenever
starting an IBSS (or mesh, for that matter) network.

Signed-off-by: Jouni Malinen <j@w1.fi>
8 years agoP2P: Fix a theoretical out of bounds read in wpas_p2p_select_go_freq()
Amit Purwar [Fri, 9 Dec 2016 13:29:16 +0000 (18:59 +0530)] 
P2P: Fix a theoretical out of bounds read in wpas_p2p_select_go_freq()

Commit 8e84921efe652233703588852bc43c36ccb241df ('P2P: Support driver
preferred freq list for Autonomous GO case') introduced this loop to go
through preferred channel list from the driver. The loop does bounds
checking of the index only after having read a value from the array.
That could in theory read one entry beyond the end of the stack buffer.

Fix this by moving the index variable check to be done before using it
to fetch a value from the array.

This code is used only if wpa_supplicant is build with
CONFIG_DRIVER_NL80211_QCA=y and if the driver supports the vendor
extension (get_pref_freq_list() driver op). In addition, the driver
would need to return more than P2P_MAX_PREF_CHANNELS (= 100) preferred
channels for this to actually be able to read beyond the buffer. No
driver is known to return that many preferred channels, so this does not
seem to be reachable in practice.

Signed-off-by: Amit Purwar <amit.purwar@samsung.com>
Signed-off-by: Mayank Haarit <mayank.h@samsung.com>
8 years agoP2P: Fix a theoretical out of bounds read in wpas_p2p_setup_freqs()
Amit Purwar [Fri, 9 Dec 2016 13:25:59 +0000 (18:55 +0530)] 
P2P: Fix a theoretical out of bounds read in wpas_p2p_setup_freqs()

Commit 370017d968e071522357ea88c0c6aaed02853222 ('P2P: Use preferred
frequency list from the local driver') introduced this loop to go
through preferred channel list from the driver. The loop does bounds
checking of the index only after having read a value from the array.
That could in theory read one entry beyond the end of the stack buffer.

Fix this by moving the index variable check to be done before using it
to fetch a value from the array.

This code is used only if wpa_supplicant is build with
CONFIG_DRIVER_NL80211_QCA=y and if the driver supports the vendor
extension (get_pref_freq_list() driver op). In addition, the driver
would need to return more than P2P_MAX_PREF_CHANNELS (= 100) preferred
channels for this to actually be able to read beyond the buffer. No
driver is known to return that many preferred channels, so this does not
seem to be reachable in practice.

Signed-off-by: Amit Purwar <amit.purwar@samsung.com>
Signed-off-by: Mayank Haarit <mayank.h@samsung.com>
8 years agotests: Add kernel BSS leak tests
Johannes Berg [Thu, 8 Dec 2016 16:29:43 +0000 (17:29 +0100)] 
tests: Add kernel BSS leak tests

Add two tests that check if the kernel BSS leak (when we get a deauth or
otherwise abandon an association attempt) is present in the kernel. This
is for a long-standing cfg80211/mac80211 issue that got fixed with the
kernel commit 'cfg80211/mac80211: fix BSS leaks when abandoning assoc
attempts'.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8 years agotests: P2P device discovery and peer changing device name
Jouni Malinen [Sat, 10 Dec 2016 20:35:49 +0000 (22:35 +0200)] 
tests: P2P device discovery and peer changing device name

Signed-off-by: Jouni Malinen <j@w1.fi>
8 years agoP2P: Send P2P-DEVICE-FOUND event on peer changing device name
Mayank Haarit [Wed, 7 Dec 2016 16:46:04 +0000 (22:16 +0530)] 
P2P: Send P2P-DEVICE-FOUND event on peer changing device name

This is to handle the case when peer changes device name and same needs
to be updated to upper layers by P2P-DEVICE-FOUND event. It is similar
to the case when a peer changes wfd_subelems and P2P-DEVICE-FOUND event
goes to upper layers.

Signed-off-by: Mayank Haarit <mayank.h@samsung.com>
Signed-off-by: Avichal Agarwal <avichal.a@samsung.com>
8 years agotests: Peer disabling Wi-Fi Display advertisement
Jouni Malinen [Sat, 10 Dec 2016 17:30:12 +0000 (19:30 +0200)] 
tests: Peer disabling Wi-Fi Display advertisement

Signed-off-by: Jouni Malinen <j@w1.fi>
8 years agoWFD: Clear wfd_subelems when P2P peer stops sending them
Mayank Haarit [Wed, 7 Dec 2016 15:17:16 +0000 (20:47 +0530)] 
WFD: Clear wfd_subelems when P2P peer stops sending them

When a peer device stops sending wfd_subelems, wpa_supplicant should
remove dev->info.wfd_subelems from peer's properties. Previously,
wpa_supplicant left the previously learned dev->info.wfd_subelems in
place whenever the new message did not include wfd_subelems.

In addition to fixing the clearing of the old wfd_subelems, this
resolves another issue. As "wfd_changed" variable becomes true even when
peer stops sending wfd_subelems and dev->info.wfd_subelems has an old
value, a new P2P-DEVICE-FOUND event notification was sent again and
again to upper layers whenever a new discovery response was received
from the peer that previously advertised WFD subelements.

Signed-off-by: Mayank Haarit <mayank.h@samsung.com>
8 years agotests: Ongoing scan and FLUSH
Jouni Malinen [Sat, 10 Dec 2016 17:03:07 +0000 (19:03 +0200)] 
tests: Ongoing scan and FLUSH

Signed-off-by: Jouni Malinen <j@w1.fi>
8 years agoIgnore scan results from ongoing scan when FLUSH command is issued
Jouni Malinen [Sat, 10 Dec 2016 17:00:47 +0000 (19:00 +0200)] 
Ignore scan results from ongoing scan when FLUSH command is issued

This makes wpa_supplicant behavior more consistent with FLUSH command to
clear all state. Previously, it was possible for an ongoing scan to be
aborted when the FLUSH command is issued and the scan results from that
aborted scan would still be processed and that would update the BSS
table which was supposed to cleared by the FLUSH command.

This could result in hwsim test case failures due to unexpected BSS
table entries being present after the FLUSH command.

Signed-off-by: Jouni Malinen <j@w1.fi>
8 years agotests: Scan and only_new=1 multiple times
Jouni Malinen [Sat, 10 Dec 2016 15:04:08 +0000 (17:04 +0200)] 
tests: Scan and only_new=1 multiple times

Signed-off-by: Jouni Malinen <j@w1.fi>
8 years agoMake update_idx available in BSS control interface command
Jouni Malinen [Sat, 10 Dec 2016 15:03:24 +0000 (17:03 +0200)] 
Make update_idx available in BSS control interface command

This can be used to perform more accurate tests on BSS entry updates.

Signed-off-by: Jouni Malinen <j@w1.fi>
8 years agotests: Make p2ps_wildcard_p2ps more robust
Jouni Malinen [Fri, 9 Dec 2016 22:33:33 +0000 (00:33 +0200)] 
tests: Make p2ps_wildcard_p2ps more robust

The final check in this test case was issuing a new P2P_FIND command
immediately after the P2P_SERVICE_DEL command on the peer. It looked
like it was possible for the scan timing to go in a sequence that made
the new P2P_FIND operation eventually accept a cfg80211 BSS entry from
the very end of the previous P2P_FIND. This resulted in unexpected
P2P-DEVICE-FOUND event even though there was no new Probe Response frame
from the peer at that point in time.

Make this less likely to show unrelated failures by waiting a bit before
starting a new P2P_FIND operation after having changes peer
configuration.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agoP2P: Clear PEER_WAITING_RESPONSE on GO Negotiation success
Jouni Malinen [Fri, 9 Dec 2016 22:16:33 +0000 (00:16 +0200)] 
P2P: Clear PEER_WAITING_RESPONSE on GO Negotiation success

Previously, this flag was cleared only in case of failed GO Negotiation.
That could leave the flag set for a peer and if a new group formation
was performed with the same peer before the entry expired, there was
increased risk of getting stuck in a state where neither peer replied to
a GO Negotiation Request frame if a GO Negotiation Response frame with
Status 1 was dropped.

The error sequence could happen in the go_neg_with_bss_connected test
case when timing was suitable to make the second GO negotiation drop a
pending TX Action frame if the GO Negotiation Response with Status 1 was
scheduled for transmission during a P2P scan and P2P_CONNECT was issued
before that scan got aborted.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agoDefine a QCA vendor command to configure SAR Power limits
Jeff Johnson [Tue, 6 Dec 2016 00:13:36 +0000 (16:13 -0800)] 
Define a QCA vendor command to configure SAR Power limits

There is a regulatory requirement for Specific Absorption Rate (SAR)
whereby the device transmit power is reduced when it is determined that
the device is in close proximity to the body. Implement a vendor command
interface to allow a userspace entity to dynamically control the SAR
power limits.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agoUse eloop timeout for post-EAP-Failure wait before disconnection
Jouni Malinen [Tue, 6 Dec 2016 16:12:11 +0000 (18:12 +0200)] 
Use eloop timeout for post-EAP-Failure wait before disconnection

Previously, os_sleep() was used to block the hostapd (or wpa_supplicant
AP/P2P GO mode) processing between sending out EAP-Failure and
disconnecting the STA. This is not ideal for couple of reasons: it
blocks all other parallel operations in the process and it leaves a
window during which the station might deauthenticate and the AP would
have no option for reacting to that before forcing out its own
Deauthentication frame which could go out after the STA has already
started new connection attempt.

Improve this design by scheduling an eloop timeout of 10 ms instead of
the os_sleep() call and perform the delayed operations from the eloop
callback function. This eloop timeout is cancelled if the STA
disconnects or initiates a new connection attempt before the 10 ms time
is reached. This gets rid of the confusing extra Deauthentication frame
in cases where the STA reacts to EAP-Failure by an immediate
deauthentication.

Signed-off-by: Jouni Malinen <j@w1.fi>
8 years agotests: WEP to WPA2-PSK configuration change in hostapd
Jouni Malinen [Mon, 5 Dec 2016 19:30:17 +0000 (21:30 +0200)] 
tests: WEP to WPA2-PSK configuration change in hostapd

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agoAllow hostapd wep_key# parameters to be cleared
Jouni Malinen [Mon, 5 Dec 2016 19:28:50 +0000 (21:28 +0200)] 
Allow hostapd wep_key# parameters to be cleared

Setting wep_key# to an empty string will now clear a previously
configured key. This is needed to be able to change WEP configured AP to
using WPA/WPA2 through the hostapd control interface SET commands.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agotests: P2P group formation with VHT 80 MHz
Jouni Malinen [Mon, 5 Dec 2016 19:14:55 +0000 (21:14 +0200)] 
tests: P2P group formation with VHT 80 MHz

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agotests: Check data connectivity after supplicant triggered EAP reauth
Jouni Malinen [Mon, 5 Dec 2016 19:01:43 +0000 (21:01 +0200)] 
tests: Check data connectivity after supplicant triggered EAP reauth

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agowpa_passphrase: Reject invalid passphrase
Jouni Malinen [Mon, 5 Dec 2016 13:36:56 +0000 (15:36 +0200)] 
wpa_passphrase: Reject invalid passphrase

Reject a passphrase with control characters instead of trying to write
out an example network configuration block with such control characters
included.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agotests: AP with open mode and external association
Jouni Malinen [Mon, 5 Dec 2016 09:48:07 +0000 (11:48 +0200)] 
tests: AP with open mode and external association

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agonl80211: Update drv->ssid on connect/associate event based on BSS data
Ningyuan Wang [Mon, 24 Oct 2016 17:59:52 +0000 (10:59 -0700)] 
nl80211: Update drv->ssid on connect/associate event based on BSS data

On a connect nl80211 event, wpa_supplicant uses
wpa_driver_nl80211_get_ssid() to fetch the current associated SSID to
compare to existing configurations. However,
wpa_driver_nl80211_get_ssid() uses drv->ssid, which is a cached value.
It is set when we explicitly initial a connect request using
wpa_supplicant. If the association was initiated outside of
wpa_supplicant, we need another way to populate drv->ssid. This commit
sets drv->ssid based on cfg80211 BSS information on connect/associate
nl80211 events.

Signed-off-by: Ningyuan Wang <nywang@google.com>
8 years agonl80211: Fix scan_state update in no pending scan state
Jouni Malinen [Mon, 5 Dec 2016 09:43:16 +0000 (11:43 +0200)] 
nl80211: Fix scan_state update in no pending scan state

Commit adcd7c4b0bd02bead77f884f52782a813f5243bb ('nl80211: Support
vendor scan together with normal scan') made the drv->scan_state updates
for NL80211_CMD_NEW_SCAN_RESULTS and NL80211_CMD_SCAN_ABORTED
conditional on drv->last_scan_cmd being NL80211_CMD_TRIGGER_SCAN. This
missed the part about the possibility of last_scan_cmd == 0 and an
externally started cfg80211 scan is ending. This could leave
drv->scan_state into SCAN_STARTED state even after the scan was
completed. Consequently, hwsim test cases could get stuck in reset()
handler waiting for scan to terminate.

Fix this by updating drv->scan_state also in drv->last_scan_cmd == 0
case.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agotests: Verify multicast_to_unicast operation
Michael Braun [Mon, 31 Oct 2016 13:58:09 +0000 (14:58 +0100)] 
tests: Verify multicast_to_unicast operation

Signed-off-by: Michael Braun <michael-dev@fami-braun.de>
8 years agoAdd multicast to unicast support
Michael Braun [Mon, 31 Oct 2016 13:58:08 +0000 (14:58 +0100)] 
Add multicast to unicast support

This adds support for nl80211 NL80211_CMD_SET_MULTICAST_TO_UNICAST
command.

By setting the new hostapd configuration option multicast_to_unicast=1,
hostapd configures this AP to perform multicast to unicast conversion.

When enabled, all multicast packets with ethertype ARP, IPv4, or IPv6
(possibly within an 802.1Q header) will be sent out to each station once
with the destination (multicast) MAC address replaced by the station's
MAC address. Note that this may break certain expectations of the
receiver, e.g., the ability to drop unicast IP packets encapsulated in
multicast L2 frames, or the ability to not send destination unreachable
messages in such cases.

This also does not implement Directed Multicast Service (DMS).

Signed-off-by: Michael Braun <michael-dev@fami-braun.de>
8 years agoSync with mac80211-next.git include/uapi/linux/nl80211.h
Jouni Malinen [Sun, 4 Dec 2016 18:50:07 +0000 (20:50 +0200)] 
Sync with mac80211-next.git include/uapi/linux/nl80211.h

This brings in nl80211 definitions as of 2016-12-02.

Signed-off-by: Jouni Malinen <j@w1.fi>
8 years agoRemove inactivity timeout for wired interfaces
Sam Tannous [Mon, 17 Oct 2016 22:02:16 +0000 (18:02 -0400)] 
Remove inactivity timeout for wired interfaces

We should unconditionally remove inactivity timers for wired network
cases. This commit checks for this after a new station association:

   hapd->iface->drv_flags & WPA_DRIVER_FLAGS_WIRED

and then cancels the timeout and does not register a new one.

It prints out a debug message like this:

1476740180.276286: IEEE 802.1X: 00:02:00:00:00:07 CTRL_DIR entering
state FORCE_BOTH
1476740180.276295: hostapd_new_assoc_sta: canceled wired ap_handle_timer
timeout for 00:02:00:00:00:07

This was tested on a debian jessie amd64 system with a configured 120
second inactivity timer and the session did not timeout.

Signed-off-by: Sam Tannous <stannous@cumulusnetworks.com>
8 years agoDefer scans while PNO is in progress instead of skipping them
Arik Nemtsov [Thu, 24 Apr 2014 05:45:35 +0000 (08:45 +0300)] 
Defer scans while PNO is in progress instead of skipping them

Skipping the scan altogether will hurt auto-reconnect. Also move the PNO
check down since the scan might be canceled for other reasons before we
defer it.

Signed-off-by: Arik Nemtsov <arikx.nemtsov@intel.com>
8 years agonl80211: Optimize memory use in nl80211_get_assoc_freq()
Jouni Malinen [Sat, 3 Dec 2016 20:37:41 +0000 (22:37 +0200)] 
nl80211: Optimize memory use in nl80211_get_assoc_freq()

Do not use the generic bss_info_handler() design to fetch all scan
results into temporary memory buffer. Instead, use a separate BSS info
handler that fetches the requested information without fully parsing the
BSS entries and without allocating any memory for collecting all the
results.

This is also simplifying bss_info_handler() and nl80211_parse_bss_info()
design by getting rid of the special case that was used only for
nl80211_get_assoc_freq() and not normal scan result fetching.

Signed-off-by: Jouni Malinen <j@w1.fi>
8 years agonl80211: Reduce nl80211_dump_scan() memory need
Jouni Malinen [Sat, 3 Dec 2016 20:14:04 +0000 (22:14 +0200)] 
nl80211: Reduce nl80211_dump_scan() memory need

Instead of fetching all scan results to a temporary buffer, debug print
scan result dump directly from the message handler function one BSS at a
time.

Signed-off-by: Jouni Malinen <j@w1.fi>
8 years agonl80211: Split bss_info_handler() into a separate parser function
Jouni Malinen [Sat, 3 Dec 2016 17:36:24 +0000 (19:36 +0200)] 
nl80211: Split bss_info_handler() into a separate parser function

This allows a single scan result to be parsed at a time. This is a step
towards optimizing scan result fetching without having to allocate
memory for all entries at the same time.

Signed-off-by: Jouni Malinen <j@w1.fi>
8 years agonl80211: Move duplicate scan result removal to bss.c
Jouni Malinen [Sat, 3 Dec 2016 17:26:47 +0000 (19:26 +0200)] 
nl80211: Move duplicate scan result removal to bss.c

The way the removal of duplicated (one per frequency) BSS entries in the
cfg80211 scan results were removed in driver_nl80211_scan.c
bss_info_handler() depended on having the full scan results available to
allow iteration through the other entries. This is problematic for the
goal of being able to optimize memory allocations for scan result
fetching in a manner that would not build the full result buffer in
memory.

Move this duplicate removal into bss.c since it has sufficient
information available for doing the same determination of which one of
two BSS entries is more current.

Signed-off-by: Jouni Malinen <j@w1.fi>
8 years agonl80211: Add more debug details to duplicate scan entry removal
Jouni Malinen [Sat, 3 Dec 2016 16:59:32 +0000 (18:59 +0200)] 
nl80211: Add more debug details to duplicate scan entry removal

This makes it easier to understand which cfg80211 entry got removed as
obsolete duplicate.

Signed-off-by: Jouni Malinen <j@w1.fi>
8 years agotests: Scanning and AP changing channels
Jouni Malinen [Sat, 3 Dec 2016 16:53:36 +0000 (18:53 +0200)] 
tests: Scanning and AP changing channels

Signed-off-by: Jouni Malinen <j@w1.fi>
8 years agoprivsep: Support frequency list for scan requests
Jouni Malinen [Sat, 3 Dec 2016 16:27:16 +0000 (18:27 +0200)] 
privsep: Support frequency list for scan requests

Signed-off-by: Jouni Malinen <j@w1.fi>
8 years agoprivsep: Support multiple scan SSIDs
Jouni Malinen [Sat, 3 Dec 2016 16:17:28 +0000 (18:17 +0200)] 
privsep: Support multiple scan SSIDs

Signed-off-by: Jouni Malinen <j@w1.fi>
8 years agoprivsep: Coding style cleanup for struct definitions
Jouni Malinen [Sat, 3 Dec 2016 16:05:33 +0000 (18:05 +0200)] 
privsep: Coding style cleanup for struct definitions

Signed-off-by: Jouni Malinen <j@w1.fi>
8 years agoprivsep: Fix scan result fetching with Beacon frame IEs
Jouni Malinen [Sat, 3 Dec 2016 16:02:49 +0000 (18:02 +0200)] 
privsep: Fix scan result fetching with Beacon frame IEs

wpa_priv did not yet support Beacon frame IEs (res->beacon_ie_len) which
resulted in invalid scan data being accepted in driver_privsep.c. Add
support for res->beacon_ie_len and also fix the validation step to take
this new variable length field into account.

Signed-off-by: Jouni Malinen <j@w1.fi>
8 years agowpa_priv: Document reduced functionality
Jouni Malinen [Sat, 3 Dec 2016 15:49:37 +0000 (17:49 +0200)] 
wpa_priv: Document reduced functionality

wpa_priv has never really been fully up-to-date with the wpa_supplicant
driver interface extensions. This does not seem like something that
would change in the future either, so document this reduced
functionality as a potential drawback.

Signed-off-by: Jouni Malinen <j@w1.fi>
8 years agowpa_priv: Handler driver global_deinit() on termination path
Jouni Malinen [Sat, 3 Dec 2016 15:38:01 +0000 (17:38 +0200)] 
wpa_priv: Handler driver global_deinit() on termination path

This avoids a theoretical resource leak on exit path if wpa_priv is
killed while there is a wpa_supplicant process using it.

Signed-off-by: Jouni Malinen <j@w1.fi>
8 years agowpa_priv: Explicitly clear padding in message structures
Jouni Malinen [Sat, 3 Dec 2016 15:32:07 +0000 (17:32 +0200)] 
wpa_priv: Explicitly clear padding in message structures

This avoids some valgrind warnings about use of uninitialized memory in
cases where a struct may have padding octets between the fields.

Signed-off-by: Jouni Malinen <j@w1.fi>
8 years agowpa_priv: Use fromlen instead sizeof(struct sockaddr_un)
Jouni Malinen [Sat, 3 Dec 2016 15:28:18 +0000 (17:28 +0200)] 
wpa_priv: Use fromlen instead sizeof(struct sockaddr_un)

This gets rid of some dependencies on how extra octets at the end of the
struct sockaddr_un get "uninitialized" consistently by only using the
exact length of the address data from the recvfrom() call. This resolves
number of valgrind warnings about use of uninitialized memory.

Signed-off-by: Jouni Malinen <j@w1.fi>
8 years agowpa_priv: Add support for multiple l2_packet connections
Jouni Malinen [Sat, 3 Dec 2016 09:37:41 +0000 (11:37 +0200)] 
wpa_priv: Add support for multiple l2_packet connections

This is needed to be able to work with many wpa_supplicant use cases,
e.g., due to use of TDLS or RSN pre-authentication needing a separate
l2_packet socket.

Signed-off-by: Jouni Malinen <j@w1.fi>
8 years agotests: P2P provision discovery while GO/CLI
Jouni Malinen [Sat, 3 Dec 2016 08:58:39 +0000 (10:58 +0200)] 
tests: P2P provision discovery while GO/CLI

These test cases verify that there is no duplicate processing of P2P
Action frames while operating in a P2P group.

Signed-off-by: Jouni Malinen <j@w1.fi>
8 years agonl80211: Split nl80211_check_bss_status() into a separate function
Jouni Malinen [Fri, 2 Dec 2016 18:54:49 +0000 (20:54 +0200)] 
nl80211: Split nl80211_check_bss_status() into a separate function

This allows a single scan result to be checked at a time. This is a step
towards optimizing scan result fetching without having to allocate
memory for all entries at the same time.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agonl80211: Separate channel noise fetch from scan result processing
Jouni Malinen [Fri, 2 Dec 2016 18:48:43 +0000 (20:48 +0200)] 
nl80211: Separate channel noise fetch from scan result processing

This untangles the NL80211_CMD_GET_SURVEY handler loop from
NL80211_CMD_GET_SCAN processing so that the per-channel noise
information can be fetched with a common function to a local data
structure that can then be easily used to update individual scan results
(a single BSS) instead of having to go through a full set of scan
results. This is a step towards optimizing scan result fetching without
having to allocate memory for all entries at the same time.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agotests: WDS 4addr behavior on reassociation and with open and WEP
Jouni Malinen [Fri, 2 Dec 2016 10:53:07 +0000 (12:53 +0200)] 
tests: WDS 4addr behavior on reassociation and with open and WEP

This extends the ap_wds_sta test case to cover post-reassociation case
(both with and without Authentication frame exchange) and add similar
test cases to cover open and WEP cases in addition to this existing
WPA2-PSK test case.

These cover functionality testing for the previous fix in
reassociation-without-new-authentication case. In addition, these find a
new mac80211 issue for the WEP + 4addr combination.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agoFix 4addr reassociation-without-deauthentication on AP
Jouni Malinen [Fri, 2 Dec 2016 10:51:16 +0000 (12:51 +0200)] 
Fix 4addr reassociation-without-deauthentication on AP

Data connection was lost if a station reassociated without the STA entry
being cleaned up on the AP side. Fix this by moving reconfiguration of
the STA WDS parameters in association response callback to happen only
after the STA flags have been updated to associated stated.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agowired: Mark some common helper functions static
Jouni Malinen [Wed, 30 Nov 2016 16:02:51 +0000 (18:02 +0200)] 
wired: Mark some common helper functions static

These are used only within driver_wired_common.c now at the end of the
refactoring changes, so there is no need to make these helper functions
available outside driver_wired_common.c.

Signed-off-by: Jouni Malinen <j@w1.fi>
8 years agomka: Remove references to macsec_qca from wpa_supplicant.conf
Sabrina Dubroca [Sun, 27 Nov 2016 19:08:56 +0000 (20:08 +0100)] 
mka: Remove references to macsec_qca from wpa_supplicant.conf

Make the documentation generic, as this is no longer the only macsec
driver.

Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
8 years agomacsec_linux: Add a driver for macsec on Linux kernels
Sabrina Dubroca [Sun, 27 Nov 2016 19:08:55 +0000 (20:08 +0100)] 
macsec_linux: Add a driver for macsec on Linux kernels

This uses libnl3 to communicate with the macsec module available on
Linux. A recent enough version of libnl is needed for the macsec.h file
(which is not yet available in a formal libnl release at the time of
this commit).

Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
8 years agodrivers: Move driver_wired_get_ssid() to a common file
Sabrina Dubroca [Sun, 27 Nov 2016 19:08:54 +0000 (20:08 +0100)] 
drivers: Move driver_wired_get_ssid() to a common file

This continues refactoring of the common parts of wired drivers code
into a shared file, so that they can be reused by other drivers.

Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
8 years agodrivers: Move driver_wired_get_bssid() to a common file
Sabrina Dubroca [Sun, 27 Nov 2016 19:08:53 +0000 (20:08 +0100)] 
drivers: Move driver_wired_get_bssid() to a common file

This continues refactoring of the common parts of wired drivers code
into a shared file, so that they can be reused by other drivers.

Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
8 years agodrivers: Move driver_wired_get_capa() to a common file
Sabrina Dubroca [Sun, 27 Nov 2016 19:08:52 +0000 (20:08 +0100)] 
drivers: Move driver_wired_get_capa() to a common file

This continues refactoring of the common parts of wired drivers code
into a shared file, so that they can be reused by other drivers.

Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
8 years agodrivers: Move driver_wired_deinit_common() to a common file
Sabrina Dubroca [Sun, 27 Nov 2016 19:08:51 +0000 (20:08 +0100)] 
drivers: Move driver_wired_deinit_common() to a common file

This continues refactoring of the common parts of wired drivers code
into a shared file, so that they can be reused by other drivers.

Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
8 years agodrivers: Move driver_wired_init_common() to a common file
Sabrina Dubroca [Sun, 27 Nov 2016 19:08:50 +0000 (20:08 +0100)] 
drivers: Move driver_wired_init_common() to a common file

This continues refactoring of the common parts of wired drivers code
into a shared file, so that they can be reused by other drivers.

Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
8 years agodrivers: Move driver_wired_get_ifstatus() to a common file
Sabrina Dubroca [Sun, 27 Nov 2016 19:08:49 +0000 (20:08 +0100)] 
drivers: Move driver_wired_get_ifstatus() to a common file

This continues refactoring of the common parts of wired drivers code
into a shared file, so that they can be reused by other drivers.

Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
8 years agodrivers: Move driver_wired_set_ifflags() to a common file
Sabrina Dubroca [Sun, 27 Nov 2016 19:08:48 +0000 (20:08 +0100)] 
drivers: Move driver_wired_set_ifflags() to a common file

This continues refactoring of the common parts of wired drivers code
into a shared file, so that they can be reused by other drivers.

Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
8 years agodrivers: Move driver_wired_get_ifflags() to a common file
Sabrina Dubroca [Sun, 27 Nov 2016 19:08:47 +0000 (20:08 +0100)] 
drivers: Move driver_wired_get_ifflags() to a common file

This continues refactoring of the common parts of wired drivers code
into a shared file, so that they can be reused by other drivers.

Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
8 years agodrivers: Move driver_wired_multi() to a common file
Sabrina Dubroca [Sun, 27 Nov 2016 19:08:46 +0000 (20:08 +0100)] 
drivers: Move driver_wired_multi() to a common file

This continues refactoring of the common parts of wired drivers code
into a shared file, so that they can be reused by other drivers.

Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
8 years agodrivers: Move wired_multicast_membership() to a common file
Sabrina Dubroca [Sun, 27 Nov 2016 19:08:45 +0000 (20:08 +0100)] 
drivers: Move wired_multicast_membership() to a common file

This continues refactoring of the common parts of wired drivers code
into a shared file, so that they can be reused by other drivers.

Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
8 years agodrivers: Move common definitions for wired drivers out
Sabrina Dubroca [Sun, 27 Nov 2016 19:08:44 +0000 (20:08 +0100)] 
drivers: Move common definitions for wired drivers out

Refactor the common parts of wired drivers code into a shared file, so
that they can be reused by other drivers. The macsec_qca driver already
contains a lot of code duplication from the wired driver, and the
macsec_linux driver would do the same. A structure to hold data common
to all wired drivers is added and used in all these drivers.

Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
8 years agoAdd support to abort vendor scan
Sunil Dutt [Wed, 30 Nov 2016 04:39:38 +0000 (10:09 +0530)] 
Add support to abort vendor scan

This commit enhances the existing implementation of abort scan to also
abort concurrent active vendor scans. This is achieved by passing the
the scan_cookie to the driver interface with the intention to abort
the specific scan request. This scan_cookie is returned from the driver
interface when the scan request is scheduled.

This scan_cookie is 0 if the scan is triggered through the upstream
cfg80211 interface. Thus, the scan_cookie is used to determine whether
to abort the cfg80211 or vendor scan request.

Also, the previous implementation of relying on scan_work/p2p_scan_work
for the active work to trigger the abort scan is enhanced to check for
the started state of either of these work operations. This should also
help to abort the concurrent active scan/p2p-scan operations.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agonl80211: Enhance abort scan to also abort the vendor scan
Sunil Dutt [Wed, 30 Nov 2016 04:34:38 +0000 (10:04 +0530)] 
nl80211: Enhance abort scan to also abort the vendor scan

This commit enhances the abort scan implementation to also abort the
vendor scan, if one was used to trigger the scan.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agoDefine a QCA vendor command to abort vendor scan
Sunil Dutt [Tue, 22 Nov 2016 15:20:08 +0000 (20:50 +0530)] 
Define a QCA vendor command to abort vendor scan

The new QCA_NL80211_VENDOR_SUBCMD_ABORT_SCAN command can be used to
abort an ongoing scan that was started with
QCA_NL80211_VENDOR_SUBCMD_TRIGGER_SCAN.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agotests: PMF and Authentication frame injection
Jouni Malinen [Tue, 29 Nov 2016 14:07:25 +0000 (16:07 +0200)] 
tests: PMF and Authentication frame injection

Verify that AP does not break PMF-enabled connection due to injected
Authentication frame. This is a regression test for
NL80211_FEATURE_FULL_AP_CLIENT_STATE changes resulting in dropping the
key in such a case.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
8 years agoAdd MGMT_RX_PROCESS test command for hostapd
Jouni Malinen [Tue, 29 Nov 2016 13:57:22 +0000 (15:57 +0200)] 
Add MGMT_RX_PROCESS test command for hostapd

This makes it easier to write hwsim test cases to verify management
frame processing sequences with dropped or modified frames. When
ext_mgmt_frame_handling is used, this new command can be used to request
hostapd to process a received a management frame, e.g., based on
information reported in the MGMT-RX events.

This is more or less identical to the earlier wpa_supplicant commit
4de70e2330c54c32f42a5fc93517d65c0a2c3be9 ('Add MGMT_RX_PROCESS test
command for wpa_supplicant'), but for hostapd.

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