1
2
3
4
5
6
7 #ifndef _NET_DSA_SJA1105_H
8 #define _NET_DSA_SJA1105_H
9
10 #include <linux/skbuff.h>
11 #include <linux/etherdevice.h>
12 #include <net/dsa.h>
13
14 #define ETH_P_SJA1105 ETH_P_DSA_8021Q
15 #define ETH_P_SJA1105_META 0x0008
16
17
18 #define SJA1105_LINKLOCAL_FILTER_A 0x0180C2000000ull
19 #define SJA1105_LINKLOCAL_FILTER_A_MASK 0xFFFFFF000000ull
20
21 #define SJA1105_LINKLOCAL_FILTER_B 0x011B19000000ull
22 #define SJA1105_LINKLOCAL_FILTER_B_MASK 0xFFFFFF000000ull
23
24
25
26
27
28
29
30
31 #define SJA1105_META_SMAC 0x222222222222ull
32 #define SJA1105_META_DMAC 0x0180C200000Eull
33
34 #define SJA1105_HWTS_RX_EN 0
35
36
37
38
39 struct sja1105_tagger_data {
40 struct sk_buff_head skb_rxtstamp_queue;
41 struct work_struct rxtstamp_work;
42 struct sk_buff *stampable_skb;
43
44
45
46 spinlock_t meta_lock;
47 unsigned long state;
48 };
49
50 struct sja1105_skb_cb {
51 u32 meta_tstamp;
52 };
53
54 #define SJA1105_SKB_CB(skb) \
55 ((struct sja1105_skb_cb *)DSA_SKB_CB_PRIV(skb))
56
57 struct sja1105_port {
58 struct sja1105_tagger_data *data;
59 struct dsa_port *dp;
60 bool hwts_tx_en;
61 int mgmt_slot;
62 };
63
64 #endif