aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/main.c
diff options
context:
space:
mode:
authorJohn W. Linville <linville@tuxdriver.com>2013-02-15 13:59:53 -0500
committerJohn W. Linville <linville@tuxdriver.com>2013-02-15 13:59:53 -0500
commitded652a67464b1fa66616954bc608ead9ec02fb6 (patch)
tree7b4bf1ab3723ed6a906393a5c9f129381cf8e592 /net/mac80211/main.c
parentb56e681b6210a635af4e4eb93ce81b4654851033 (diff)
parent93c78c5debeb9c7101ecc73347d4730c26a98c05 (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.c25
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
504static const u8 extended_capabilities[] = {
505 0, 0, 0, 0, 0, 0, 0,
506 WLAN_EXT_CAPA8_OPMODE_NOTIF,
507};
508
504struct ieee80211_hw *ieee80211_alloc_hw(size_t priv_data_len, 509struct 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 */