Skip to content

Commit

Permalink
tipc: add InfiniBand media type
Browse files Browse the repository at this point in the history
Add InfiniBand media type based on the ethernet media type.

The only real difference is that in case of InfiniBand, we need the entire
20 bytes of space reserved for media addresses, so the TIPC media type ID is
not explicitly stored in the packet payload.

Sample output of tipc-config:

# tipc-config -v -addr -netid -nt=all -p -m -b -n -ls

node address: <10.1.4>
current network id: 4711
Type       Lower      Upper      Port Identity              Publication Scope
0          167776257  167776257  <10.1.1:1855512577>        1855512578  cluster
           167776260  167776260  <10.1.4:1216454657>        1216454658  zone
1          1          1          <10.1.4:1216479235>        1216479236  node
Ports:
1216479235: bound to {1,1}
1216454657: bound to {0,167776260}
Media:
eth
ib
Bearers:
ib:ib0
Nodes known:
<10.1.1>: up
Link <broadcast-link>
  Window:20 packets
  RX packets:0 fragments:0/0 bundles:0/0
  TX packets:0 fragments:0/0 bundles:0/0
  RX naks:0 defs:0 dups:0
  TX naks:0 acks:0 dups:0
  Congestion bearer:0 link:0  Send queue max:0 avg:0

Link <10.1.4:ib0-10.1.1:ib0>
  ACTIVE  MTU:2044  Priority:10  Tolerance:1500 ms  Window:50 packets
  RX packets:80 fragments:0/0 bundles:0/0
  TX packets:40 fragments:0/0 bundles:0/0
  TX profile sample:22 packets  average:54 octets
  0-64:100% -256:0% -1024:0% -4096:0% -16384:0% -32768:0% -66000:0%
  RX states:410 probes:213 naks:0 defs:0 dups:0
  TX states:410 probes:197 naks:0 acks:0 dups:0
  Congestion bearer:0 link:0  Send queue max:1 avg:0

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Patrick McHardy authored and David S. Miller committed Apr 17, 2013
1 parent 76f5c6f commit a29a194
Show file tree
Hide file tree
Showing 6 changed files with 416 additions and 3 deletions.
7 changes: 7 additions & 0 deletions net/tipc/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,10 @@ config TIPC_PORTS

Setting this to a smaller value saves some memory,
setting it to higher allows for more ports.

config TIPC_MEDIA_IB
bool "InfiniBand media type support"
depends on TIPC && INFINIBAND_IPOIB
help
Saying Y here will enable support for running TIPC on
IP-over-InfiniBand devices.
2 changes: 2 additions & 0 deletions net/tipc/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,5 @@ tipc-y += addr.o bcast.o bearer.o config.o \
name_distr.o subscr.o name_table.o net.o \
netlink.o node.o node_subscr.o port.o ref.o \
socket.o log.o eth_media.o

tipc-$(CONFIG_TIPC_MEDIA_IB) += ib_media.o
2 changes: 1 addition & 1 deletion net/tipc/bearer.c
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
#include "bearer.h"
#include "discover.h"

#define MAX_ADDR_STR 32
#define MAX_ADDR_STR 60

static struct tipc_media *media_list[MAX_MEDIA];
static u32 media_count;
Expand Down
9 changes: 9 additions & 0 deletions net/tipc/bearer.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@
* Identifiers of supported TIPC media types
*/
#define TIPC_MEDIA_TYPE_ETH 1
#define TIPC_MEDIA_TYPE_IB 2

/**
* struct tipc_media_addr - destination address used by TIPC bearers
Expand Down Expand Up @@ -174,6 +175,14 @@ int tipc_disable_bearer(const char *name);
int tipc_eth_media_start(void);
void tipc_eth_media_stop(void);

#ifdef CONFIG_TIPC_MEDIA_IB
int tipc_ib_media_start(void);
void tipc_ib_media_stop(void);
#else
static inline int tipc_ib_media_start(void) { return 0; }
static inline void tipc_ib_media_stop(void) { return; }
#endif

int tipc_media_set_priority(const char *name, u32 new_value);
int tipc_media_set_window(const char *name, u32 new_value);
void tipc_media_addr_printf(char *buf, int len, struct tipc_media_addr *a);
Expand Down
12 changes: 10 additions & 2 deletions net/tipc/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ static void tipc_core_stop_net(void)
{
tipc_net_stop();
tipc_eth_media_stop();
tipc_ib_media_stop();
}

/**
Expand All @@ -93,8 +94,15 @@ int tipc_core_start_net(unsigned long addr)

tipc_net_start(addr);
res = tipc_eth_media_start();
if (res)
tipc_core_stop_net();
if (res < 0)
goto err;
res = tipc_ib_media_start();
if (res < 0)
goto err;
return res;

err:
tipc_core_stop_net();
return res;
}

Expand Down
Loading

0 comments on commit a29a194

Please sign in to comment.