mac802154.h (57205c14ca9147c1907556f77998cf82624d9fd6) mac802154.h (5a50439775853a8d565115edb63a5ab4bb780479)
1/*
2 * IEEE802.15.4-2003 specification
3 *
4 * Copyright (C) 2007-2012 Siemens AG
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2
8 * as published by the Free Software Foundation.

--- 38 unchanged lines hidden (view full) ---

47 * addresses and enables transmissions between
48 * devices across independent networks.
49 */
50 __le16 short_addr;
51 __le64 ieee_addr;
52 u8 pan_coord;
53};
54
1/*
2 * IEEE802.15.4-2003 specification
3 *
4 * Copyright (C) 2007-2012 Siemens AG
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2
8 * as published by the Free Software Foundation.

--- 38 unchanged lines hidden (view full) ---

47 * addresses and enables transmissions between
48 * devices across independent networks.
49 */
50 __le16 short_addr;
51 __le64 ieee_addr;
52 u8 pan_coord;
53};
54
55struct ieee802154_dev {
55struct ieee802154_hw {
56 /* filled by the driver */
57 int extra_tx_headroom;
58 u32 flags;
59 struct device *parent;
60
61 /* filled by mac802154 core */
62 struct ieee802154_hw_addr_filt hw_filt;
63 void *priv;

--- 90 unchanged lines hidden (view full) ---

154 * Returns either zero, or negative errno.
155 *
156 * set_frame_retries
157 * Sets the retransmission attempt limit. Called with pib_lock held.
158 * Returns either zero, or negative errno.
159 */
160struct ieee802154_ops {
161 struct module *owner;
56 /* filled by the driver */
57 int extra_tx_headroom;
58 u32 flags;
59 struct device *parent;
60
61 /* filled by mac802154 core */
62 struct ieee802154_hw_addr_filt hw_filt;
63 void *priv;

--- 90 unchanged lines hidden (view full) ---

154 * Returns either zero, or negative errno.
155 *
156 * set_frame_retries
157 * Sets the retransmission attempt limit. Called with pib_lock held.
158 * Returns either zero, or negative errno.
159 */
160struct ieee802154_ops {
161 struct module *owner;
162 int (*start)(struct ieee802154_dev *dev);
163 void (*stop)(struct ieee802154_dev *dev);
164 int (*xmit)(struct ieee802154_dev *dev,
162 int (*start)(struct ieee802154_hw *hw);
163 void (*stop)(struct ieee802154_hw *hw);
164 int (*xmit)(struct ieee802154_hw *hw,
165 struct sk_buff *skb);
165 struct sk_buff *skb);
166 int (*ed)(struct ieee802154_dev *dev, u8 *level);
167 int (*set_channel)(struct ieee802154_dev *dev,
166 int (*ed)(struct ieee802154_hw *hw, u8 *level);
167 int (*set_channel)(struct ieee802154_hw *hw,
168 int page,
169 int channel);
168 int page,
169 int channel);
170 int (*set_hw_addr_filt)(struct ieee802154_dev *dev,
171 struct ieee802154_hw_addr_filt *filt,
170 int (*set_hw_addr_filt)(struct ieee802154_hw *hw,
171 struct ieee802154_hw_addr_filt *filt,
172 unsigned long changed);
172 unsigned long changed);
173 int (*ieee_addr)(struct ieee802154_dev *dev, __le64 addr);
174 int (*set_txpower)(struct ieee802154_dev *dev, int db);
175 int (*set_lbt)(struct ieee802154_dev *dev, bool on);
176 int (*set_cca_mode)(struct ieee802154_dev *dev, u8 mode);
177 int (*set_cca_ed_level)(struct ieee802154_dev *dev,
173 int (*ieee_addr)(struct ieee802154_hw *hw, __le64 addr);
174 int (*set_txpower)(struct ieee802154_hw *hw, int db);
175 int (*set_lbt)(struct ieee802154_hw *hw, bool on);
176 int (*set_cca_mode)(struct ieee802154_hw *hw, u8 mode);
177 int (*set_cca_ed_level)(struct ieee802154_hw *hw,
178 s32 level);
178 s32 level);
179 int (*set_csma_params)(struct ieee802154_dev *dev,
179 int (*set_csma_params)(struct ieee802154_hw *hw,
180 u8 min_be, u8 max_be, u8 retries);
180 u8 min_be, u8 max_be, u8 retries);
181 int (*set_frame_retries)(struct ieee802154_dev *dev,
181 int (*set_frame_retries)(struct ieee802154_hw *hw,
182 s8 retries);
183};
184
182 s8 retries);
183};
184
185/* Basic interface to register ieee802154 device */
186struct ieee802154_dev *
187ieee802154_alloc_device(size_t priv_data_len, struct ieee802154_ops *ops);
188void ieee802154_free_device(struct ieee802154_dev *dev);
189int ieee802154_register_device(struct ieee802154_dev *dev);
190void ieee802154_unregister_device(struct ieee802154_dev *dev);
185/* Basic interface to register ieee802154 hwice */
186struct ieee802154_hw *
187ieee802154_alloc_hw(size_t priv_data_len, struct ieee802154_ops *ops);
188void ieee802154_free_hw(struct ieee802154_hw *hw);
189int ieee802154_register_hw(struct ieee802154_hw *hw);
190void ieee802154_unregister_hw(struct ieee802154_hw *hw);
191
191
192void ieee802154_rx_irqsafe(struct ieee802154_dev *dev, struct sk_buff *skb,
192void ieee802154_rx_irqsafe(struct ieee802154_hw *hw, struct sk_buff *skb,
193 u8 lqi);
194
195#endif /* NET_MAC802154_H */
193 u8 lqi);
194
195#endif /* NET_MAC802154_H */