aboutsummaryrefslogtreecommitdiffstats
path: root/net/wireless/nl80211.c
diff options
context:
space:
mode:
authorLuis R. Rodriguez <lrodriguez@atheros.com>2009-04-02 14:08:08 -0400
committerJohn W. Linville <linville@tuxdriver.com>2009-04-22 16:54:40 -0400
commit5dab3b8a68cc97a7e6b9f79f5de05803c8e55a3c (patch)
tree8f44660bdb4a760fa67240d9c44f99eb0ce6aeaa /net/wireless/nl80211.c
parenta4ed90d60c39c5aef9a170d7693f61175acb22e0 (diff)
cfg80211: add netlink channel put helper
This adds a netlink channel put helper, nl80211_msg_put_channel(), which we will also make use of later for the beacon hints events. Acked-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/wireless/nl80211.c')
-rw-r--r--net/wireless/nl80211.c41
1 files changed, 27 insertions, 14 deletions
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 68c51022e9dd..7285bdc4e598 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -156,6 +156,30 @@ static inline void *nl80211hdr_put(struct sk_buff *skb, u32 pid, u32 seq,
156 return genlmsg_put(skb, pid, seq, &nl80211_fam, flags, cmd); 156 return genlmsg_put(skb, pid, seq, &nl80211_fam, flags, cmd);
157} 157}
158 158
159static int nl80211_msg_put_channel(struct sk_buff *msg,
160 struct ieee80211_channel *chan)
161{
162 NLA_PUT_U32(msg, NL80211_FREQUENCY_ATTR_FREQ,
163 chan->center_freq);
164
165 if (chan->flags & IEEE80211_CHAN_DISABLED)
166 NLA_PUT_FLAG(msg, NL80211_FREQUENCY_ATTR_DISABLED);
167 if (chan->flags & IEEE80211_CHAN_PASSIVE_SCAN)
168 NLA_PUT_FLAG(msg, NL80211_FREQUENCY_ATTR_PASSIVE_SCAN);
169 if (chan->flags & IEEE80211_CHAN_NO_IBSS)
170 NLA_PUT_FLAG(msg, NL80211_FREQUENCY_ATTR_NO_IBSS);
171 if (chan->flags & IEEE80211_CHAN_RADAR)
172 NLA_PUT_FLAG(msg, NL80211_FREQUENCY_ATTR_RADAR);
173
174 NLA_PUT_U32(msg, NL80211_FREQUENCY_ATTR_MAX_TX_POWER,
175 DBM_TO_MBM(chan->max_power));
176
177 return 0;
178
179 nla_put_failure:
180 return -ENOBUFS;
181}
182
159/* netlink command implementations */ 183/* netlink command implementations */
160 184
161static int nl80211_send_wiphy(struct sk_buff *msg, u32 pid, u32 seq, int flags, 185static int nl80211_send_wiphy(struct sk_buff *msg, u32 pid, u32 seq, int flags,
@@ -234,20 +258,9 @@ static int nl80211_send_wiphy(struct sk_buff *msg, u32 pid, u32 seq, int flags,
234 goto nla_put_failure; 258 goto nla_put_failure;
235 259
236 chan = &dev->wiphy.bands[band]->channels[i]; 260 chan = &dev->wiphy.bands[band]->channels[i];
237 NLA_PUT_U32(msg, NL80211_FREQUENCY_ATTR_FREQ, 261
238 chan->center_freq); 262 if (nl80211_msg_put_channel(msg, chan))
239 263 goto nla_put_failure;
240 if (chan->flags & IEEE80211_CHAN_DISABLED)
241 NLA_PUT_FLAG(msg, NL80211_FREQUENCY_ATTR_DISABLED);
242 if (chan->flags & IEEE80211_CHAN_PASSIVE_SCAN)
243 NLA_PUT_FLAG(msg, NL80211_FREQUENCY_ATTR_PASSIVE_SCAN);
244 if (chan->flags & IEEE80211_CHAN_NO_IBSS)
245 NLA_PUT_FLAG(msg, NL80211_FREQUENCY_ATTR_NO_IBSS);
246 if (chan->flags & IEEE80211_CHAN_RADAR)
247 NLA_PUT_FLAG(msg, NL80211_FREQUENCY_ATTR_RADAR);
248
249 NLA_PUT_U32(msg, NL80211_FREQUENCY_ATTR_MAX_TX_POWER,
250 DBM_TO_MBM(chan->max_power));
251 264
252 nla_nest_end(msg, nl_freq); 265 nla_nest_end(msg, nl_freq);
253 } 266 }