diff options
Diffstat (limited to 'drivers/net/wireless/iwmc3200wifi/cfg80211.c')
-rw-r--r-- | drivers/net/wireless/iwmc3200wifi/cfg80211.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwmc3200wifi/cfg80211.c b/drivers/net/wireless/iwmc3200wifi/cfg80211.c index 7cfc2c0a1fbc..7c4f44a9c3e6 100644 --- a/drivers/net/wireless/iwmc3200wifi/cfg80211.c +++ b/drivers/net/wireless/iwmc3200wifi/cfg80211.c | |||
@@ -725,6 +725,33 @@ static int iwm_cfg80211_set_power_mgmt(struct wiphy *wiphy, | |||
725 | CFG_POWER_INDEX, iwm->conf.power_index); | 725 | CFG_POWER_INDEX, iwm->conf.power_index); |
726 | } | 726 | } |
727 | 727 | ||
728 | int iwm_cfg80211_set_pmksa(struct wiphy *wiphy, struct net_device *netdev, | ||
729 | struct cfg80211_pmksa *pmksa) | ||
730 | { | ||
731 | struct iwm_priv *iwm = wiphy_to_iwm(wiphy); | ||
732 | |||
733 | return iwm_send_pmkid_update(iwm, pmksa, IWM_CMD_PMKID_ADD); | ||
734 | } | ||
735 | |||
736 | int iwm_cfg80211_del_pmksa(struct wiphy *wiphy, struct net_device *netdev, | ||
737 | struct cfg80211_pmksa *pmksa) | ||
738 | { | ||
739 | struct iwm_priv *iwm = wiphy_to_iwm(wiphy); | ||
740 | |||
741 | return iwm_send_pmkid_update(iwm, pmksa, IWM_CMD_PMKID_DEL); | ||
742 | } | ||
743 | |||
744 | int iwm_cfg80211_flush_pmksa(struct wiphy *wiphy, struct net_device *netdev) | ||
745 | { | ||
746 | struct iwm_priv *iwm = wiphy_to_iwm(wiphy); | ||
747 | struct cfg80211_pmksa pmksa; | ||
748 | |||
749 | memset(&pmksa, 0, sizeof(struct cfg80211_pmksa)); | ||
750 | |||
751 | return iwm_send_pmkid_update(iwm, &pmksa, IWM_CMD_PMKID_FLUSH); | ||
752 | } | ||
753 | |||
754 | |||
728 | static struct cfg80211_ops iwm_cfg80211_ops = { | 755 | static struct cfg80211_ops iwm_cfg80211_ops = { |
729 | .change_virtual_intf = iwm_cfg80211_change_iface, | 756 | .change_virtual_intf = iwm_cfg80211_change_iface, |
730 | .add_key = iwm_cfg80211_add_key, | 757 | .add_key = iwm_cfg80211_add_key, |
@@ -741,6 +768,9 @@ static struct cfg80211_ops iwm_cfg80211_ops = { | |||
741 | .set_tx_power = iwm_cfg80211_set_txpower, | 768 | .set_tx_power = iwm_cfg80211_set_txpower, |
742 | .get_tx_power = iwm_cfg80211_get_txpower, | 769 | .get_tx_power = iwm_cfg80211_get_txpower, |
743 | .set_power_mgmt = iwm_cfg80211_set_power_mgmt, | 770 | .set_power_mgmt = iwm_cfg80211_set_power_mgmt, |
771 | .set_pmksa = iwm_cfg80211_set_pmksa, | ||
772 | .del_pmksa = iwm_cfg80211_del_pmksa, | ||
773 | .flush_pmksa = iwm_cfg80211_flush_pmksa, | ||
744 | }; | 774 | }; |
745 | 775 | ||
746 | static const u32 cipher_suites[] = { | 776 | static const u32 cipher_suites[] = { |
@@ -786,6 +816,7 @@ struct wireless_dev *iwm_wdev_alloc(int sizeof_bus, struct device *dev) | |||
786 | 816 | ||
787 | set_wiphy_dev(wdev->wiphy, dev); | 817 | set_wiphy_dev(wdev->wiphy, dev); |
788 | wdev->wiphy->max_scan_ssids = UMAC_WIFI_IF_PROBE_OPTION_MAX; | 818 | wdev->wiphy->max_scan_ssids = UMAC_WIFI_IF_PROBE_OPTION_MAX; |
819 | wdev->wiphy->max_num_pmkids = UMAC_MAX_NUM_PMKIDS; | ||
789 | wdev->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) | | 820 | wdev->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) | |
790 | BIT(NL80211_IFTYPE_ADHOC); | 821 | BIT(NL80211_IFTYPE_ADHOC); |
791 | wdev->wiphy->bands[IEEE80211_BAND_2GHZ] = &iwm_band_2ghz; | 822 | wdev->wiphy->bands[IEEE80211_BAND_2GHZ] = &iwm_band_2ghz; |