mac80211: dont advertise WEP if unavailable
Johannes Berg [Tue, 10 Aug 2010 07:46:41 +0000 (09:46 +0200)]
When WEP is unavailable, don't advertise it
to cfg80211.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

net/mac80211/main.c

index 06b9608..0afccda 100644 (file)
@@ -536,6 +536,7 @@ int ieee80211_register_hw(struct ieee80211_hw *hw)
        int channels, max_bitrates;
        bool supp_ht;
        static const u32 cipher_suites[] = {
+               /* keep WEP first, it may be removed below */
                WLAN_CIPHER_SUITE_WEP40,
                WLAN_CIPHER_SUITE_WEP104,
                WLAN_CIPHER_SUITE_TKIP,
@@ -623,6 +624,10 @@ int ieee80211_register_hw(struct ieee80211_hw *hw)
        local->hw.wiphy->n_cipher_suites = ARRAY_SIZE(cipher_suites);
        if (!(local->hw.flags & IEEE80211_HW_MFP_CAPABLE))
                local->hw.wiphy->n_cipher_suites--;
+       if (IS_ERR(local->wep_tx_tfm) || IS_ERR(local->wep_rx_tfm)) {
+               local->hw.wiphy->cipher_suites += 2;
+               local->hw.wiphy->n_cipher_suites -= 2;
+       }
 
        result = wiphy_register(local->hw.wiphy);
        if (result < 0)