aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYing Xue <ying.xue@windriver.com>2013-12-10 23:45:43 -0500
committerDavid S. Miller <davem@davemloft.net>2013-12-11 00:17:43 -0500
commite4d050cbf7720d8bcc781f4ef557d37ed148a5c4 (patch)
tree57e491fae1ead5a0c587c1085266dbdbb9d30f45
parent6e967adf798ae5066488fd0c2b2466d06c642f23 (diff)
tipc: eliminate code duplication in media layer
Currently TIPC supports two L2 media types, Ethernet and Infiniband. Because both these media are accessed through the common net_device API, several functions in the two media adaptation files turn out to be fully or almost identical, leading to unnecessary code duplication. In this commit we extract this common code from the two media files and move them to the generic bearer.c. Additionally, we change the function names to reflect their real role: to access L2 media, irrespective of type. Signed-off-by: Ying Xue <ying.xue@windriver.com> Cc: Patrick McHardy <kaber@trash.net> Reviewed-by: Paul Gortmaker <paul.gortmaker@windriver.com> Signed-off-by: Jon Maloy <jon.maloy@ericsson.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--net/tipc/bearer.c106
-rw-r--r--net/tipc/bearer.h26
-rw-r--r--net/tipc/eth_media.c124
-rw-r--r--net/tipc/ib_media.c124
4 files changed, 149 insertions, 231 deletions
diff --git a/net/tipc/bearer.c b/net/tipc/bearer.c
index e95e0b91ef30..3bb5f266b0eb 100644
--- a/net/tipc/bearer.c
+++ b/net/tipc/bearer.c
@@ -2,7 +2,7 @@
2 * net/tipc/bearer.c: TIPC bearer code 2 * net/tipc/bearer.c: TIPC bearer code
3 * 3 *
4 * Copyright (c) 1996-2006, 2013, Ericsson AB 4 * Copyright (c) 1996-2006, 2013, Ericsson AB
5 * Copyright (c) 2004-2006, 2010-2011, Wind River Systems 5 * Copyright (c) 2004-2006, 2010-2013, Wind River Systems
6 * All rights reserved. 6 * All rights reserved.
7 * 7 *
8 * Redistribution and use in source and binary forms, with or without 8 * Redistribution and use in source and binary forms, with or without
@@ -332,6 +332,7 @@ restart:
332 332
333 b_ptr = &tipc_bearers[bearer_id]; 333 b_ptr = &tipc_bearers[bearer_id];
334 strcpy(b_ptr->name, name); 334 strcpy(b_ptr->name, name);
335 b_ptr->media = m_ptr;
335 res = m_ptr->enable_media(b_ptr); 336 res = m_ptr->enable_media(b_ptr);
336 if (res) { 337 if (res) {
337 pr_warn("Bearer <%s> rejected, enable failure (%d)\n", 338 pr_warn("Bearer <%s> rejected, enable failure (%d)\n",
@@ -340,7 +341,6 @@ restart:
340 } 341 }
341 342
342 b_ptr->identity = bearer_id; 343 b_ptr->identity = bearer_id;
343 b_ptr->media = m_ptr;
344 b_ptr->tolerance = m_ptr->tolerance; 344 b_ptr->tolerance = m_ptr->tolerance;
345 b_ptr->window = m_ptr->window; 345 b_ptr->window = m_ptr->window;
346 b_ptr->net_plane = bearer_id + 'A'; 346 b_ptr->net_plane = bearer_id + 'A';
@@ -432,6 +432,108 @@ int tipc_disable_bearer(const char *name)
432 return res; 432 return res;
433} 433}
434 434
435
436/* tipc_l2_media_addr_set - initialize Ethernet media address structure
437 *
438 * Media-dependent "value" field stores MAC address in first 6 bytes
439 * and zeroes out the remaining bytes.
440 */
441void tipc_l2_media_addr_set(const struct tipc_bearer *b,
442 struct tipc_media_addr *a, char *mac)
443{
444 int len = b->media->hwaddr_len;
445
446 if (unlikely(sizeof(a->value) < len)) {
447 WARN_ONCE(1, "Media length invalid\n");
448 return;
449 }
450
451 memcpy(a->value, mac, len);
452 memset(a->value + len, 0, sizeof(a->value) - len);
453 a->media_id = b->media->type_id;
454 a->broadcast = !memcmp(mac, b->bcast_addr.value, len);
455}
456
457int tipc_enable_l2_media(struct tipc_bearer *b)
458{
459 struct net_device *dev;
460 char *driver_name = strchr((const char *)b->name, ':') + 1;
461
462 /* Find device with specified name */
463 dev = dev_get_by_name(&init_net, driver_name);
464 if (!dev)
465 return -ENODEV;
466
467 /* Associate TIPC bearer with Ethernet bearer */
468 b->media_ptr = dev;
469 memset(b->bcast_addr.value, 0, sizeof(b->bcast_addr.value));
470 memcpy(b->bcast_addr.value, dev->broadcast, b->media->hwaddr_len);
471 b->bcast_addr.media_id = b->media->type_id;
472 b->bcast_addr.broadcast = 1;
473 b->mtu = dev->mtu;
474 tipc_l2_media_addr_set(b, &b->addr, (char *)dev->dev_addr);
475 rcu_assign_pointer(dev->tipc_ptr, b);
476 return 0;
477}
478
479/* tipc_disable_l2_media - detach TIPC bearer from an Ethernet interface
480 *
481 * Mark Ethernet bearer as inactive so that incoming buffers are thrown away,
482 * then get worker thread to complete bearer cleanup. (Can't do cleanup
483 * here because cleanup code needs to sleep and caller holds spinlocks.)
484 */
485void tipc_disable_l2_media(struct tipc_bearer *b)
486{
487 struct net_device *dev = (struct net_device *)b->media_ptr;
488 RCU_INIT_POINTER(dev->tipc_ptr, NULL);
489 dev_put(dev);
490}
491
492/**
493 * tipc_l2_send_msg - send a TIPC packet out over an Ethernet interface
494 * @buf: the packet to be sent
495 * @b_ptr: the bearer throught which the packet is to be sent
496 * @dest: peer destination address
497 */
498int tipc_l2_send_msg(struct sk_buff *buf, struct tipc_bearer *b,
499 struct tipc_media_addr *dest)
500{
501 struct sk_buff *clone;
502 int delta;
503 struct net_device *dev = (struct net_device *)b->media_ptr;
504
505 clone = skb_clone(buf, GFP_ATOMIC);
506 if (!clone)
507 return 0;
508
509 delta = dev->hard_header_len - skb_headroom(buf);
510 if ((delta > 0) &&
511 pskb_expand_head(clone, SKB_DATA_ALIGN(delta), 0, GFP_ATOMIC)) {
512 kfree_skb(clone);
513 return 0;
514 }
515
516 skb_reset_network_header(clone);
517 clone->dev = dev;
518 clone->protocol = htons(ETH_P_TIPC);
519 dev_hard_header(clone, dev, ETH_P_TIPC, dest->value,
520 dev->dev_addr, clone->len);
521 dev_queue_xmit(clone);
522 return 0;
523}
524
525/* tipc_bearer_send- sends buffer to destination over bearer
526 *
527 * IMPORTANT:
528 * The media send routine must not alter the buffer being passed in
529 * as it may be needed for later retransmission!
530 */
531void tipc_bearer_send(struct tipc_bearer *b, struct sk_buff *buf,
532 struct tipc_media_addr *dest)
533{
534 b->media->send_msg(buf, b, dest);
535}
536
435/** 537/**
436 * tipc_l2_rcv_msg - handle incoming TIPC message from an interface 538 * tipc_l2_rcv_msg - handle incoming TIPC message from an interface
437 * @buf: the received packet 539 * @buf: the received packet
diff --git a/net/tipc/bearer.h b/net/tipc/bearer.h
index 0974c2f2bbe5..fa95c34ca926 100644
--- a/net/tipc/bearer.h
+++ b/net/tipc/bearer.h
@@ -84,6 +84,7 @@ struct tipc_bearer;
84 * @tolerance: default time (in ms) before declaring link failure 84 * @tolerance: default time (in ms) before declaring link failure
85 * @window: default window (in packets) before declaring link congestion 85 * @window: default window (in packets) before declaring link congestion
86 * @type_id: TIPC media identifier 86 * @type_id: TIPC media identifier
87 * @hwaddr_len: TIPC media address len
87 * @name: media name 88 * @name: media name
88 */ 89 */
89struct tipc_media { 90struct tipc_media {
@@ -100,6 +101,7 @@ struct tipc_media {
100 u32 tolerance; 101 u32 tolerance;
101 u32 window; 102 u32 window;
102 u32 type_id; 103 u32 type_id;
104 u32 hwaddr_len;
103 char name[TIPC_MAX_MEDIA_NAME]; 105 char name[TIPC_MAX_MEDIA_NAME];
104}; 106};
105 107
@@ -128,8 +130,7 @@ struct tipc_media {
128 * care of initializing all other fields. 130 * care of initializing all other fields.
129 */ 131 */
130struct tipc_bearer { 132struct tipc_bearer {
131 struct net_device *dev; 133 void *media_ptr; /* initalized by media */
132 void *usr_handle; /* initalized by media */
133 u32 mtu; /* initalized by media */ 134 u32 mtu; /* initalized by media */
134 struct tipc_media_addr addr; /* initalized by media */ 135 struct tipc_media_addr addr; /* initalized by media */
135 char name[TIPC_MAX_BEARER_NAME]; 136 char name[TIPC_MAX_BEARER_NAME];
@@ -178,6 +179,12 @@ int tipc_media_set_priority(const char *name, u32 new_value);
178int tipc_media_set_window(const char *name, u32 new_value); 179int tipc_media_set_window(const char *name, u32 new_value);
179void tipc_media_addr_printf(char *buf, int len, struct tipc_media_addr *a); 180void tipc_media_addr_printf(char *buf, int len, struct tipc_media_addr *a);
180struct sk_buff *tipc_media_get_names(void); 181struct sk_buff *tipc_media_get_names(void);
182void tipc_l2_media_addr_set(const struct tipc_bearer *b,
183 struct tipc_media_addr *a, char *mac);
184int tipc_enable_l2_media(struct tipc_bearer *b);
185void tipc_disable_l2_media(struct tipc_bearer *b);
186int tipc_l2_send_msg(struct sk_buff *buf, struct tipc_bearer *b,
187 struct tipc_media_addr *dest);
181 188
182struct sk_buff *tipc_bearer_get_names(void); 189struct sk_buff *tipc_bearer_get_names(void);
183void tipc_bearer_add_dest(struct tipc_bearer *b_ptr, u32 dest); 190void tipc_bearer_add_dest(struct tipc_bearer *b_ptr, u32 dest);
@@ -188,18 +195,7 @@ struct tipc_media *tipc_media_find(const char *name);
188int tipc_bearer_setup(void); 195int tipc_bearer_setup(void);
189void tipc_bearer_cleanup(void); 196void tipc_bearer_cleanup(void);
190void tipc_bearer_stop(void); 197void tipc_bearer_stop(void);
191 198void tipc_bearer_send(struct tipc_bearer *b, struct sk_buff *buf,
192/** 199 struct tipc_media_addr *dest);
193 * tipc_bearer_send- sends buffer to destination over bearer
194 *
195 * IMPORTANT:
196 * The media send routine must not alter the buffer being passed in
197 * as it may be needed for later retransmission!
198 */
199static inline void tipc_bearer_send(struct tipc_bearer *b, struct sk_buff *buf,
200 struct tipc_media_addr *dest)
201{
202 b->media->send_msg(buf, b, dest);
203}
204 200
205#endif /* _TIPC_BEARER_H */ 201#endif /* _TIPC_BEARER_H */
diff --git a/net/tipc/eth_media.c b/net/tipc/eth_media.c
index f28f7160adba..67cf3f935dba 100644
--- a/net/tipc/eth_media.c
+++ b/net/tipc/eth_media.c
@@ -39,94 +39,9 @@
39 39
40#define ETH_ADDR_OFFSET 4 /* message header offset of MAC address */ 40#define ETH_ADDR_OFFSET 4 /* message header offset of MAC address */
41 41
42/** 42/* convert Ethernet address to string */
43 * eth_media_addr_set - initialize Ethernet media address structure 43static int tipc_eth_addr2str(struct tipc_media_addr *a, char *str_buf,
44 * 44 int str_size)
45 * Media-dependent "value" field stores MAC address in first 6 bytes
46 * and zeroes out the remaining bytes.
47 */
48static void eth_media_addr_set(const struct tipc_bearer *tb_ptr,
49 struct tipc_media_addr *a, char *mac)
50{
51 memcpy(a->value, mac, ETH_ALEN);
52 memset(a->value + ETH_ALEN, 0, sizeof(a->value) - ETH_ALEN);
53 a->media_id = TIPC_MEDIA_TYPE_ETH;
54 a->broadcast = !memcmp(mac, tb_ptr->bcast_addr.value, ETH_ALEN);
55}
56
57/**
58 * send_msg - send a TIPC message out over an Ethernet interface
59 */
60static int send_msg(struct sk_buff *buf, struct tipc_bearer *tb_ptr,
61 struct tipc_media_addr *dest)
62{
63 struct sk_buff *clone;
64 int delta;
65 struct net_device *dev = tb_ptr->dev;
66
67 clone = skb_clone(buf, GFP_ATOMIC);
68 if (!clone)
69 return 0;
70
71 delta = dev->hard_header_len - skb_headroom(buf);
72 if ((delta > 0) &&
73 pskb_expand_head(clone, SKB_DATA_ALIGN(delta), 0, GFP_ATOMIC)) {
74 kfree_skb(clone);
75 return 0;
76 }
77
78 skb_reset_network_header(clone);
79 clone->dev = dev;
80 clone->protocol = htons(ETH_P_TIPC);
81 dev_hard_header(clone, dev, ETH_P_TIPC, dest->value,
82 dev->dev_addr, clone->len);
83 dev_queue_xmit(clone);
84 return 0;
85}
86
87/**
88 * enable_media - attach TIPC bearer to an Ethernet interface
89 */
90static int enable_media(struct tipc_bearer *tb_ptr)
91{
92 struct net_device *dev;
93 char *driver_name = strchr((const char *)tb_ptr->name, ':') + 1;
94
95 /* Find device with specified name */
96 dev = dev_get_by_name(&init_net, driver_name);
97 if (!dev)
98 return -ENODEV;
99
100 /* Associate TIPC bearer with Ethernet bearer */
101 tb_ptr->dev = dev;
102 tb_ptr->usr_handle = NULL;
103 memset(tb_ptr->bcast_addr.value, 0, sizeof(tb_ptr->bcast_addr.value));
104 memcpy(tb_ptr->bcast_addr.value, dev->broadcast, ETH_ALEN);
105 tb_ptr->bcast_addr.media_id = TIPC_MEDIA_TYPE_ETH;
106 tb_ptr->bcast_addr.broadcast = 1;
107 tb_ptr->mtu = dev->mtu;
108 eth_media_addr_set(tb_ptr, &tb_ptr->addr, (char *)dev->dev_addr);
109 rcu_assign_pointer(dev->tipc_ptr, tb_ptr);
110 return 0;
111}
112
113/**
114 * disable_media - detach TIPC bearer from an Ethernet interface
115 *
116 * Mark Ethernet bearer as inactive so that incoming buffers are thrown away,
117 * then get worker thread to complete bearer cleanup. (Can't do cleanup
118 * here because cleanup code needs to sleep and caller holds spinlocks.)
119 */
120static void disable_media(struct tipc_bearer *tb_ptr)
121{
122 RCU_INIT_POINTER(tb_ptr->dev->tipc_ptr, NULL);
123 dev_put(tb_ptr->dev);
124}
125
126/**
127 * eth_addr2str - convert Ethernet address to string
128 */
129static int eth_addr2str(struct tipc_media_addr *a, char *str_buf, int str_size)
130{ 45{
131 if (str_size < 18) /* 18 = strlen("aa:bb:cc:dd:ee:ff\0") */ 46 if (str_size < 18) /* 18 = strlen("aa:bb:cc:dd:ee:ff\0") */
132 return 1; 47 return 1;
@@ -135,10 +50,8 @@ static int eth_addr2str(struct tipc_media_addr *a, char *str_buf, int str_size)
135 return 0; 50 return 0;
136} 51}
137 52
138/** 53/* convert Ethernet address format to message header format */
139 * eth_str2addr - convert Ethernet address format to message header format 54static int tipc_eth_addr2msg(struct tipc_media_addr *a, char *msg_area)
140 */
141static int eth_addr2msg(struct tipc_media_addr *a, char *msg_area)
142{ 55{
143 memset(msg_area, 0, TIPC_MEDIA_ADDR_SIZE); 56 memset(msg_area, 0, TIPC_MEDIA_ADDR_SIZE);
144 msg_area[TIPC_MEDIA_TYPE_OFFSET] = TIPC_MEDIA_TYPE_ETH; 57 msg_area[TIPC_MEDIA_TYPE_OFFSET] = TIPC_MEDIA_TYPE_ETH;
@@ -146,33 +59,30 @@ static int eth_addr2msg(struct tipc_media_addr *a, char *msg_area)
146 return 0; 59 return 0;
147} 60}
148 61
149/** 62/* convert message header address format to Ethernet format */
150 * eth_str2addr - convert message header address format to Ethernet format 63static int tipc_eth_msg2addr(const struct tipc_bearer *tb_ptr,
151 */ 64 struct tipc_media_addr *a, char *msg_area)
152static int eth_msg2addr(const struct tipc_bearer *tb_ptr,
153 struct tipc_media_addr *a, char *msg_area)
154{ 65{
155 if (msg_area[TIPC_MEDIA_TYPE_OFFSET] != TIPC_MEDIA_TYPE_ETH) 66 if (msg_area[TIPC_MEDIA_TYPE_OFFSET] != TIPC_MEDIA_TYPE_ETH)
156 return 1; 67 return 1;
157 68
158 eth_media_addr_set(tb_ptr, a, msg_area + ETH_ADDR_OFFSET); 69 tipc_l2_media_addr_set(tb_ptr, a, msg_area + ETH_ADDR_OFFSET);
159 return 0; 70 return 0;
160} 71}
161 72
162/* 73/* Ethernet media registration info */
163 * Ethernet media registration info
164 */
165struct tipc_media eth_media_info = { 74struct tipc_media eth_media_info = {
166 .send_msg = send_msg, 75 .send_msg = tipc_l2_send_msg,
167 .enable_media = enable_media, 76 .enable_media = tipc_enable_l2_media,
168 .disable_media = disable_media, 77 .disable_media = tipc_disable_l2_media,
169 .addr2str = eth_addr2str, 78 .addr2str = tipc_eth_addr2str,
170 .addr2msg = eth_addr2msg, 79 .addr2msg = tipc_eth_addr2msg,
171 .msg2addr = eth_msg2addr, 80 .msg2addr = tipc_eth_msg2addr,
172 .priority = TIPC_DEF_LINK_PRI, 81 .priority = TIPC_DEF_LINK_PRI,
173 .tolerance = TIPC_DEF_LINK_TOL, 82 .tolerance = TIPC_DEF_LINK_TOL,
174 .window = TIPC_DEF_LINK_WIN, 83 .window = TIPC_DEF_LINK_WIN,
175 .type_id = TIPC_MEDIA_TYPE_ETH, 84 .type_id = TIPC_MEDIA_TYPE_ETH,
85 .hwaddr_len = ETH_ALEN,
176 .name = "eth" 86 .name = "eth"
177}; 87};
178 88
diff --git a/net/tipc/ib_media.c b/net/tipc/ib_media.c
index 62d91aeda058..844a77e25828 100644
--- a/net/tipc/ib_media.c
+++ b/net/tipc/ib_media.c
@@ -42,94 +42,9 @@
42#include "core.h" 42#include "core.h"
43#include "bearer.h" 43#include "bearer.h"
44 44
45/** 45/* convert InfiniBand address to string */
46 * ib_media_addr_set - initialize Infiniband media address structure 46static int tipc_ib_addr2str(struct tipc_media_addr *a, char *str_buf,
47 * 47 int str_size)
48 * Media-dependent "value" field stores MAC address in first 6 bytes
49 * and zeroes out the remaining bytes.
50 */
51static void ib_media_addr_set(const struct tipc_bearer *tb_ptr,
52 struct tipc_media_addr *a, char *mac)
53{
54 BUILD_BUG_ON(sizeof(a->value) < INFINIBAND_ALEN);
55 memcpy(a->value, mac, INFINIBAND_ALEN);
56 a->media_id = TIPC_MEDIA_TYPE_IB;
57 a->broadcast = !memcmp(mac, tb_ptr->bcast_addr.value, INFINIBAND_ALEN);
58}
59
60/**
61 * send_msg - send a TIPC message out over an InfiniBand interface
62 */
63static int send_msg(struct sk_buff *buf, struct tipc_bearer *tb_ptr,
64 struct tipc_media_addr *dest)
65{
66 struct sk_buff *clone;
67 int delta;
68 struct net_device *dev = tb_ptr->dev;
69
70 clone = skb_clone(buf, GFP_ATOMIC);
71 if (!clone)
72 return 0;
73
74 delta = dev->hard_header_len - skb_headroom(buf);
75 if ((delta > 0) &&
76 pskb_expand_head(clone, SKB_DATA_ALIGN(delta), 0, GFP_ATOMIC)) {
77 kfree_skb(clone);
78 return 0;
79 }
80
81 skb_reset_network_header(clone);
82 clone->dev = dev;
83 clone->protocol = htons(ETH_P_TIPC);
84 dev_hard_header(clone, dev, ETH_P_TIPC, dest->value,
85 dev->dev_addr, clone->len);
86 dev_queue_xmit(clone);
87 return 0;
88}
89
90/**
91 * enable_media - attach TIPC bearer to an InfiniBand interface
92 */
93static int enable_media(struct tipc_bearer *tb_ptr)
94{
95 struct net_device *dev;
96 char *driver_name = strchr((const char *)tb_ptr->name, ':') + 1;
97
98 /* Find device with specified name */
99 dev = dev_get_by_name(&init_net, driver_name);
100 if (!dev)
101 return -ENODEV;
102
103 /* Associate TIPC bearer with InfiniBand bearer */
104 tb_ptr->dev = dev;
105 tb_ptr->usr_handle = NULL;
106 memset(tb_ptr->bcast_addr.value, 0, sizeof(tb_ptr->bcast_addr.value));
107 memcpy(tb_ptr->bcast_addr.value, dev->broadcast, INFINIBAND_ALEN);
108 tb_ptr->bcast_addr.media_id = TIPC_MEDIA_TYPE_IB;
109 tb_ptr->bcast_addr.broadcast = 1;
110 tb_ptr->mtu = dev->mtu;
111 ib_media_addr_set(tb_ptr, &tb_ptr->addr, (char *)dev->dev_addr);
112 rcu_assign_pointer(dev->tipc_ptr, tb_ptr);
113 return 0;
114}
115
116/**
117 * disable_media - detach TIPC bearer from an InfiniBand interface
118 *
119 * Mark InfiniBand bearer as inactive so that incoming buffers are thrown away,
120 * then get worker thread to complete bearer cleanup. (Can't do cleanup
121 * here because cleanup code needs to sleep and caller holds spinlocks.)
122 */
123static void disable_media(struct tipc_bearer *tb_ptr)
124{
125 RCU_INIT_POINTER(tb_ptr->dev->tipc_ptr, NULL);
126 dev_put(tb_ptr->dev);
127}
128
129/**
130 * ib_addr2str - convert InfiniBand address to string
131 */
132static int ib_addr2str(struct tipc_media_addr *a, char *str_buf, int str_size)
133{ 48{
134 if (str_size < 60) /* 60 = 19 * strlen("xx:") + strlen("xx\0") */ 49 if (str_size < 60) /* 60 = 19 * strlen("xx:") + strlen("xx\0") */
135 return 1; 50 return 1;
@@ -139,10 +54,8 @@ static int ib_addr2str(struct tipc_media_addr *a, char *str_buf, int str_size)
139 return 0; 54 return 0;
140} 55}
141 56
142/** 57/* convert InfiniBand address format to message header format */
143 * ib_addr2msg - convert InfiniBand address format to message header format 58static int tipc_ib_addr2msg(struct tipc_media_addr *a, char *msg_area)
144 */
145static int ib_addr2msg(struct tipc_media_addr *a, char *msg_area)
146{ 59{
147 memset(msg_area, 0, TIPC_MEDIA_ADDR_SIZE); 60 memset(msg_area, 0, TIPC_MEDIA_ADDR_SIZE);
148 msg_area[TIPC_MEDIA_TYPE_OFFSET] = TIPC_MEDIA_TYPE_IB; 61 msg_area[TIPC_MEDIA_TYPE_OFFSET] = TIPC_MEDIA_TYPE_IB;
@@ -150,30 +63,27 @@ static int ib_addr2msg(struct tipc_media_addr *a, char *msg_area)
150 return 0; 63 return 0;
151} 64}
152 65
153/** 66/* convert message header address format to InfiniBand format */
154 * ib_msg2addr - convert message header address format to InfiniBand format 67static int tipc_ib_msg2addr(const struct tipc_bearer *tb_ptr,
155 */ 68 struct tipc_media_addr *a, char *msg_area)
156static int ib_msg2addr(const struct tipc_bearer *tb_ptr,
157 struct tipc_media_addr *a, char *msg_area)
158{ 69{
159 ib_media_addr_set(tb_ptr, a, msg_area); 70 tipc_l2_media_addr_set(tb_ptr, a, msg_area);
160 return 0; 71 return 0;
161} 72}
162 73
163/* 74/* InfiniBand media registration info */
164 * InfiniBand media registration info
165 */
166struct tipc_media ib_media_info = { 75struct tipc_media ib_media_info = {
167 .send_msg = send_msg, 76 .send_msg = tipc_l2_send_msg,
168 .enable_media = enable_media, 77 .enable_media = tipc_enable_l2_media,
169 .disable_media = disable_media, 78 .disable_media = tipc_disable_l2_media,
170 .addr2str = ib_addr2str, 79 .addr2str = tipc_ib_addr2str,
171 .addr2msg = ib_addr2msg, 80 .addr2msg = tipc_ib_addr2msg,
172 .msg2addr = ib_msg2addr, 81 .msg2addr = tipc_ib_msg2addr,
173 .priority = TIPC_DEF_LINK_PRI, 82 .priority = TIPC_DEF_LINK_PRI,
174 .tolerance = TIPC_DEF_LINK_TOL, 83 .tolerance = TIPC_DEF_LINK_TOL,
175 .window = TIPC_DEF_LINK_WIN, 84 .window = TIPC_DEF_LINK_WIN,
176 .type_id = TIPC_MEDIA_TYPE_IB, 85 .type_id = TIPC_MEDIA_TYPE_IB,
86 .hwaddr_len = INFINIBAND_ALEN,
177 .name = "ib" 87 .name = "ib"
178}; 88};
179 89