mac80211: implement set_mcast_rate() callback

This new callback can be used to tune the rate to be used to send
multicast frames.

In the current state the multicast rate can be specified on IBSS/MESH
joining only. This makes it impossible to select a custom multicast
rate when then join command is sent by an external program (e.g.
wpa_supplicant)

Signed-off-by: Antonio Quartulli <ordex@autistici.org>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
Antonio Quartulli 2012-11-02 13:27:49 +01:00 committed by Johannes Berg
parent f4e583c893
commit 391e53e33f

View File

@ -1954,6 +1954,16 @@ static int ieee80211_leave_ibss(struct wiphy *wiphy, struct net_device *dev)
return ieee80211_ibss_leave(IEEE80211_DEV_TO_SUB_IF(dev)); return ieee80211_ibss_leave(IEEE80211_DEV_TO_SUB_IF(dev));
} }
static int ieee80211_set_mcast_rate(struct wiphy *wiphy, struct net_device *dev,
int rate[IEEE80211_NUM_BANDS])
{
struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
memcpy(sdata->vif.bss_conf.mcast_rate, rate, sizeof(rate));
return 0;
}
static int ieee80211_set_wiphy_params(struct wiphy *wiphy, u32 changed) static int ieee80211_set_wiphy_params(struct wiphy *wiphy, u32 changed)
{ {
struct ieee80211_local *local = wiphy_priv(wiphy); struct ieee80211_local *local = wiphy_priv(wiphy);
@ -3180,6 +3190,7 @@ struct cfg80211_ops mac80211_config_ops = {
.disassoc = ieee80211_disassoc, .disassoc = ieee80211_disassoc,
.join_ibss = ieee80211_join_ibss, .join_ibss = ieee80211_join_ibss,
.leave_ibss = ieee80211_leave_ibss, .leave_ibss = ieee80211_leave_ibss,
.set_mcast_rate = ieee80211_set_mcast_rate,
.set_wiphy_params = ieee80211_set_wiphy_params, .set_wiphy_params = ieee80211_set_wiphy_params,
.set_tx_power = ieee80211_set_tx_power, .set_tx_power = ieee80211_set_tx_power,
.get_tx_power = ieee80211_get_tx_power, .get_tx_power = ieee80211_get_tx_power,