aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorAlexandre Bounine <alexandre.bounine@idt.com>2012-10-04 20:16:13 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2012-10-05 14:05:23 -0400
commitde74e00a965177e8a0d44af0ba31971b80f2bf3f (patch)
tree2c4aec10d723df0a16c46546b222d9e97189f364 /include/linux
parent2fb717ec3ec76b0ca4cee9c4d802ce551750413d (diff)
rapidio: add destination ID allocation mechanism
Replace the single global destination ID counter with per-net allocation mechanism to allow independent destID management for each available RapidIO network. Using bitmap based mechanism instead of counters allows destination ID release and reuse in systems that support hot-swap. Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com> Cc: Matt Porter <mporter@kernel.crashing.org> Cc: Li Yang <leoli@freescale.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/rio.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/include/linux/rio.h b/include/linux/rio.h
index 7ea02c44b32e..d2dff22cf681 100644
--- a/include/linux/rio.h
+++ b/include/linux/rio.h
@@ -264,6 +264,14 @@ struct rio_mport {
264#endif 264#endif
265}; 265};
266 266
267struct rio_id_table {
268 u16 start; /* logical minimal id */
269 u16 next; /* hint for find */
270 u32 max; /* max number of IDs in table */
271 spinlock_t lock;
272 unsigned long *table;
273};
274
267/** 275/**
268 * struct rio_net - RIO network info 276 * struct rio_net - RIO network info
269 * @node: Node in global list of RIO networks 277 * @node: Node in global list of RIO networks
@@ -279,6 +287,7 @@ struct rio_net {
279 struct list_head mports; /* list of ports accessing net */ 287 struct list_head mports; /* list of ports accessing net */
280 struct rio_mport *hport; /* primary port for accessing net */ 288 struct rio_mport *hport; /* primary port for accessing net */
281 unsigned char id; /* RIO network ID */ 289 unsigned char id; /* RIO network ID */
290 struct rio_id_table destid_table; /* destID allocation table */
282}; 291};
283 292
284/* Definitions used by switch sysfs initialization callback */ 293/* Definitions used by switch sysfs initialization callback */