Bluetooth: Add legacy SMP tests
[deliverable/linux.git] / net / mac802154 / ieee802154_i.h
index a379b971b13c98a1394cf33eff592944930014c6..bebd70ffc7a3d101551f023e515db24033883f0b 100644 (file)
 #define __IEEE802154_I_H
 
 #include <linux/mutex.h>
+#include <linux/hrtimer.h>
+#include <net/cfg802154.h>
 #include <net/mac802154.h>
+#include <net/nl802154.h>
 #include <net/ieee802154_netdev.h>
 
 #include "llsec.h"
@@ -50,23 +53,22 @@ struct ieee802154_local {
         */
        struct workqueue_struct *workqueue;
 
-       /* SoftMAC device is registered and running. One can add subinterfaces.
-        * This flag should be modified under slaves_mtx and RTNL, so you can
-        * read them using any of protection methods.
-        */
-       bool running;
+       struct hrtimer ifs_timer;
+
+       bool started;
 
        struct tasklet_struct tasklet;
        struct sk_buff_head skb_queue;
 };
 
-#define        MAC802154_DEVICE_STOPPED        0x00
-#define MAC802154_DEVICE_RUN           0x01
-
 enum {
        IEEE802154_RX_MSG        = 1,
 };
 
+enum ieee802154_sdata_state_bits {
+       SDATA_STATE_RUNNING,
+};
+
 /* Slave interface definition.
  *
  * Slaves represent typical network interfaces available from userspace.
@@ -76,38 +78,31 @@ enum {
 struct ieee802154_sub_if_data {
        struct list_head list; /* the ieee802154_priv->slaves list */
 
+       struct wpan_dev wpan_dev;
+
        struct ieee802154_local *local;
        struct net_device *dev;
 
-       int type;
-       bool running;
+       unsigned long state;
+       char name[IFNAMSIZ];
 
        spinlock_t mib_lock;
 
-       __le16 pan_id;
-       __le16 short_addr;
-       __le64 extended_addr;
-
-       u8 chan;
-       u8 page;
-
-       struct ieee802154_mac_params mac_params;
-
-       /* MAC BSN field */
-       u8 bsn;
-       /* MAC DSN field */
-       u8 dsn;
-
        /* protects sec from concurrent access by netlink. access by
         * encrypt/decrypt/header_create safe without additional protection.
         */
        struct mutex sec_mtx;
 
        struct mac802154_llsec sec;
+       /* must be last, dynamically sized area in this! */
+       struct ieee802154_vif vif;
 };
 
 #define MAC802154_CHAN_NONE            0xff /* No channel is assigned */
 
+/* utility functions/constants */
+extern const void *const mac802154_wpan_phy_privid; /*  for wpan_phy privid */
+
 static inline struct ieee802154_local *
 hw_to_local(struct ieee802154_hw *hw)
 {
@@ -120,31 +115,34 @@ IEEE802154_DEV_TO_SUB_IF(const struct net_device *dev)
        return netdev_priv(dev);
 }
 
-extern struct ieee802154_reduced_mlme_ops mac802154_mlme_reduced;
+static inline struct ieee802154_sub_if_data *
+IEEE802154_WPAN_DEV_TO_SUB_IF(struct wpan_dev *wpan_dev)
+{
+       return container_of(wpan_dev, struct ieee802154_sub_if_data, wpan_dev);
+}
+
+static inline bool
+ieee802154_sdata_running(struct ieee802154_sub_if_data *sdata)
+{
+       return test_bit(SDATA_STATE_RUNNING, &sdata->state);
+}
+
 extern struct ieee802154_mlme_ops mac802154_mlme_wpan;
 
-void mac802154_monitor_setup(struct net_device *dev);
 netdev_tx_t
 ieee802154_monitor_start_xmit(struct sk_buff *skb, struct net_device *dev);
-
-void mac802154_wpan_setup(struct net_device *dev);
 netdev_tx_t
 ieee802154_subif_start_xmit(struct sk_buff *skb, struct net_device *dev);
+enum hrtimer_restart ieee802154_xmit_ifs_timer(struct hrtimer *timer);
 
 /* MIB callbacks */
 void mac802154_dev_set_short_addr(struct net_device *dev, __le16 val);
 __le16 mac802154_dev_get_short_addr(const struct net_device *dev);
-void mac802154_dev_set_ieee_addr(struct net_device *dev);
 __le16 mac802154_dev_get_pan_id(const struct net_device *dev);
 void mac802154_dev_set_pan_id(struct net_device *dev, __le16 val);
 void mac802154_dev_set_page_channel(struct net_device *dev, u8 page, u8 chan);
 u8 mac802154_dev_get_dsn(const struct net_device *dev);
 
-int mac802154_set_mac_params(struct net_device *dev,
-                            const struct ieee802154_mac_params *params);
-void mac802154_get_mac_params(struct net_device *dev,
-                             struct ieee802154_mac_params *params);
-
 int mac802154_get_params(struct net_device *dev,
                         struct ieee802154_llsec_params *params);
 int mac802154_set_params(struct net_device *dev,
@@ -178,4 +176,13 @@ void mac802154_get_table(struct net_device *dev,
                         struct ieee802154_llsec_table **t);
 void mac802154_unlock_table(struct net_device *dev);
 
+/* interface handling */
+int ieee802154_iface_init(void);
+void ieee802154_iface_exit(void);
+void ieee802154_if_remove(struct ieee802154_sub_if_data *sdata);
+struct net_device *
+ieee802154_if_add(struct ieee802154_local *local, const char *name,
+                 enum nl802154_iftype type, __le64 extended_addr);
+void ieee802154_remove_interfaces(struct ieee802154_local *local);
+
 #endif /* __IEEE802154_I_H */
This page took 0.034635 seconds and 5 git commands to generate.