]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - net/mac80211/util.c
mac80211: Add function to get probe request template for current AP
[mv-sheeva.git] / net / mac80211 / util.c
index e486286ebf1ae7d4b70c31188768c370267e4683..68d0518254dd54892532491dbd362efee812f769 100644 (file)
@@ -1011,9 +1011,10 @@ int ieee80211_build_preq_ies(struct ieee80211_local *local, u8 *buffer,
        return pos - buffer;
 }
 
-void ieee80211_send_probe_req(struct ieee80211_sub_if_data *sdata, u8 *dst,
-                             const u8 *ssid, size_t ssid_len,
-                             const u8 *ie, size_t ie_len)
+struct sk_buff *ieee80211_build_probe_req(struct ieee80211_sub_if_data *sdata,
+                                         u8 *dst,
+                                         const u8 *ssid, size_t ssid_len,
+                                         const u8 *ie, size_t ie_len)
 {
        struct ieee80211_local *local = sdata->local;
        struct sk_buff *skb;
@@ -1027,7 +1028,7 @@ void ieee80211_send_probe_req(struct ieee80211_sub_if_data *sdata, u8 *dst,
        if (!buf) {
                printk(KERN_DEBUG "%s: failed to allocate temporary IE "
                       "buffer\n", sdata->name);
-               return;
+               return NULL;
        }
 
        chan = ieee80211_frequency_to_channel(
@@ -1050,8 +1051,20 @@ void ieee80211_send_probe_req(struct ieee80211_sub_if_data *sdata, u8 *dst,
        }
 
        IEEE80211_SKB_CB(skb)->flags |= IEEE80211_TX_INTFL_DONT_ENCRYPT;
-       ieee80211_tx_skb(sdata, skb);
        kfree(buf);
+
+       return skb;
+}
+
+void ieee80211_send_probe_req(struct ieee80211_sub_if_data *sdata, u8 *dst,
+                             const u8 *ssid, size_t ssid_len,
+                             const u8 *ie, size_t ie_len)
+{
+       struct sk_buff *skb;
+
+       skb = ieee80211_build_probe_req(sdata, dst, ssid, ssid_len, ie, ie_len);
+       if (skb)
+               ieee80211_tx_skb(sdata, skb);
 }
 
 u32 ieee80211_sta_get_rates(struct ieee80211_local *local,