Variable multicast and patch record queues length.
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
@@ -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
@@ -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
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_qlenandprec_qlenfiles 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