1 #ifndef __IEEE802154_6LOWPAN_I_H__
2 #define __IEEE802154_6LOWPAN_I_H__
4 #include <linux/list.h>
6 #include <net/ieee802154_netdev.h>
7 #include <net/inet_frag.h>
9 struct lowpan_create_arg
{
12 const struct ieee802154_addr
*src
;
13 const struct ieee802154_addr
*dst
;
16 /* Equivalent of ipv4 struct ip
18 struct lowpan_frag_queue
{
19 struct inet_frag_queue q
;
23 struct ieee802154_addr saddr
;
24 struct ieee802154_addr daddr
;
27 static inline u32
ieee802154_addr_hash(const struct ieee802154_addr
*a
)
30 case IEEE802154_ADDR_LONG
:
31 return (((__force u64
)a
->extended_addr
) >> 32) ^
32 (((__force u64
)a
->extended_addr
) & 0xffffffff);
33 case IEEE802154_ADDR_SHORT
:
34 return (__force u32
)(a
->short_addr
);
40 struct lowpan_dev_record
{
41 struct net_device
*ldev
;
42 struct list_head list
;
45 /* private device info */
46 struct lowpan_dev_info
{
47 struct net_device
*real_dev
; /* real WPAN device ptr */
48 struct mutex dev_list_mtx
; /* mutex for list ops */
53 lowpan_dev_info
*lowpan_dev_info(const struct net_device
*dev
)
55 return netdev_priv(dev
);
58 extern struct list_head lowpan_devices
;
60 int lowpan_frag_rcv(struct sk_buff
*skb
, const u8 frag_type
);
61 void lowpan_net_frag_exit(void);
62 int lowpan_net_frag_init(void);
64 void lowpan_rx_init(void);
65 void lowpan_rx_exit(void);
67 int lowpan_header_create(struct sk_buff
*skb
, struct net_device
*dev
,
68 unsigned short type
, const void *_daddr
,
69 const void *_saddr
, unsigned int len
);
70 netdev_tx_t
lowpan_xmit(struct sk_buff
*skb
, struct net_device
*dev
);
72 #endif /* __IEEE802154_6LOWPAN_I_H__ */