Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a29a194a authored by Patrick McHardy's avatar Patrick McHardy Committed by David S. Miller
Browse files

tipc: add InfiniBand media type



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: default avatarPatrick McHardy <kaber@trash.net>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 76f5c6f3
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -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 −0
Original line number Diff line number Diff line
@@ -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
+1 −1
Original line number Diff line number Diff line
@@ -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;
+9 −0
Original line number Diff line number Diff line
@@ -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
@@ -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);
+10 −2
Original line number Diff line number Diff line
@@ -82,6 +82,7 @@ static void tipc_core_stop_net(void)
{
	tipc_net_stop();
	tipc_eth_media_stop();
	tipc_ib_media_stop();
}

/**
@@ -93,7 +94,14 @@ int tipc_core_start_net(unsigned long addr)

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

err:
	tipc_core_stop_net();
	return res;
}
Loading