1010f540 |
1 | /* |
2 | * Copyright (C) 2007-2012 Siemens AG |
3 | * |
4 | * This program is free software; you can redistribute it and/or modify |
5 | * it under the terms of the GNU General Public License version 2 |
6 | * as published by the Free Software Foundation. |
7 | * |
8 | * This program is distributed in the hope that it will be useful, |
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
11 | * GNU General Public License for more details. |
12 | * |
13 | * You should have received a copy of the GNU General Public License along |
14 | * with this program; if not, write to the Free Software Foundation, Inc., |
15 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
16 | * |
17 | * Written by: |
18 | * Pavel Smolenskiy <pavel.smolenskiy@gmail.com> |
19 | * Maxim Gorbachyov <maxim.gorbachev@siemens.com> |
20 | * Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> |
21 | * Alexander Smirnov <alex.bluesman.smirnov@gmail.com> |
22 | */ |
23 | #ifndef MAC802154_H |
24 | #define MAC802154_H |
25 | |
26 | /* mac802154 device private data */ |
27 | struct mac802154_priv { |
28 | struct ieee802154_dev hw; |
29 | struct ieee802154_ops *ops; |
30 | |
31 | /* ieee802154 phy */ |
32 | struct wpan_phy *phy; |
33 | |
34 | int open_count; |
35 | |
36 | /* As in mac80211 slaves list is modified: |
37 | * 1) under the RTNL |
38 | * 2) protected by slaves_mtx; |
39 | * 3) in an RCU manner |
40 | * |
41 | * So atomic readers can use any of this protection methods. |
42 | */ |
43 | struct list_head slaves; |
44 | struct mutex slaves_mtx; |
45 | |
46 | /* This one is used for scanning and other jobs not to be interfered |
47 | * with serial driver. |
48 | */ |
49 | struct workqueue_struct *dev_workqueue; |
50 | |
51 | /* SoftMAC device is registered and running. One can add subinterfaces. |
52 | * This flag should be modified under slaves_mtx and RTNL, so you can |
53 | * read them using any of protection methods. |
54 | */ |
55 | bool running; |
56 | }; |
57 | |
58 | #define MAC802154_DEVICE_STOPPED 0x00 |
59 | #define MAC802154_DEVICE_RUN 0x01 |
60 | |
61 | #define mac802154_to_priv(_hw) container_of(_hw, struct mac802154_priv, hw) |
62 | |
63 | #endif /* MAC802154_H */ |