diff options
Diffstat (limited to 'net/tipc/eth_media.c')
-rw-r--r-- | net/tipc/eth_media.c | 58 |
1 files changed, 29 insertions, 29 deletions
diff --git a/net/tipc/eth_media.c b/net/tipc/eth_media.c index 682da4a2804..9be4839e32c 100644 --- a/net/tipc/eth_media.c +++ b/net/tipc/eth_media.c | |||
@@ -1,6 +1,6 @@ | |||
1 | /* | 1 | /* |
2 | * net/tipc/eth_media.c: Ethernet bearer support for TIPC | 2 | * net/tipc/eth_media.c: Ethernet bearer support for TIPC |
3 | * | 3 | * |
4 | * Copyright (c) 2001-2006, Ericsson AB | 4 | * Copyright (c) 2001-2006, Ericsson AB |
5 | * Copyright (c) 2005-2006, Wind River Systems | 5 | * Copyright (c) 2005-2006, Wind River Systems |
6 | * All rights reserved. | 6 | * All rights reserved. |
@@ -50,7 +50,7 @@ | |||
50 | * @dev: ptr to associated Ethernet network device | 50 | * @dev: ptr to associated Ethernet network device |
51 | * @tipc_packet_type: used in binding TIPC to Ethernet driver | 51 | * @tipc_packet_type: used in binding TIPC to Ethernet driver |
52 | */ | 52 | */ |
53 | 53 | ||
54 | struct eth_bearer { | 54 | struct eth_bearer { |
55 | struct tipc_bearer *bearer; | 55 | struct tipc_bearer *bearer; |
56 | struct net_device *dev; | 56 | struct net_device *dev; |
@@ -62,10 +62,10 @@ static int eth_started = 0; | |||
62 | static struct notifier_block notifier; | 62 | static struct notifier_block notifier; |
63 | 63 | ||
64 | /** | 64 | /** |
65 | * send_msg - send a TIPC message out over an Ethernet interface | 65 | * send_msg - send a TIPC message out over an Ethernet interface |
66 | */ | 66 | */ |
67 | 67 | ||
68 | static int send_msg(struct sk_buff *buf, struct tipc_bearer *tb_ptr, | 68 | static int send_msg(struct sk_buff *buf, struct tipc_bearer *tb_ptr, |
69 | struct tipc_media_addr *dest) | 69 | struct tipc_media_addr *dest) |
70 | { | 70 | { |
71 | struct sk_buff *clone; | 71 | struct sk_buff *clone; |
@@ -76,7 +76,7 @@ static int send_msg(struct sk_buff *buf, struct tipc_bearer *tb_ptr, | |||
76 | clone->nh.raw = clone->data; | 76 | clone->nh.raw = clone->data; |
77 | dev = ((struct eth_bearer *)(tb_ptr->usr_handle))->dev; | 77 | dev = ((struct eth_bearer *)(tb_ptr->usr_handle))->dev; |
78 | clone->dev = dev; | 78 | clone->dev = dev; |
79 | dev->hard_header(clone, dev, ETH_P_TIPC, | 79 | dev->hard_header(clone, dev, ETH_P_TIPC, |
80 | &dest->dev_addr.eth_addr, | 80 | &dest->dev_addr.eth_addr, |
81 | dev->dev_addr, clone->len); | 81 | dev->dev_addr, clone->len); |
82 | dev_queue_xmit(clone); | 82 | dev_queue_xmit(clone); |
@@ -86,12 +86,12 @@ static int send_msg(struct sk_buff *buf, struct tipc_bearer *tb_ptr, | |||
86 | 86 | ||
87 | /** | 87 | /** |
88 | * recv_msg - handle incoming TIPC message from an Ethernet interface | 88 | * recv_msg - handle incoming TIPC message from an Ethernet interface |
89 | * | 89 | * |
90 | * Routine truncates any Ethernet padding/CRC appended to the message, | 90 | * Routine truncates any Ethernet padding/CRC appended to the message, |
91 | * and ensures message size matches actual length | 91 | * and ensures message size matches actual length |
92 | */ | 92 | */ |
93 | 93 | ||
94 | static int recv_msg(struct sk_buff *buf, struct net_device *dev, | 94 | static int recv_msg(struct sk_buff *buf, struct net_device *dev, |
95 | struct packet_type *pt, struct net_device *orig_dev) | 95 | struct packet_type *pt, struct net_device *orig_dev) |
96 | { | 96 | { |
97 | struct eth_bearer *eb_ptr = (struct eth_bearer *)pt->af_packet_priv; | 97 | struct eth_bearer *eb_ptr = (struct eth_bearer *)pt->af_packet_priv; |
@@ -99,14 +99,14 @@ static int recv_msg(struct sk_buff *buf, struct net_device *dev, | |||
99 | 99 | ||
100 | if (likely(eb_ptr->bearer)) { | 100 | if (likely(eb_ptr->bearer)) { |
101 | if (likely(!dev->promiscuity) || | 101 | if (likely(!dev->promiscuity) || |
102 | !memcmp(buf->mac.raw,dev->dev_addr,ETH_ALEN) || | 102 | !memcmp(buf->mac.raw,dev->dev_addr,ETH_ALEN) || |
103 | !memcmp(buf->mac.raw,dev->broadcast,ETH_ALEN)) { | 103 | !memcmp(buf->mac.raw,dev->broadcast,ETH_ALEN)) { |
104 | size = msg_size((struct tipc_msg *)buf->data); | 104 | size = msg_size((struct tipc_msg *)buf->data); |
105 | skb_trim(buf, size); | 105 | skb_trim(buf, size); |
106 | if (likely(buf->len == size)) { | 106 | if (likely(buf->len == size)) { |
107 | buf->next = NULL; | 107 | buf->next = NULL; |
108 | tipc_recv_msg(buf, eb_ptr->bearer); | 108 | tipc_recv_msg(buf, eb_ptr->bearer); |
109 | return TIPC_OK; | 109 | return TIPC_OK; |
110 | } | 110 | } |
111 | } | 111 | } |
112 | } | 112 | } |
@@ -115,7 +115,7 @@ static int recv_msg(struct sk_buff *buf, struct net_device *dev, | |||
115 | } | 115 | } |
116 | 116 | ||
117 | /** | 117 | /** |
118 | * enable_bearer - attach TIPC bearer to an Ethernet interface | 118 | * enable_bearer - attach TIPC bearer to an Ethernet interface |
119 | */ | 119 | */ |
120 | 120 | ||
121 | static int enable_bearer(struct tipc_bearer *tb_ptr) | 121 | static int enable_bearer(struct tipc_bearer *tb_ptr) |
@@ -127,7 +127,7 @@ static int enable_bearer(struct tipc_bearer *tb_ptr) | |||
127 | 127 | ||
128 | /* Find device with specified name */ | 128 | /* Find device with specified name */ |
129 | 129 | ||
130 | while (dev && dev->name && strncmp(dev->name, driver_name, IFNAMSIZ)) { | 130 | while (dev && dev->name && strncmp(dev->name, driver_name, IFNAMSIZ)) { |
131 | dev = dev->next; | 131 | dev = dev->next; |
132 | } | 132 | } |
133 | if (!dev) | 133 | if (!dev) |
@@ -154,14 +154,14 @@ static int enable_bearer(struct tipc_bearer *tb_ptr) | |||
154 | eb_ptr->bearer = tb_ptr; | 154 | eb_ptr->bearer = tb_ptr; |
155 | tb_ptr->usr_handle = (void *)eb_ptr; | 155 | tb_ptr->usr_handle = (void *)eb_ptr; |
156 | tb_ptr->mtu = dev->mtu; | 156 | tb_ptr->mtu = dev->mtu; |
157 | tb_ptr->blocked = 0; | 157 | tb_ptr->blocked = 0; |
158 | tb_ptr->addr.type = htonl(TIPC_MEDIA_TYPE_ETH); | 158 | tb_ptr->addr.type = htonl(TIPC_MEDIA_TYPE_ETH); |
159 | memcpy(&tb_ptr->addr.dev_addr, &dev->dev_addr, ETH_ALEN); | 159 | memcpy(&tb_ptr->addr.dev_addr, &dev->dev_addr, ETH_ALEN); |
160 | return 0; | 160 | return 0; |
161 | } | 161 | } |
162 | 162 | ||
163 | /** | 163 | /** |
164 | * disable_bearer - detach TIPC bearer from an Ethernet interface | 164 | * disable_bearer - detach TIPC bearer from an Ethernet interface |
165 | * | 165 | * |
166 | * We really should do dev_remove_pack() here, but this function can not be | 166 | * We really should do dev_remove_pack() here, but this function can not be |
167 | * called at tasklet level. => Use eth_bearer->bearer as a flag to throw away | 167 | * called at tasklet level. => Use eth_bearer->bearer as a flag to throw away |
@@ -176,11 +176,11 @@ static void disable_bearer(struct tipc_bearer *tb_ptr) | |||
176 | /** | 176 | /** |
177 | * recv_notification - handle device updates from OS | 177 | * recv_notification - handle device updates from OS |
178 | * | 178 | * |
179 | * Change the state of the Ethernet bearer (if any) associated with the | 179 | * Change the state of the Ethernet bearer (if any) associated with the |
180 | * specified device. | 180 | * specified device. |
181 | */ | 181 | */ |
182 | 182 | ||
183 | static int recv_notification(struct notifier_block *nb, unsigned long evt, | 183 | static int recv_notification(struct notifier_block *nb, unsigned long evt, |
184 | void *dv) | 184 | void *dv) |
185 | { | 185 | { |
186 | struct net_device *dev = (struct net_device *)dv; | 186 | struct net_device *dev = (struct net_device *)dv; |
@@ -194,7 +194,7 @@ static int recv_notification(struct notifier_block *nb, unsigned long evt, | |||
194 | if (!eb_ptr->bearer) | 194 | if (!eb_ptr->bearer) |
195 | return NOTIFY_DONE; /* bearer had been disabled */ | 195 | return NOTIFY_DONE; /* bearer had been disabled */ |
196 | 196 | ||
197 | eb_ptr->bearer->mtu = dev->mtu; | 197 | eb_ptr->bearer->mtu = dev->mtu; |
198 | 198 | ||
199 | switch (evt) { | 199 | switch (evt) { |
200 | case NETDEV_CHANGE: | 200 | case NETDEV_CHANGE: |
@@ -210,12 +210,12 @@ static int recv_notification(struct notifier_block *nb, unsigned long evt, | |||
210 | tipc_block_bearer(eb_ptr->bearer->name); | 210 | tipc_block_bearer(eb_ptr->bearer->name); |
211 | break; | 211 | break; |
212 | case NETDEV_CHANGEMTU: | 212 | case NETDEV_CHANGEMTU: |
213 | case NETDEV_CHANGEADDR: | 213 | case NETDEV_CHANGEADDR: |
214 | tipc_block_bearer(eb_ptr->bearer->name); | 214 | tipc_block_bearer(eb_ptr->bearer->name); |
215 | tipc_continue(eb_ptr->bearer); | 215 | tipc_continue(eb_ptr->bearer); |
216 | break; | 216 | break; |
217 | case NETDEV_UNREGISTER: | 217 | case NETDEV_UNREGISTER: |
218 | case NETDEV_CHANGENAME: | 218 | case NETDEV_CHANGENAME: |
219 | tipc_disable_bearer(eb_ptr->bearer->name); | 219 | tipc_disable_bearer(eb_ptr->bearer->name); |
220 | break; | 220 | break; |
221 | } | 221 | } |
@@ -227,7 +227,7 @@ static int recv_notification(struct notifier_block *nb, unsigned long evt, | |||
227 | */ | 227 | */ |
228 | 228 | ||
229 | static char *eth_addr2str(struct tipc_media_addr *a, char *str_buf, int str_size) | 229 | static char *eth_addr2str(struct tipc_media_addr *a, char *str_buf, int str_size) |
230 | { | 230 | { |
231 | unchar *addr = (unchar *)&a->dev_addr; | 231 | unchar *addr = (unchar *)&a->dev_addr; |
232 | 232 | ||
233 | if (str_size < 18) | 233 | if (str_size < 18) |
@@ -246,7 +246,7 @@ static char *eth_addr2str(struct tipc_media_addr *a, char *str_buf, int str_size | |||
246 | */ | 246 | */ |
247 | 247 | ||
248 | int tipc_eth_media_start(void) | 248 | int tipc_eth_media_start(void) |
249 | { | 249 | { |
250 | struct tipc_media_addr bcast_addr; | 250 | struct tipc_media_addr bcast_addr; |
251 | int res; | 251 | int res; |
252 | 252 | ||
@@ -259,8 +259,8 @@ int tipc_eth_media_start(void) | |||
259 | memset(eth_bearers, 0, sizeof(eth_bearers)); | 259 | memset(eth_bearers, 0, sizeof(eth_bearers)); |
260 | 260 | ||
261 | res = tipc_register_media(TIPC_MEDIA_TYPE_ETH, "eth", | 261 | res = tipc_register_media(TIPC_MEDIA_TYPE_ETH, "eth", |
262 | enable_bearer, disable_bearer, send_msg, | 262 | enable_bearer, disable_bearer, send_msg, |
263 | eth_addr2str, &bcast_addr, ETH_LINK_PRIORITY, | 263 | eth_addr2str, &bcast_addr, ETH_LINK_PRIORITY, |
264 | ETH_LINK_TOLERANCE, ETH_LINK_WINDOW); | 264 | ETH_LINK_TOLERANCE, ETH_LINK_WINDOW); |
265 | if (res) | 265 | if (res) |
266 | return res; | 266 | return res; |