aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJouni Malinen <jouni@qca.qualcomm.com>2011-08-08 05:11:52 -0400
committerJohn W. Linville <linville@tuxdriver.com>2011-08-10 14:07:42 -0400
commit50d3dfb728e987790cf3d973aaf5fba2433771d8 (patch)
tree2466a1545beab6417db076a977da099d7d6694c4
parentd2da587839b29ccc5b920fffdb848d7bdb36f11f (diff)
cfg80211/nl80211: Send AssocReq IEs to user space in AP mode
When user space SME/MLME (e.g., hostapd) is not used in AP mode, the IEs from the (Re)Association Request frame that was processed in firmware need to be made available for user space (e.g., RSN IE for hostapd). Allow this to be done with cfg80211_new_sta(). Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com> Acked-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--include/net/cfg80211.h8
-rw-r--r--net/wireless/nl80211.c4
2 files changed, 12 insertions, 0 deletions
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index 44e72cc13055..779e3008df4d 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -531,6 +531,11 @@ struct sta_bss_parameters {
531 * This number should increase every time the list of stations 531 * This number should increase every time the list of stations
532 * changes, i.e. when a station is added or removed, so that 532 * changes, i.e. when a station is added or removed, so that
533 * userspace can tell whether it got a consistent snapshot. 533 * userspace can tell whether it got a consistent snapshot.
534 * @assoc_req_ies: IEs from (Re)Association Request.
535 * This is used only when in AP mode with drivers that do not use
536 * user space MLME/SME implementation. The information is provided for
537 * the cfg80211_new_sta() calls to notify user space of the IEs.
538 * @assoc_req_ies_len: Length of assoc_req_ies buffer in octets.
534 */ 539 */
535struct station_info { 540struct station_info {
536 u32 filled; 541 u32 filled;
@@ -553,6 +558,9 @@ struct station_info {
553 struct sta_bss_parameters bss_param; 558 struct sta_bss_parameters bss_param;
554 559
555 int generation; 560 int generation;
561
562 const u8 *assoc_req_ies;
563 size_t assoc_req_ies_len;
556}; 564};
557 565
558/** 566/**
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 3b5dc9186071..ca7697701076 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -2236,6 +2236,10 @@ static int nl80211_send_station(struct sk_buff *msg, u32 pid, u32 seq,
2236 } 2236 }
2237 nla_nest_end(msg, sinfoattr); 2237 nla_nest_end(msg, sinfoattr);
2238 2238
2239 if (sinfo->assoc_req_ies)
2240 NLA_PUT(msg, NL80211_ATTR_IE, sinfo->assoc_req_ies_len,
2241 sinfo->assoc_req_ies);
2242
2239 return genlmsg_end(msg, hdr); 2243 return genlmsg_end(msg, hdr);
2240 2244
2241 nla_put_failure: 2245 nla_put_failure: