diff options
author | Johannes Berg <johannes@sipsolutions.net> | 2007-12-18 20:03:32 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-01-28 17:59:50 -0500 |
commit | ed1b6cc7f80f831e192704b05b9917f9cc37be15 (patch) | |
tree | 24a95282d3cb88c42b08a6ef1d6e9f02cce90c6e /include | |
parent | 62da92fb75c346b503bca765fd1337e08771c9fe (diff) |
cfg80211/nl80211: add beacon settings
This adds the necessary API to cfg80211/nl80211 to allow
changing beaconing settings.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/nl80211.h | 24 | ||||
-rw-r--r-- | include/net/cfg80211.h | 33 |
2 files changed, 57 insertions, 0 deletions
diff --git a/include/linux/nl80211.h b/include/linux/nl80211.h index 8dc807d9c29a..f1e455a8b4de 100644 --- a/include/linux/nl80211.h +++ b/include/linux/nl80211.h | |||
@@ -47,6 +47,15 @@ | |||
47 | * @NL80211_CMD_DEL_KEY: delete a key identified by %NL80211_ATTR_KEY_IDX | 47 | * @NL80211_CMD_DEL_KEY: delete a key identified by %NL80211_ATTR_KEY_IDX |
48 | * or %NL80211_ATTR_MAC. | 48 | * or %NL80211_ATTR_MAC. |
49 | * | 49 | * |
50 | * @NL80211_CMD_GET_BEACON: retrieve beacon information (returned in a | ||
51 | * %NL80222_CMD_NEW_BEACON message) | ||
52 | * @NL80211_CMD_SET_BEACON: set the beacon on an access point interface | ||
53 | * using the %NL80211_ATTR_BEACON_INTERVAL, %NL80211_ATTR_DTIM_PERIOD, | ||
54 | * %NL80211_BEACON_HEAD and %NL80211_BEACON_TAIL attributes. | ||
55 | * @NL80211_CMD_NEW_BEACON: add a new beacon to an access point interface, | ||
56 | * parameters are like for %NL80211_CMD_SET_BEACON. | ||
57 | * @NL80211_CMD_DEL_BEACON: remove the beacon, stop sending it | ||
58 | * | ||
50 | * @NL80211_CMD_MAX: highest used command number | 59 | * @NL80211_CMD_MAX: highest used command number |
51 | * @__NL80211_CMD_AFTER_LAST: internal use | 60 | * @__NL80211_CMD_AFTER_LAST: internal use |
52 | */ | 61 | */ |
@@ -69,6 +78,11 @@ enum nl80211_commands { | |||
69 | NL80211_CMD_NEW_KEY, | 78 | NL80211_CMD_NEW_KEY, |
70 | NL80211_CMD_DEL_KEY, | 79 | NL80211_CMD_DEL_KEY, |
71 | 80 | ||
81 | NL80211_CMD_GET_BEACON, | ||
82 | NL80211_CMD_SET_BEACON, | ||
83 | NL80211_CMD_NEW_BEACON, | ||
84 | NL80211_CMD_DEL_BEACON, | ||
85 | |||
72 | /* add commands here */ | 86 | /* add commands here */ |
73 | 87 | ||
74 | /* used to define NL80211_CMD_MAX below */ | 88 | /* used to define NL80211_CMD_MAX below */ |
@@ -101,6 +115,11 @@ enum nl80211_commands { | |||
101 | * @NL80211_ATTR_KEY_SEQ: transmit key sequence number (IV/PN) for TKIP and | 115 | * @NL80211_ATTR_KEY_SEQ: transmit key sequence number (IV/PN) for TKIP and |
102 | * CCMP keys, each six bytes in little endian | 116 | * CCMP keys, each six bytes in little endian |
103 | * | 117 | * |
118 | * @NL80211_ATTR_BEACON_INTERVAL: beacon interval in TU | ||
119 | * @NL80211_ATTR_DTIM_PERIOD: DTIM period for beaconing | ||
120 | * @NL80211_ATTR_BEACON_HEAD: portion of the beacon before the TIM IE | ||
121 | * @NL80211_ATTR_BEACON_TAIL: portion of the beacon after the TIM IE | ||
122 | * | ||
104 | * @NL80211_ATTR_MAX: highest attribute number currently defined | 123 | * @NL80211_ATTR_MAX: highest attribute number currently defined |
105 | * @__NL80211_ATTR_AFTER_LAST: internal use | 124 | * @__NL80211_ATTR_AFTER_LAST: internal use |
106 | */ | 125 | */ |
@@ -123,6 +142,11 @@ enum nl80211_attrs { | |||
123 | NL80211_ATTR_KEY_SEQ, | 142 | NL80211_ATTR_KEY_SEQ, |
124 | NL80211_ATTR_KEY_DEFAULT, | 143 | NL80211_ATTR_KEY_DEFAULT, |
125 | 144 | ||
145 | NL80211_ATTR_BEACON_INTERVAL, | ||
146 | NL80211_ATTR_DTIM_PERIOD, | ||
147 | NL80211_ATTR_BEACON_HEAD, | ||
148 | NL80211_ATTR_BEACON_TAIL, | ||
149 | |||
126 | /* add attributes here, update the policy in nl80211.c */ | 150 | /* add attributes here, update the policy in nl80211.c */ |
127 | 151 | ||
128 | __NL80211_ATTR_AFTER_LAST, | 152 | __NL80211_ATTR_AFTER_LAST, |
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index 3db7dfa53b6f..fc94852e967b 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h | |||
@@ -69,6 +69,26 @@ struct key_params { | |||
69 | u32 cipher; | 69 | u32 cipher; |
70 | }; | 70 | }; |
71 | 71 | ||
72 | /** | ||
73 | * struct beacon_parameters - beacon parameters | ||
74 | * | ||
75 | * Used to configure the beacon for an interface. | ||
76 | * | ||
77 | * @head: head portion of beacon (before TIM IE) | ||
78 | * or %NULL if not changed | ||
79 | * @tail: tail portion of beacon (after TIM IE) | ||
80 | * or %NULL if not changed | ||
81 | * @interval: beacon interval or zero if not changed | ||
82 | * @dtim_period: DTIM period or zero if not changed | ||
83 | * @head_len: length of @head | ||
84 | * @tail_len: length of @tail | ||
85 | */ | ||
86 | struct beacon_parameters { | ||
87 | u8 *head, *tail; | ||
88 | int interval, dtim_period; | ||
89 | int head_len, tail_len; | ||
90 | }; | ||
91 | |||
72 | /* from net/wireless.h */ | 92 | /* from net/wireless.h */ |
73 | struct wiphy; | 93 | struct wiphy; |
74 | 94 | ||
@@ -103,6 +123,13 @@ struct wiphy; | |||
103 | * and @key_index | 123 | * and @key_index |
104 | * | 124 | * |
105 | * @set_default_key: set the default key on an interface | 125 | * @set_default_key: set the default key on an interface |
126 | * | ||
127 | * @add_beacon: Add a beacon with given parameters, @head, @interval | ||
128 | * and @dtim_period will be valid, @tail is optional. | ||
129 | * @set_beacon: Change the beacon parameters for an access point mode | ||
130 | * interface. This should reject the call when no beacon has been | ||
131 | * configured. | ||
132 | * @del_beacon: Remove beacon configuration and stop sending the beacon. | ||
106 | */ | 133 | */ |
107 | struct cfg80211_ops { | 134 | struct cfg80211_ops { |
108 | int (*add_virtual_intf)(struct wiphy *wiphy, char *name, | 135 | int (*add_virtual_intf)(struct wiphy *wiphy, char *name, |
@@ -122,6 +149,12 @@ struct cfg80211_ops { | |||
122 | int (*set_default_key)(struct wiphy *wiphy, | 149 | int (*set_default_key)(struct wiphy *wiphy, |
123 | struct net_device *netdev, | 150 | struct net_device *netdev, |
124 | u8 key_index); | 151 | u8 key_index); |
152 | |||
153 | int (*add_beacon)(struct wiphy *wiphy, struct net_device *dev, | ||
154 | struct beacon_parameters *info); | ||
155 | int (*set_beacon)(struct wiphy *wiphy, struct net_device *dev, | ||
156 | struct beacon_parameters *info); | ||
157 | int (*del_beacon)(struct wiphy *wiphy, struct net_device *dev); | ||
125 | }; | 158 | }; |
126 | 159 | ||
127 | #endif /* __NET_CFG80211_H */ | 160 | #endif /* __NET_CFG80211_H */ |