Skip to contentSkip to conversation

Variable multicast and patch record queues length.

PATCH In review Aleksey Senin 2 participants 2 messages Dec 9, 2010 – Jan 12, 2011 1 message not in the archive InfiniBand

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Variable multicast and patch record queues length.

Allow to user set size of multicast and path record queues. It should solve the problem, when the packets are dropped when using slow SM.
Currently only 3 packets stored in the send queue before drop take place. Queue's length may be changed at runtime via files mcast_qlen and prec_qlen files under /sys/module/ib_ipoib/parameters/ directory.

This patch based on idea of Christoph Lameter.
http://lists.openfabrics.org/pipermail/general/2009-June/059853.html

The tool for generating multicast traffic can be found on
http://www.gentwo.org/ll.

---
 drivers/infiniband/ulp/ipoib/ipoib.h           |    2 +
 drivers/infiniband/ulp/ipoib/ipoib_main.c      |   91 +++++++++++++++++++++++-
 drivers/infiniband/ulp/ipoib/ipoib_multicast.c |    2 +-
 3 files changed, 91 insertions(+), 4 deletions(-)
drivers/infiniband/ulp/ipoib/ipoib.h +2 -0
index 753a983..159e29c 100644
@@ -698,6 +698,8 @@ static inline void ipoib_unregister_debugfs(void) { }
 
 extern int ipoib_sendq_size;
 extern int ipoib_recvq_size;
+extern unsigned int ipoib_prec_qlen;
+extern unsigned int ipoib_mcast_qlen;
 
 extern struct ib_sa_client ipoib_sa_client;
 
drivers/infiniband/ulp/ipoib/ipoib_main.c +88 -3

127 lines not on this page · raw message

drivers/infiniband/ulp/ipoib/ipoib_multicast.c +1 -1
index 3871ac6..1f2d28e 100644
@@ -693,7 +693,7 @@ void ipoib_mcast_send(struct net_device *dev, void *mgid, struct sk_buff *skb)
 	}
 
 	if (!mcast->ah) {
-		if (skb_queue_len(&mcast->pkt_queue) < IPOIB_MAX_MCAST_QUEUE)
+		if (skb_queue_len(&mcast->pkt_queue) < ipoib_mcast_qlen)
 			skb_queue_tail(&mcast->pkt_queue, skb);
 		else {
 			++dev->stats.tx_dropped;
Signature · 6 lines
1.6.4.2

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
#2 lore raw
In reply to a message not in the archive
Quoted 3 lines

Currently only 3 packets stored in the send queue before drop take place. Queue's length may be changed at runtime via files mcast_qlen and prec_qlen files under /sys/module/ib_ipoib/parameters/ directory.

Given that we already have module parameters that can be set at runtime, do we really need a sysctl too?

drivers/infiniband/ulp/ipoib/ipoib_main.c static int __init ipoib_init_module(void) · line 1510

Quoted 2 lines
drivers/infiniband/ulp/ipoib/ipoib_main.c +2 -0
+	if (!ipoib_table_header)
+		ipoib_table_header = register_sysctl_table(ipoib_table);

Seems like unneeded duplication of interfaces (and I don't think an ipoib-specific sysctl seems like the right thing)

- R.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html