diff options
Diffstat (limited to 'net/mac80211/main.c')
-rw-r--r-- | net/mac80211/main.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/net/mac80211/main.c b/net/mac80211/main.c index e323d4e6647b..dddedfad5404 100644 --- a/net/mac80211/main.c +++ b/net/mac80211/main.c | |||
@@ -558,6 +558,19 @@ ieee80211_default_mgmt_stypes[NUM_NL80211_IFTYPES] = { | |||
558 | }, | 558 | }, |
559 | }; | 559 | }; |
560 | 560 | ||
561 | static const struct ieee80211_ht_cap mac80211_ht_capa_mod_mask = { | ||
562 | .ampdu_params_info = IEEE80211_HT_AMPDU_PARM_FACTOR | | ||
563 | IEEE80211_HT_AMPDU_PARM_DENSITY, | ||
564 | |||
565 | .cap_info = cpu_to_le16(IEEE80211_HT_CAP_SUP_WIDTH_20_40 | | ||
566 | IEEE80211_HT_CAP_MAX_AMSDU | | ||
567 | IEEE80211_HT_CAP_SGI_40), | ||
568 | .mcs = { | ||
569 | .rx_mask = { 0xff, 0xff, 0xff, 0xff, 0xff, | ||
570 | 0xff, 0xff, 0xff, 0xff, 0xff, }, | ||
571 | }, | ||
572 | }; | ||
573 | |||
561 | struct ieee80211_hw *ieee80211_alloc_hw(size_t priv_data_len, | 574 | struct ieee80211_hw *ieee80211_alloc_hw(size_t priv_data_len, |
562 | const struct ieee80211_ops *ops) | 575 | const struct ieee80211_ops *ops) |
563 | { | 576 | { |
@@ -594,7 +607,9 @@ struct ieee80211_hw *ieee80211_alloc_hw(size_t priv_data_len, | |||
594 | wiphy->flags |= WIPHY_FLAG_NETNS_OK | | 607 | wiphy->flags |= WIPHY_FLAG_NETNS_OK | |
595 | WIPHY_FLAG_4ADDR_AP | | 608 | WIPHY_FLAG_4ADDR_AP | |
596 | WIPHY_FLAG_4ADDR_STATION | | 609 | WIPHY_FLAG_4ADDR_STATION | |
597 | WIPHY_FLAG_REPORTS_OBSS; | 610 | WIPHY_FLAG_REPORTS_OBSS | |
611 | WIPHY_FLAG_OFFCHAN_TX | | ||
612 | WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL; | ||
598 | 613 | ||
599 | wiphy->features = NL80211_FEATURE_SK_TX_STATUS; | 614 | wiphy->features = NL80211_FEATURE_SK_TX_STATUS; |
600 | 615 | ||
@@ -609,7 +624,7 @@ struct ieee80211_hw *ieee80211_alloc_hw(size_t priv_data_len, | |||
609 | 624 | ||
610 | local->hw.priv = (char *)local + ALIGN(sizeof(*local), NETDEV_ALIGN); | 625 | local->hw.priv = (char *)local + ALIGN(sizeof(*local), NETDEV_ALIGN); |
611 | 626 | ||
612 | BUG_ON(!ops->tx); | 627 | BUG_ON(!ops->tx && !ops->tx_frags); |
613 | BUG_ON(!ops->start); | 628 | BUG_ON(!ops->start); |
614 | BUG_ON(!ops->stop); | 629 | BUG_ON(!ops->stop); |
615 | BUG_ON(!ops->config); | 630 | BUG_ON(!ops->config); |
@@ -629,6 +644,7 @@ struct ieee80211_hw *ieee80211_alloc_hw(size_t priv_data_len, | |||
629 | local->user_power_level = -1; | 644 | local->user_power_level = -1; |
630 | local->uapsd_queues = IEEE80211_DEFAULT_UAPSD_QUEUES; | 645 | local->uapsd_queues = IEEE80211_DEFAULT_UAPSD_QUEUES; |
631 | local->uapsd_max_sp_len = IEEE80211_DEFAULT_MAX_SP_LEN; | 646 | local->uapsd_max_sp_len = IEEE80211_DEFAULT_MAX_SP_LEN; |
647 | wiphy->ht_capa_mod_mask = &mac80211_ht_capa_mod_mask; | ||
632 | 648 | ||
633 | INIT_LIST_HEAD(&local->interfaces); | 649 | INIT_LIST_HEAD(&local->interfaces); |
634 | 650 | ||