This way, you don't need to pass vif to ieee80211_rts_duration. diff --git a/include/net/mac80211.h b/include/net/mac80211.h index fe8b9da..5d3de80 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h @@ -321,6 +321,8 @@ struct ieee80211_bss_conf { * @IEEE80211_TX_CTL_LDPC: tells the driver to use LDPC for this frame * @IEEE80211_TX_CTL_STBC: Enables Space-Time Block Coding (STBC) for this * frame and selects the maximum number of streams that it can use. + * @IEEE80211_TX_SHORT_PREAMBLE: Sdata->vif is configured for short_preamble. + * @IEEE80211_TX_GMODE: Sdata is configured for GMode. * * Note: If you have to add new flags to the enumeration, then don't * forget to update %IEEE80211_TX_TEMPORARY_FLAGS when necessary. @@ -349,6 +351,8 @@ enum mac80211_tx_control_flags { IEEE80211_TX_INTFL_NL80211_FRAME_TX = BIT(21), IEEE80211_TX_CTL_LDPC = BIT(22), IEEE80211_TX_CTL_STBC = BIT(23) | BIT(24), + IEEE80211_TX_SHORT_PREABLE = BIT(25), + IEEE80211_TX_GMODE = BIT(26), }; #define IEEE80211_TX_CTL_STBC_SHIFT 23 diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c index e1733dc..0ed22b5 100644 --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c @@ -1264,6 +1264,14 @@ ieee80211_tx_prepare(struct ieee80211_sub_if_data *sdata, } info->flags |= IEEE80211_TX_CTL_FIRST_FRAGMENT; + /* Set this here so drivers don't need to reference vif + * when calling ieee80211_rts_duration + */ + if (sdata->vif.bss_conf.use_short_preamble) + tx.flags |= IEEE80211_TX_SHORT_PREABLE; + if (sdata->flags & IEEE80211_SDATA_OPERATING_GMODE) + tx.flags |= IEEE80211_TX_GMODE + return TX_CONTINUE; } diff --git a/net/mac80211/util.c b/net/mac80211/util.c index aba025d..bd2227d 100644 --- a/net/mac80211/util.c +++ b/net/mac80211/util.c @@ -209,6 +209,10 @@ __le16 ieee80211_rts_duration(struct ieee80211_hw *hw, short_preamble = sdata->vif.bss_conf.use_short_preamble; if (sdata->flags & IEEE80211_SDATA_OPERATING_GMODE) erp = rate->flags & IEEE80211_RATE_ERP_G; + } else { + short_preamble = !!(frame_txctl->flags & IEEE80211_TX_SHORT_PREABLE); + if (frame_txctl->flags & IEEE80211_TX_GMODE) + erp = rate->flags & IEEE80211_RATE_ERP_G; } /* CTS duration */ -- Ben Greear <greearb@xxxxxxxxxxxxxxx> Candela Technologies Inc http://www.candelatech.com -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html