| alex.bluesman.smirnov@gmail.com | 1010f54 | 2012-05-15 20:50:20 +0000 | [diff] [blame] | 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 |  | 
| alex.bluesman.smirnov@gmail.com | 4d23c9c | 2012-05-15 20:50:24 +0000 | [diff] [blame] | 61 | /* Slave interface definition. | 
|  | 62 | * | 
|  | 63 | * Slaves represent typical network interfaces available from userspace. | 
|  | 64 | * Each ieee802154 device/transceiver may have several slaves and able | 
|  | 65 | * to be associated with several networks at the same time. | 
|  | 66 | */ | 
|  | 67 | struct mac802154_sub_if_data { | 
|  | 68 | struct list_head list; /* the ieee802154_priv->slaves list */ | 
|  | 69 |  | 
|  | 70 | struct mac802154_priv *hw; | 
|  | 71 | struct net_device *dev; | 
|  | 72 |  | 
|  | 73 | int type; | 
|  | 74 |  | 
|  | 75 | spinlock_t mib_lock; | 
|  | 76 |  | 
|  | 77 | __le16 pan_id; | 
|  | 78 | __le16 short_addr; | 
|  | 79 |  | 
|  | 80 | u8 chan; | 
|  | 81 | u8 page; | 
|  | 82 |  | 
|  | 83 | /* MAC BSN field */ | 
|  | 84 | u8 bsn; | 
|  | 85 | /* MAC DSN field */ | 
|  | 86 | u8 dsn; | 
|  | 87 | }; | 
|  | 88 |  | 
| alex.bluesman.smirnov@gmail.com | 1010f54 | 2012-05-15 20:50:20 +0000 | [diff] [blame] | 89 | #define mac802154_to_priv(_hw)	container_of(_hw, struct mac802154_priv, hw) | 
|  | 90 |  | 
| alex.bluesman.smirnov@gmail.com | 5b641eb | 2012-05-15 20:50:22 +0000 | [diff] [blame] | 91 | #define MAC802154_MAX_XMIT_ATTEMPTS	3 | 
|  | 92 |  | 
| alex.bluesman.smirnov@gmail.com | 0606069 | 2012-05-15 20:50:29 +0000 | [diff] [blame] | 93 | #define MAC802154_CHAN_NONE		(~(u8)0) /* No channel is assigned */ | 
|  | 94 |  | 
| alex.bluesman.smirnov@gmail.com | 6e2128d | 2012-05-15 20:50:25 +0000 | [diff] [blame] | 95 | extern struct ieee802154_reduced_mlme_ops mac802154_mlme_reduced; | 
|  | 96 |  | 
| alex.bluesman.smirnov@gmail.com | 62610ad | 2012-05-15 20:50:28 +0000 | [diff] [blame] | 97 | int mac802154_slave_open(struct net_device *dev); | 
|  | 98 | int mac802154_slave_close(struct net_device *dev); | 
|  | 99 |  | 
| alex.bluesman.smirnov@gmail.com | 0606069 | 2012-05-15 20:50:29 +0000 | [diff] [blame] | 100 | void mac802154_monitors_rx(struct mac802154_priv *priv, struct sk_buff *skb); | 
|  | 101 | void mac802154_monitor_setup(struct net_device *dev); | 
|  | 102 |  | 
| alex.bluesman.smirnov@gmail.com | 5b641eb | 2012-05-15 20:50:22 +0000 | [diff] [blame] | 103 | netdev_tx_t mac802154_tx(struct mac802154_priv *priv, struct sk_buff *skb, | 
|  | 104 | u8 page, u8 chan); | 
|  | 105 |  | 
| alex.bluesman.smirnov@gmail.com | ef2486f | 2012-05-15 20:50:26 +0000 | [diff] [blame] | 106 | /* MIB callbacks */ | 
|  | 107 | void mac802154_dev_set_ieee_addr(struct net_device *dev); | 
|  | 108 |  | 
| alex.bluesman.smirnov@gmail.com | 1010f54 | 2012-05-15 20:50:20 +0000 | [diff] [blame] | 109 | #endif /* MAC802154_H */ |