aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEyal Shapira <eyal@wizery.com>2012-11-13 03:00:21 +0200
committerEyal Shapira <eyal@wizery.com>2012-11-13 14:45:35 +0200
commit4e1835b2ccb4698e8e7022522928317d219bca32 (patch)
tree1b6e153f3d24f6f31ee8d6b7c50f0d882ac2cb63 /src
parentf63238165abfda18b46bbc8c2a0e91aca853da64 (diff)
downloadexternal_wpa_supplicant_8_ti-4e1835b2ccb4698e8e7022522928317d219bca32.zip
external_wpa_supplicant_8_ti-4e1835b2ccb4698e8e7022522928317d219bca32.tar.gz
external_wpa_supplicant_8_ti-4e1835b2ccb4698e8e7022522928317d219bca32.tar.bz2
P2P: Fix broken rx action frame handling (INTERNAL-SQUASH)
Commit "P2P: Fix duplicate handling of rx action frames" went too far and dropped any rx action frames arriving on the GO interface. It assumed that any action frames were duplicated and received on both GO interface and P2P device interface. This is wrong as some actions frames like P2P presence request are sent to the GO interface address and won't be duplicated. The root cause of the duplication lies within the Rx path in mac80211 in Johannes` patch "mac80211: accept public action frames with mismatched BSSID". When wpa_s works with a separate group interface this creates a duplicated Rx on both the P2P dev interface and the GO interface. Fix the issue by canceling the duplication in wpa_s and discarding public action frames with unmatching bssid arriving on a dedicated GO interface (This should be squashed with "P2P: Fix duplicate handling of rx action frames") Signed-off-by: Eyal Shapira <eyal@wizery.com>
Diffstat (limited to 'src')
-rw-r--r--src/p2p/p2p.h5
-rw-r--r--src/p2p/p2p_i.h1
2 files changed, 5 insertions, 1 deletions
diff --git a/src/p2p/p2p.h b/src/p2p/p2p.h
index 3c439f3..a60974f 100644
--- a/src/p2p/p2p.h
+++ b/src/p2p/p2p.h
@@ -1726,4 +1726,9 @@ int p2p_prepare_channel(struct p2p_data *p2p, unsigned int force_freq);
void p2p_set_config_timeout(struct p2p_data *p2p, u8 go_timeout,
u8 client_timeout);
+/**
+ * p2p_group_get_interface_addr - Get the interface address of a P2P group
+ * @group: P2P group context from p2p_group_init()
+ */
+const u8 *p2p_group_get_interface_addr(struct p2p_group *group);
#endif /* P2P_H */
diff --git a/src/p2p/p2p_i.h b/src/p2p/p2p_i.h
index d254818..9e3fd6f 100644
--- a/src/p2p/p2p_i.h
+++ b/src/p2p/p2p_i.h
@@ -557,7 +557,6 @@ struct p2p_noa_desc {
};
/* p2p_group.c */
-const u8 * p2p_group_get_interface_addr(struct p2p_group *group);
u8 p2p_group_presence_req(struct p2p_group *group,
const u8 *client_interface_addr,
const u8 *noa, size_t noa_len);