diff options
author | John W. Linville <linville@tuxdriver.com> | 2013-02-15 13:59:53 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2013-02-15 13:59:53 -0500 |
commit | ded652a67464b1fa66616954bc608ead9ec02fb6 (patch) | |
tree | 7b4bf1ab3723ed6a906393a5c9f129381cf8e592 /net/mac80211/main.c | |
parent | b56e681b6210a635af4e4eb93ce81b4654851033 (diff) | |
parent | 93c78c5debeb9c7101ecc73347d4730c26a98c05 (diff) |
Merge branch 'for-john' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next
Diffstat (limited to 'net/mac80211/main.c')
-rw-r--r-- | net/mac80211/main.c | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/net/mac80211/main.c b/net/mac80211/main.c index 38b3468bc515..f9747689d604 100644 --- a/net/mac80211/main.c +++ b/net/mac80211/main.c | |||
@@ -501,6 +501,11 @@ static const struct ieee80211_ht_cap mac80211_ht_capa_mod_mask = { | |||
501 | }, | 501 | }, |
502 | }; | 502 | }; |
503 | 503 | ||
504 | static const u8 extended_capabilities[] = { | ||
505 | 0, 0, 0, 0, 0, 0, 0, | ||
506 | WLAN_EXT_CAPA8_OPMODE_NOTIF, | ||
507 | }; | ||
508 | |||
504 | struct ieee80211_hw *ieee80211_alloc_hw(size_t priv_data_len, | 509 | struct ieee80211_hw *ieee80211_alloc_hw(size_t priv_data_len, |
505 | const struct ieee80211_ops *ops) | 510 | const struct ieee80211_ops *ops) |
506 | { | 511 | { |
@@ -557,14 +562,17 @@ struct ieee80211_hw *ieee80211_alloc_hw(size_t priv_data_len, | |||
557 | WIPHY_FLAG_REPORTS_OBSS | | 562 | WIPHY_FLAG_REPORTS_OBSS | |
558 | WIPHY_FLAG_OFFCHAN_TX; | 563 | WIPHY_FLAG_OFFCHAN_TX; |
559 | 564 | ||
565 | wiphy->extended_capabilities = extended_capabilities; | ||
566 | wiphy->extended_capabilities_mask = extended_capabilities; | ||
567 | wiphy->extended_capabilities_len = ARRAY_SIZE(extended_capabilities); | ||
568 | |||
560 | if (ops->remain_on_channel) | 569 | if (ops->remain_on_channel) |
561 | wiphy->flags |= WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL; | 570 | wiphy->flags |= WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL; |
562 | 571 | ||
563 | wiphy->features |= NL80211_FEATURE_SK_TX_STATUS | | 572 | wiphy->features |= NL80211_FEATURE_SK_TX_STATUS | |
564 | NL80211_FEATURE_SAE | | 573 | NL80211_FEATURE_SAE | |
565 | NL80211_FEATURE_HT_IBSS | | 574 | NL80211_FEATURE_HT_IBSS | |
566 | NL80211_FEATURE_VIF_TXPOWER | | 575 | NL80211_FEATURE_VIF_TXPOWER; |
567 | NL80211_FEATURE_FULL_AP_CLIENT_STATE; | ||
568 | 576 | ||
569 | if (!ops->hw_scan) | 577 | if (!ops->hw_scan) |
570 | wiphy->features |= NL80211_FEATURE_LOW_PRIORITY_SCAN | | 578 | wiphy->features |= NL80211_FEATURE_LOW_PRIORITY_SCAN | |
@@ -621,6 +629,9 @@ struct ieee80211_hw *ieee80211_alloc_hw(size_t priv_data_len, | |||
621 | 629 | ||
622 | INIT_WORK(&local->restart_work, ieee80211_restart_work); | 630 | INIT_WORK(&local->restart_work, ieee80211_restart_work); |
623 | 631 | ||
632 | INIT_WORK(&local->radar_detected_work, | ||
633 | ieee80211_dfs_radar_detected_work); | ||
634 | |||
624 | INIT_WORK(&local->reconfig_filter, ieee80211_reconfig_filter); | 635 | INIT_WORK(&local->reconfig_filter, ieee80211_reconfig_filter); |
625 | local->smps_mode = IEEE80211_SMPS_OFF; | 636 | local->smps_mode = IEEE80211_SMPS_OFF; |
626 | 637 | ||
@@ -713,6 +724,16 @@ int ieee80211_register_hw(struct ieee80211_hw *hw) | |||
713 | */ | 724 | */ |
714 | if (local->hw.wiphy->interface_modes & BIT(NL80211_IFTYPE_WDS)) | 725 | if (local->hw.wiphy->interface_modes & BIT(NL80211_IFTYPE_WDS)) |
715 | return -EINVAL; | 726 | return -EINVAL; |
727 | |||
728 | /* DFS currently not supported with channel context drivers */ | ||
729 | for (i = 0; i < local->hw.wiphy->n_iface_combinations; i++) { | ||
730 | const struct ieee80211_iface_combination *comb; | ||
731 | |||
732 | comb = &local->hw.wiphy->iface_combinations[i]; | ||
733 | |||
734 | if (comb->radar_detect_widths) | ||
735 | return -EINVAL; | ||
736 | } | ||
716 | } | 737 | } |
717 | 738 | ||
718 | /* Only HW csum features are currently compatible with mac80211 */ | 739 | /* Only HW csum features are currently compatible with mac80211 */ |