diff options
author | Ben Hutchings <ben@decadent.org.uk> | 2011-11-25 09:32:52 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-11-26 14:48:14 -0500 |
commit | cf50dcc24f82a6dc2bce523eec2a979eb1b106e2 (patch) | |
tree | 579bd064fc0ee8475ca5c8e5d5f6295b82247c3a /include/net/dsa.h | |
parent | 6dec4ac4ee1ad894dc0e9647cd3e180f93fc353c (diff) |
dsa: Change dsa_uses_{dsa, trailer}_tags() into inline functions
eth_type_trans() will use these functions if DSA is enabled, which
blocks building DSA as a module.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/dsa.h')
-rw-r--r-- | include/net/dsa.h | 53 |
1 files changed, 51 insertions, 2 deletions
diff --git a/include/net/dsa.h b/include/net/dsa.h index 839f768f9e35..32a1b49e8a8c 100644 --- a/include/net/dsa.h +++ b/include/net/dsa.h | |||
@@ -11,6 +11,9 @@ | |||
11 | #ifndef __LINUX_NET_DSA_H | 11 | #ifndef __LINUX_NET_DSA_H |
12 | #define __LINUX_NET_DSA_H | 12 | #define __LINUX_NET_DSA_H |
13 | 13 | ||
14 | #include <linux/timer.h> | ||
15 | #include <linux/workqueue.h> | ||
16 | |||
14 | #define DSA_MAX_SWITCHES 4 | 17 | #define DSA_MAX_SWITCHES 4 |
15 | #define DSA_MAX_PORTS 12 | 18 | #define DSA_MAX_PORTS 12 |
16 | 19 | ||
@@ -54,8 +57,54 @@ struct dsa_platform_data { | |||
54 | struct dsa_chip_data *chip; | 57 | struct dsa_chip_data *chip; |
55 | }; | 58 | }; |
56 | 59 | ||
57 | extern bool dsa_uses_dsa_tags(void *dsa_ptr); | 60 | struct dsa_switch_tree { |
58 | extern bool dsa_uses_trailer_tags(void *dsa_ptr); | 61 | /* |
62 | * Configuration data for the platform device that owns | ||
63 | * this dsa switch tree instance. | ||
64 | */ | ||
65 | struct dsa_platform_data *pd; | ||
66 | |||
67 | /* | ||
68 | * Reference to network device to use, and which tagging | ||
69 | * protocol to use. | ||
70 | */ | ||
71 | struct net_device *master_netdev; | ||
72 | __be16 tag_protocol; | ||
73 | |||
74 | /* | ||
75 | * The switch and port to which the CPU is attached. | ||
76 | */ | ||
77 | s8 cpu_switch; | ||
78 | s8 cpu_port; | ||
79 | |||
80 | /* | ||
81 | * Link state polling. | ||
82 | */ | ||
83 | int link_poll_needed; | ||
84 | struct work_struct link_poll_work; | ||
85 | struct timer_list link_poll_timer; | ||
86 | |||
87 | /* | ||
88 | * Data for the individual switch chips. | ||
89 | */ | ||
90 | struct dsa_switch *ds[DSA_MAX_SWITCHES]; | ||
91 | }; | ||
92 | |||
93 | /* | ||
94 | * The original DSA tag format and some other tag formats have no | ||
95 | * ethertype, which means that we need to add a little hack to the | ||
96 | * networking receive path to make sure that received frames get | ||
97 | * the right ->protocol assigned to them when one of those tag | ||
98 | * formats is in use. | ||
99 | */ | ||
100 | static inline bool dsa_uses_dsa_tags(struct dsa_switch_tree *dst) | ||
101 | { | ||
102 | return !!(dst->tag_protocol == htons(ETH_P_DSA)); | ||
103 | } | ||
59 | 104 | ||
105 | static inline bool dsa_uses_trailer_tags(struct dsa_switch_tree *dst) | ||
106 | { | ||
107 | return !!(dst->tag_protocol == htons(ETH_P_TRAILER)); | ||
108 | } | ||
60 | 109 | ||
61 | #endif | 110 | #endif |