Get maximum TX power for each allowed channel from mac80211

This commit is contained in:
Jouni Malinen 2008-11-25 11:11:50 +02:00 committed by Jouni Malinen
parent b3e7a97df0
commit bf01d8bc2b
3 changed files with 15 additions and 2 deletions

View file

@ -1316,6 +1316,9 @@ static int phy_info_handler(struct nl_msg *msg, void *arg)
[NL80211_FREQUENCY_ATTR_PASSIVE_SCAN] = { .type = NLA_FLAG }, [NL80211_FREQUENCY_ATTR_PASSIVE_SCAN] = { .type = NLA_FLAG },
[NL80211_FREQUENCY_ATTR_NO_IBSS] = { .type = NLA_FLAG }, [NL80211_FREQUENCY_ATTR_NO_IBSS] = { .type = NLA_FLAG },
[NL80211_FREQUENCY_ATTR_RADAR] = { .type = NLA_FLAG }, [NL80211_FREQUENCY_ATTR_RADAR] = { .type = NLA_FLAG },
#ifdef NL80211_FREQUENCY_ATTR_MAX_TX_POWER
[NL80211_FREQUENCY_ATTR_MAX_TX_POWER] = { .type = NLA_U32 },
#endif /* NL80211_FREQUENCY_ATTR_MAX_TX_POWER */
}; };
struct nlattr *tb_rate[NL80211_BITRATE_ATTR_MAX + 1]; struct nlattr *tb_rate[NL80211_BITRATE_ATTR_MAX + 1];
@ -1405,6 +1408,14 @@ static int phy_info_handler(struct nl_msg *msg, void *arg)
if (tb_freq[NL80211_FREQUENCY_ATTR_RADAR]) if (tb_freq[NL80211_FREQUENCY_ATTR_RADAR])
mode->channels[idx].flag |= mode->channels[idx].flag |=
HOSTAPD_CHAN_RADAR; HOSTAPD_CHAN_RADAR;
#ifdef NL80211_FREQUENCY_ATTR_MAX_TX_POWER
if (tb_freq[NL80211_FREQUENCY_ATTR_MAX_TX_POWER] &&
!tb_freq[NL80211_FREQUENCY_ATTR_DISABLED])
mode->channels[idx].max_tx_power =
nla_get_u32(tb_freq[NL80211_FREQUENCY_ATTR_MAX_TX_POWER]) / 100;
#endif /* NL80211_FREQUENCY_ATTR_MAX_TX_POWER */
idx++; idx++;
} }

View file

@ -84,10 +84,11 @@ int hostapd_get_hw_features(struct hostapd_iface *iface)
if (feature->channels[j].flag & HOSTAPD_CHAN_DISABLED) if (feature->channels[j].flag & HOSTAPD_CHAN_DISABLED)
continue; continue;
wpa_printf(MSG_MSGDUMP, "Allowed channel: mode=%d " wpa_printf(MSG_MSGDUMP, "Allowed channel: mode=%d "
"chan=%d freq=%d MHz", "chan=%d freq=%d MHz max_tx_power=%d dBm",
feature->mode, feature->mode,
feature->channels[j].chan, feature->channels[j].chan,
feature->channels[j].freq); feature->channels[j].freq,
feature->channels[j].max_tx_power);
} }
} }

View file

@ -25,6 +25,7 @@ struct hostapd_channel_data {
short chan; /* channel number (IEEE 802.11) */ short chan; /* channel number (IEEE 802.11) */
short freq; /* frequency in MHz */ short freq; /* frequency in MHz */
int flag; /* flag for hostapd use (HOSTAPD_CHAN_*) */ int flag; /* flag for hostapd use (HOSTAPD_CHAN_*) */
u8 max_tx_power; /* maximum transmit power in dBm */
}; };
#define HOSTAPD_RATE_ERP 0x00000001 #define HOSTAPD_RATE_ERP 0x00000001