diff options
author | Johannes Berg <johannes@sipsolutions.net> | 2008-10-10 19:51:51 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-10-31 19:00:15 -0400 |
commit | bda3933a8aceedd03e0dd410844bd310033ca756 (patch) | |
tree | f4d2c70a6338e500b6db93b073801181280b1840 /net/mac80211 | |
parent | 9124b07740c51cbc6e358dd0c4abc6ee8ded084d (diff) |
mac80211: move bss_conf into vif
Move bss_conf into the vif struct so that drivers can
access it during ->tx without having to store it in
the private data or similar. No driver updates because
this is only for when they want to start using it.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211')
-rw-r--r-- | net/mac80211/cfg.c | 6 | ||||
-rw-r--r-- | net/mac80211/debugfs_netdev.c | 2 | ||||
-rw-r--r-- | net/mac80211/ieee80211_i.h | 3 | ||||
-rw-r--r-- | net/mac80211/iface.c | 2 | ||||
-rw-r--r-- | net/mac80211/main.c | 8 | ||||
-rw-r--r-- | net/mac80211/mlme.c | 30 | ||||
-rw-r--r-- | net/mac80211/tx.c | 16 | ||||
-rw-r--r-- | net/mac80211/util.c | 6 |
8 files changed, 35 insertions, 38 deletions
diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c index 8ea30902d5db..28382b5c7c25 100644 --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c | |||
@@ -964,16 +964,16 @@ static int ieee80211_change_bss(struct wiphy *wiphy, | |||
964 | return -EINVAL; | 964 | return -EINVAL; |
965 | 965 | ||
966 | if (params->use_cts_prot >= 0) { | 966 | if (params->use_cts_prot >= 0) { |
967 | sdata->bss_conf.use_cts_prot = params->use_cts_prot; | 967 | sdata->vif.bss_conf.use_cts_prot = params->use_cts_prot; |
968 | changed |= BSS_CHANGED_ERP_CTS_PROT; | 968 | changed |= BSS_CHANGED_ERP_CTS_PROT; |
969 | } | 969 | } |
970 | if (params->use_short_preamble >= 0) { | 970 | if (params->use_short_preamble >= 0) { |
971 | sdata->bss_conf.use_short_preamble = | 971 | sdata->vif.bss_conf.use_short_preamble = |
972 | params->use_short_preamble; | 972 | params->use_short_preamble; |
973 | changed |= BSS_CHANGED_ERP_PREAMBLE; | 973 | changed |= BSS_CHANGED_ERP_PREAMBLE; |
974 | } | 974 | } |
975 | if (params->use_short_slot_time >= 0) { | 975 | if (params->use_short_slot_time >= 0) { |
976 | sdata->bss_conf.use_short_slot = | 976 | sdata->vif.bss_conf.use_short_slot = |
977 | params->use_short_slot_time; | 977 | params->use_short_slot_time; |
978 | changed |= BSS_CHANGED_ERP_SLOT; | 978 | changed |= BSS_CHANGED_ERP_SLOT; |
979 | } | 979 | } |
diff --git a/net/mac80211/debugfs_netdev.c b/net/mac80211/debugfs_netdev.c index 56f3f29385cb..c54219301724 100644 --- a/net/mac80211/debugfs_netdev.c +++ b/net/mac80211/debugfs_netdev.c | |||
@@ -119,7 +119,7 @@ static ssize_t ieee80211_if_fmt_flags( | |||
119 | sdata->u.sta.flags & IEEE80211_STA_AUTHENTICATED ? "AUTH\n" : "", | 119 | sdata->u.sta.flags & IEEE80211_STA_AUTHENTICATED ? "AUTH\n" : "", |
120 | sdata->u.sta.flags & IEEE80211_STA_ASSOCIATED ? "ASSOC\n" : "", | 120 | sdata->u.sta.flags & IEEE80211_STA_ASSOCIATED ? "ASSOC\n" : "", |
121 | sdata->u.sta.flags & IEEE80211_STA_PROBEREQ_POLL ? "PROBEREQ POLL\n" : "", | 121 | sdata->u.sta.flags & IEEE80211_STA_PROBEREQ_POLL ? "PROBEREQ POLL\n" : "", |
122 | sdata->bss_conf.use_cts_prot ? "CTS prot\n" : ""); | 122 | sdata->vif.bss_conf.use_cts_prot ? "CTS prot\n" : ""); |
123 | } | 123 | } |
124 | __IEEE80211_IF_FILE(flags); | 124 | __IEEE80211_IF_FILE(flags); |
125 | 125 | ||
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h index f1ef522bfe07..859b5b001f22 100644 --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h | |||
@@ -440,9 +440,6 @@ struct ieee80211_sub_if_data { | |||
440 | 440 | ||
441 | u16 sequence_number; | 441 | u16 sequence_number; |
442 | 442 | ||
443 | /* BSS configuration for this interface. */ | ||
444 | struct ieee80211_bss_conf bss_conf; | ||
445 | |||
446 | /* | 443 | /* |
447 | * AP this belongs to: self in AP mode and | 444 | * AP this belongs to: self in AP mode and |
448 | * corresponding AP in VLAN mode, NULL for | 445 | * corresponding AP in VLAN mode, NULL for |
diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c index df28c5f7c9c0..cde145221b61 100644 --- a/net/mac80211/iface.c +++ b/net/mac80211/iface.c | |||
@@ -695,7 +695,7 @@ int ieee80211_if_change_type(struct ieee80211_sub_if_data *sdata, | |||
695 | ieee80211_setup_sdata(sdata, type); | 695 | ieee80211_setup_sdata(sdata, type); |
696 | 696 | ||
697 | /* reset some values that shouldn't be kept across type changes */ | 697 | /* reset some values that shouldn't be kept across type changes */ |
698 | sdata->bss_conf.basic_rates = | 698 | sdata->vif.bss_conf.basic_rates = |
699 | ieee80211_mandatory_rates(sdata->local, | 699 | ieee80211_mandatory_rates(sdata->local, |
700 | sdata->local->hw.conf.channel->band); | 700 | sdata->local->hw.conf.channel->band); |
701 | sdata->drop_unencrypted = 0; | 701 | sdata->drop_unencrypted = 0; |
diff --git a/net/mac80211/main.c b/net/mac80211/main.c index 59be9e782699..ab8a860444af 100644 --- a/net/mac80211/main.c +++ b/net/mac80211/main.c | |||
@@ -249,15 +249,15 @@ void ieee80211_bss_info_change_notify(struct ieee80211_sub_if_data *sdata, | |||
249 | if (local->ops->bss_info_changed) | 249 | if (local->ops->bss_info_changed) |
250 | local->ops->bss_info_changed(local_to_hw(local), | 250 | local->ops->bss_info_changed(local_to_hw(local), |
251 | &sdata->vif, | 251 | &sdata->vif, |
252 | &sdata->bss_conf, | 252 | &sdata->vif.bss_conf, |
253 | changed); | 253 | changed); |
254 | } | 254 | } |
255 | 255 | ||
256 | u32 ieee80211_reset_erp_info(struct ieee80211_sub_if_data *sdata) | 256 | u32 ieee80211_reset_erp_info(struct ieee80211_sub_if_data *sdata) |
257 | { | 257 | { |
258 | sdata->bss_conf.use_cts_prot = false; | 258 | sdata->vif.bss_conf.use_cts_prot = false; |
259 | sdata->bss_conf.use_short_preamble = false; | 259 | sdata->vif.bss_conf.use_short_preamble = false; |
260 | sdata->bss_conf.use_short_slot = false; | 260 | sdata->vif.bss_conf.use_short_slot = false; |
261 | return BSS_CHANGED_ERP_CTS_PROT | | 261 | return BSS_CHANGED_ERP_CTS_PROT | |
262 | BSS_CHANGED_ERP_PREAMBLE | | 262 | BSS_CHANGED_ERP_PREAMBLE | |
263 | BSS_CHANGED_ERP_SLOT; | 263 | BSS_CHANGED_ERP_SLOT; |
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index 196dd39f6286..9c5f5c37a49e 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c | |||
@@ -572,7 +572,7 @@ static void ieee80211_sta_wmm_params(struct ieee80211_local *local, | |||
572 | static u32 ieee80211_handle_bss_capability(struct ieee80211_sub_if_data *sdata, | 572 | static u32 ieee80211_handle_bss_capability(struct ieee80211_sub_if_data *sdata, |
573 | u16 capab, bool erp_valid, u8 erp) | 573 | u16 capab, bool erp_valid, u8 erp) |
574 | { | 574 | { |
575 | struct ieee80211_bss_conf *bss_conf = &sdata->bss_conf; | 575 | struct ieee80211_bss_conf *bss_conf = &sdata->vif.bss_conf; |
576 | #ifdef CONFIG_MAC80211_VERBOSE_DEBUG | 576 | #ifdef CONFIG_MAC80211_VERBOSE_DEBUG |
577 | struct ieee80211_if_sta *ifsta = &sdata->u.sta; | 577 | struct ieee80211_if_sta *ifsta = &sdata->u.sta; |
578 | #endif | 578 | #endif |
@@ -718,9 +718,9 @@ static void ieee80211_set_associated(struct ieee80211_sub_if_data *sdata, | |||
718 | ifsta->ssid, ifsta->ssid_len); | 718 | ifsta->ssid, ifsta->ssid_len); |
719 | if (bss) { | 719 | if (bss) { |
720 | /* set timing information */ | 720 | /* set timing information */ |
721 | sdata->bss_conf.beacon_int = bss->beacon_int; | 721 | sdata->vif.bss_conf.beacon_int = bss->beacon_int; |
722 | sdata->bss_conf.timestamp = bss->timestamp; | 722 | sdata->vif.bss_conf.timestamp = bss->timestamp; |
723 | sdata->bss_conf.dtim_period = bss->dtim_period; | 723 | sdata->vif.bss_conf.dtim_period = bss->dtim_period; |
724 | 724 | ||
725 | changed |= ieee80211_handle_bss_capability(sdata, | 725 | changed |= ieee80211_handle_bss_capability(sdata, |
726 | bss->capability, bss->has_erp_value, bss->erp_value); | 726 | bss->capability, bss->has_erp_value, bss->erp_value); |
@@ -730,9 +730,9 @@ static void ieee80211_set_associated(struct ieee80211_sub_if_data *sdata, | |||
730 | 730 | ||
731 | if (conf->flags & IEEE80211_CONF_SUPPORT_HT_MODE) { | 731 | if (conf->flags & IEEE80211_CONF_SUPPORT_HT_MODE) { |
732 | changed |= BSS_CHANGED_HT; | 732 | changed |= BSS_CHANGED_HT; |
733 | sdata->bss_conf.assoc_ht = 1; | 733 | sdata->vif.bss_conf.assoc_ht = 1; |
734 | sdata->bss_conf.ht_cap = &conf->ht_cap; | 734 | sdata->vif.bss_conf.ht_cap = &conf->ht_cap; |
735 | sdata->bss_conf.ht_bss_conf = &conf->ht_bss_conf; | 735 | sdata->vif.bss_conf.ht_bss_conf = &conf->ht_bss_conf; |
736 | } | 736 | } |
737 | 737 | ||
738 | ifsta->flags |= IEEE80211_STA_PREV_BSSID_SET; | 738 | ifsta->flags |= IEEE80211_STA_PREV_BSSID_SET; |
@@ -742,7 +742,7 @@ static void ieee80211_set_associated(struct ieee80211_sub_if_data *sdata, | |||
742 | ifsta->last_probe = jiffies; | 742 | ifsta->last_probe = jiffies; |
743 | ieee80211_led_assoc(local, 1); | 743 | ieee80211_led_assoc(local, 1); |
744 | 744 | ||
745 | sdata->bss_conf.assoc = 1; | 745 | sdata->vif.bss_conf.assoc = 1; |
746 | /* | 746 | /* |
747 | * For now just always ask the driver to update the basic rateset | 747 | * For now just always ask the driver to update the basic rateset |
748 | * when we have associated, we aren't checking whether it actually | 748 | * when we have associated, we aren't checking whether it actually |
@@ -847,15 +847,15 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata, | |||
847 | ifsta->flags &= ~IEEE80211_STA_ASSOCIATED; | 847 | ifsta->flags &= ~IEEE80211_STA_ASSOCIATED; |
848 | changed |= ieee80211_reset_erp_info(sdata); | 848 | changed |= ieee80211_reset_erp_info(sdata); |
849 | 849 | ||
850 | if (sdata->bss_conf.assoc_ht) | 850 | if (sdata->vif.bss_conf.assoc_ht) |
851 | changed |= BSS_CHANGED_HT; | 851 | changed |= BSS_CHANGED_HT; |
852 | 852 | ||
853 | sdata->bss_conf.assoc_ht = 0; | 853 | sdata->vif.bss_conf.assoc_ht = 0; |
854 | sdata->bss_conf.ht_cap = NULL; | 854 | sdata->vif.bss_conf.ht_cap = NULL; |
855 | sdata->bss_conf.ht_bss_conf = NULL; | 855 | sdata->vif.bss_conf.ht_bss_conf = NULL; |
856 | 856 | ||
857 | ieee80211_led_assoc(local, 0); | 857 | ieee80211_led_assoc(local, 0); |
858 | sdata->bss_conf.assoc = 0; | 858 | sdata->vif.bss_conf.assoc = 0; |
859 | 859 | ||
860 | ieee80211_sta_send_apinfo(sdata, ifsta); | 860 | ieee80211_sta_send_apinfo(sdata, ifsta); |
861 | 861 | ||
@@ -1182,7 +1182,7 @@ static void ieee80211_rx_mgmt_assoc_resp(struct ieee80211_sub_if_data *sdata, | |||
1182 | u64 rates, basic_rates; | 1182 | u64 rates, basic_rates; |
1183 | u16 capab_info, status_code, aid; | 1183 | u16 capab_info, status_code, aid; |
1184 | struct ieee802_11_elems elems; | 1184 | struct ieee802_11_elems elems; |
1185 | struct ieee80211_bss_conf *bss_conf = &sdata->bss_conf; | 1185 | struct ieee80211_bss_conf *bss_conf = &sdata->vif.bss_conf; |
1186 | u8 *pos; | 1186 | u8 *pos; |
1187 | int i, j; | 1187 | int i, j; |
1188 | bool have_higher_than_11mbit = false; | 1188 | bool have_higher_than_11mbit = false; |
@@ -1324,7 +1324,7 @@ static void ieee80211_rx_mgmt_assoc_resp(struct ieee80211_sub_if_data *sdata, | |||
1324 | } | 1324 | } |
1325 | 1325 | ||
1326 | sta->sta.supp_rates[local->hw.conf.channel->band] = rates; | 1326 | sta->sta.supp_rates[local->hw.conf.channel->band] = rates; |
1327 | sdata->bss_conf.basic_rates = basic_rates; | 1327 | sdata->vif.bss_conf.basic_rates = basic_rates; |
1328 | 1328 | ||
1329 | /* cf. IEEE 802.11 9.2.12 */ | 1329 | /* cf. IEEE 802.11 9.2.12 */ |
1330 | if (local->hw.conf.channel->band == IEEE80211_BAND_2GHZ && | 1330 | if (local->hw.conf.channel->band == IEEE80211_BAND_2GHZ && |
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c index dd440a07634e..6f3e4be97631 100644 --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c | |||
@@ -116,7 +116,7 @@ static __le16 ieee80211_duration(struct ieee80211_tx_data *tx, int group_addr, | |||
116 | if (r->bitrate > txrate->bitrate) | 116 | if (r->bitrate > txrate->bitrate) |
117 | break; | 117 | break; |
118 | 118 | ||
119 | if (tx->sdata->bss_conf.basic_rates & BIT(i)) | 119 | if (tx->sdata->vif.bss_conf.basic_rates & BIT(i)) |
120 | rate = r->bitrate; | 120 | rate = r->bitrate; |
121 | 121 | ||
122 | switch (sband->band) { | 122 | switch (sband->band) { |
@@ -150,7 +150,7 @@ static __le16 ieee80211_duration(struct ieee80211_tx_data *tx, int group_addr, | |||
150 | * to closest integer */ | 150 | * to closest integer */ |
151 | 151 | ||
152 | dur = ieee80211_frame_duration(local, 10, rate, erp, | 152 | dur = ieee80211_frame_duration(local, 10, rate, erp, |
153 | tx->sdata->bss_conf.use_short_preamble); | 153 | tx->sdata->vif.bss_conf.use_short_preamble); |
154 | 154 | ||
155 | if (next_frag_len) { | 155 | if (next_frag_len) { |
156 | /* Frame is fragmented: duration increases with time needed to | 156 | /* Frame is fragmented: duration increases with time needed to |
@@ -159,7 +159,7 @@ static __le16 ieee80211_duration(struct ieee80211_tx_data *tx, int group_addr, | |||
159 | /* next fragment */ | 159 | /* next fragment */ |
160 | dur += ieee80211_frame_duration(local, next_frag_len, | 160 | dur += ieee80211_frame_duration(local, next_frag_len, |
161 | txrate->bitrate, erp, | 161 | txrate->bitrate, erp, |
162 | tx->sdata->bss_conf.use_short_preamble); | 162 | tx->sdata->vif.bss_conf.use_short_preamble); |
163 | } | 163 | } |
164 | 164 | ||
165 | return cpu_to_le16(dur); | 165 | return cpu_to_le16(dur); |
@@ -463,7 +463,7 @@ ieee80211_tx_h_rate_ctrl(struct ieee80211_tx_data *tx) | |||
463 | } else | 463 | } else |
464 | info->control.retries[0].rate_idx = -1; | 464 | info->control.retries[0].rate_idx = -1; |
465 | 465 | ||
466 | if (tx->sdata->bss_conf.use_cts_prot && | 466 | if (tx->sdata->vif.bss_conf.use_cts_prot && |
467 | (tx->flags & IEEE80211_TX_FRAGMENTED) && (rsel.nonerp_idx >= 0)) { | 467 | (tx->flags & IEEE80211_TX_FRAGMENTED) && (rsel.nonerp_idx >= 0)) { |
468 | tx->last_frag_rate_idx = tx->rate_idx; | 468 | tx->last_frag_rate_idx = tx->rate_idx; |
469 | if (rsel.probe_idx >= 0) | 469 | if (rsel.probe_idx >= 0) |
@@ -529,7 +529,7 @@ ieee80211_tx_h_misc(struct ieee80211_tx_data *tx) | |||
529 | if ((tx->sdata->flags & IEEE80211_SDATA_OPERATING_GMODE) && | 529 | if ((tx->sdata->flags & IEEE80211_SDATA_OPERATING_GMODE) && |
530 | (sband->bitrates[tx->rate_idx].flags & IEEE80211_RATE_ERP_G) && | 530 | (sband->bitrates[tx->rate_idx].flags & IEEE80211_RATE_ERP_G) && |
531 | (tx->flags & IEEE80211_TX_UNICAST) && | 531 | (tx->flags & IEEE80211_TX_UNICAST) && |
532 | tx->sdata->bss_conf.use_cts_prot && | 532 | tx->sdata->vif.bss_conf.use_cts_prot && |
533 | !(info->flags & IEEE80211_TX_CTL_USE_RTS_CTS)) | 533 | !(info->flags & IEEE80211_TX_CTL_USE_RTS_CTS)) |
534 | info->flags |= IEEE80211_TX_CTL_USE_CTS_PROTECT; | 534 | info->flags |= IEEE80211_TX_CTL_USE_CTS_PROTECT; |
535 | 535 | ||
@@ -538,7 +538,7 @@ ieee80211_tx_h_misc(struct ieee80211_tx_data *tx) | |||
538 | * available on the network at the current point in time. */ | 538 | * available on the network at the current point in time. */ |
539 | if (ieee80211_is_data(hdr->frame_control) && | 539 | if (ieee80211_is_data(hdr->frame_control) && |
540 | (sband->bitrates[tx->rate_idx].flags & IEEE80211_RATE_SHORT_PREAMBLE) && | 540 | (sband->bitrates[tx->rate_idx].flags & IEEE80211_RATE_SHORT_PREAMBLE) && |
541 | tx->sdata->bss_conf.use_short_preamble && | 541 | tx->sdata->vif.bss_conf.use_short_preamble && |
542 | (!tx->sta || test_sta_flags(tx->sta, WLAN_STA_SHORT_PREAMBLE))) { | 542 | (!tx->sta || test_sta_flags(tx->sta, WLAN_STA_SHORT_PREAMBLE))) { |
543 | info->flags |= IEEE80211_TX_CTL_SHORT_PREAMBLE; | 543 | info->flags |= IEEE80211_TX_CTL_SHORT_PREAMBLE; |
544 | } | 544 | } |
@@ -558,7 +558,7 @@ ieee80211_tx_h_misc(struct ieee80211_tx_data *tx) | |||
558 | for (idx = 0; idx < sband->n_bitrates; idx++) { | 558 | for (idx = 0; idx < sband->n_bitrates; idx++) { |
559 | if (sband->bitrates[idx].bitrate > rate->bitrate) | 559 | if (sband->bitrates[idx].bitrate > rate->bitrate) |
560 | continue; | 560 | continue; |
561 | if (tx->sdata->bss_conf.basic_rates & BIT(idx) && | 561 | if (tx->sdata->vif.bss_conf.basic_rates & BIT(idx) && |
562 | (baserate < 0 || | 562 | (baserate < 0 || |
563 | (sband->bitrates[baserate].bitrate | 563 | (sband->bitrates[baserate].bitrate |
564 | < sband->bitrates[idx].bitrate))) | 564 | < sband->bitrates[idx].bitrate))) |
@@ -1977,7 +1977,7 @@ struct sk_buff *ieee80211_beacon_get(struct ieee80211_hw *hw, | |||
1977 | info->flags |= IEEE80211_TX_CTL_NO_ACK; | 1977 | info->flags |= IEEE80211_TX_CTL_NO_ACK; |
1978 | info->flags |= IEEE80211_TX_CTL_CLEAR_PS_FILT; | 1978 | info->flags |= IEEE80211_TX_CTL_CLEAR_PS_FILT; |
1979 | info->flags |= IEEE80211_TX_CTL_ASSIGN_SEQ; | 1979 | info->flags |= IEEE80211_TX_CTL_ASSIGN_SEQ; |
1980 | if (sdata->bss_conf.use_short_preamble && | 1980 | if (sdata->vif.bss_conf.use_short_preamble && |
1981 | sband->bitrates[rsel.rate_idx].flags & IEEE80211_RATE_SHORT_PREAMBLE) | 1981 | sband->bitrates[rsel.rate_idx].flags & IEEE80211_RATE_SHORT_PREAMBLE) |
1982 | info->flags |= IEEE80211_TX_CTL_SHORT_PREAMBLE; | 1982 | info->flags |= IEEE80211_TX_CTL_SHORT_PREAMBLE; |
1983 | 1983 | ||
diff --git a/net/mac80211/util.c b/net/mac80211/util.c index 3288c3de67ca..ec8b6335f0c1 100644 --- a/net/mac80211/util.c +++ b/net/mac80211/util.c | |||
@@ -239,7 +239,7 @@ __le16 ieee80211_generic_frame_duration(struct ieee80211_hw *hw, | |||
239 | erp = 0; | 239 | erp = 0; |
240 | if (vif) { | 240 | if (vif) { |
241 | sdata = vif_to_sdata(vif); | 241 | sdata = vif_to_sdata(vif); |
242 | short_preamble = sdata->bss_conf.use_short_preamble; | 242 | short_preamble = sdata->vif.bss_conf.use_short_preamble; |
243 | if (sdata->flags & IEEE80211_SDATA_OPERATING_GMODE) | 243 | if (sdata->flags & IEEE80211_SDATA_OPERATING_GMODE) |
244 | erp = rate->flags & IEEE80211_RATE_ERP_G; | 244 | erp = rate->flags & IEEE80211_RATE_ERP_G; |
245 | } | 245 | } |
@@ -272,7 +272,7 @@ __le16 ieee80211_rts_duration(struct ieee80211_hw *hw, | |||
272 | erp = 0; | 272 | erp = 0; |
273 | if (vif) { | 273 | if (vif) { |
274 | sdata = vif_to_sdata(vif); | 274 | sdata = vif_to_sdata(vif); |
275 | short_preamble = sdata->bss_conf.use_short_preamble; | 275 | short_preamble = sdata->vif.bss_conf.use_short_preamble; |
276 | if (sdata->flags & IEEE80211_SDATA_OPERATING_GMODE) | 276 | if (sdata->flags & IEEE80211_SDATA_OPERATING_GMODE) |
277 | erp = rate->flags & IEEE80211_RATE_ERP_G; | 277 | erp = rate->flags & IEEE80211_RATE_ERP_G; |
278 | } | 278 | } |
@@ -312,7 +312,7 @@ __le16 ieee80211_ctstoself_duration(struct ieee80211_hw *hw, | |||
312 | erp = 0; | 312 | erp = 0; |
313 | if (vif) { | 313 | if (vif) { |
314 | sdata = vif_to_sdata(vif); | 314 | sdata = vif_to_sdata(vif); |
315 | short_preamble = sdata->bss_conf.use_short_preamble; | 315 | short_preamble = sdata->vif.bss_conf.use_short_preamble; |
316 | if (sdata->flags & IEEE80211_SDATA_OPERATING_GMODE) | 316 | if (sdata->flags & IEEE80211_SDATA_OPERATING_GMODE) |
317 | erp = rate->flags & IEEE80211_RATE_ERP_G; | 317 | erp = rate->flags & IEEE80211_RATE_ERP_G; |
318 | } | 318 | } |