From 7e4b5106b7b996b6da843939a440b7bd89d166f9 Mon Sep 17 00:00:00 2001 From: Andy Grover Date: Thu, 11 Mar 2010 13:49:59 +0000 Subject: [PATCH] --- yaml --- r: 193589 b: refs/heads/master c: 2e7b3b994529d4760231a45a6b88950187bda877 h: refs/heads/master i: 193587: 2600547480f0fa02cd4817ef0c0dd6a17df53854 v: v3 --- [refs] | 2 +- trunk/net/rds/cong.c | 2 -- trunk/net/rds/ib_send.c | 7 +++++++ trunk/net/rds/loop.c | 7 ------- 4 files changed, 8 insertions(+), 10 deletions(-) diff --git a/[refs] b/[refs] index 54c505927327..23e9568dd4d1 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 8e82376e5f72bb576504c8c6117685e56c1b97db +refs/heads/master: 2e7b3b994529d4760231a45a6b88950187bda877 diff --git a/trunk/net/rds/cong.c b/trunk/net/rds/cong.c index 6d06cac2649c..dd2711df640b 100644 --- a/trunk/net/rds/cong.c +++ b/trunk/net/rds/cong.c @@ -218,8 +218,6 @@ void rds_cong_queue_updates(struct rds_cong_map *map) spin_lock_irqsave(&rds_cong_lock, flags); list_for_each_entry(conn, &map->m_conn_list, c_map_item) { - if (conn->c_loopback) - continue; if (!test_and_set_bit(0, &conn->c_map_queued)) { rds_stats_inc(s_cong_update_queued); queue_delayed_work(rds_wq, &conn->c_send_w, 0); diff --git a/trunk/net/rds/ib_send.c b/trunk/net/rds/ib_send.c index f380c3f01256..c18228aec779 100644 --- a/trunk/net/rds/ib_send.c +++ b/trunk/net/rds/ib_send.c @@ -482,6 +482,13 @@ int rds_ib_xmit(struct rds_connection *conn, struct rds_message *rm, BUG_ON(off % RDS_FRAG_SIZE); BUG_ON(hdr_off != 0 && hdr_off != sizeof(struct rds_header)); + /* Do not send cong updates to IB loopback */ + if (conn->c_loopback + && rm->m_inc.i_hdr.h_flags & RDS_FLAG_CONG_BITMAP) { + rds_cong_map_updated(conn->c_fcong, ~(u64) 0); + return sizeof(struct rds_header) + RDS_CONG_MAP_BYTES; + } + /* FIXME we may overallocate here */ if (be32_to_cpu(rm->m_inc.i_hdr.h_len) == 0) i = 1; diff --git a/trunk/net/rds/loop.c b/trunk/net/rds/loop.c index 4a61997f554d..93a45f1ce61f 100644 --- a/trunk/net/rds/loop.c +++ b/trunk/net/rds/loop.c @@ -80,16 +80,9 @@ static int rds_loop_xmit_cong_map(struct rds_connection *conn, struct rds_cong_map *map, unsigned long offset) { - unsigned long i; - BUG_ON(offset); BUG_ON(map != conn->c_lcong); - for (i = 0; i < RDS_CONG_MAP_PAGES; i++) { - memcpy((void *)conn->c_fcong->m_page_addrs[i], - (void *)map->m_page_addrs[i], PAGE_SIZE); - } - rds_cong_map_updated(conn->c_fcong, ~(u64) 0); return sizeof(struct rds_header) + RDS_CONG_MAP_BYTES;