aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
Diffstat (limited to 'net')
-rw-r--r--net/rds/cong.c2
-rw-r--r--net/rds/ib_send.c7
-rw-r--r--net/rds/loop.c7
3 files changed, 7 insertions, 9 deletions
diff --git a/net/rds/cong.c b/net/rds/cong.c
index 6d06cac2649c..dd2711df640b 100644
--- a/net/rds/cong.c
+++ b/net/rds/cong.c
@@ -218,8 +218,6 @@ void rds_cong_queue_updates(struct rds_cong_map *map)
218 spin_lock_irqsave(&rds_cong_lock, flags); 218 spin_lock_irqsave(&rds_cong_lock, flags);
219 219
220 list_for_each_entry(conn, &map->m_conn_list, c_map_item) { 220 list_for_each_entry(conn, &map->m_conn_list, c_map_item) {
221 if (conn->c_loopback)
222 continue;
223 if (!test_and_set_bit(0, &conn->c_map_queued)) { 221 if (!test_and_set_bit(0, &conn->c_map_queued)) {
224 rds_stats_inc(s_cong_update_queued); 222 rds_stats_inc(s_cong_update_queued);
225 queue_delayed_work(rds_wq, &conn->c_send_w, 0); 223 queue_delayed_work(rds_wq, &conn->c_send_w, 0);
diff --git a/net/rds/ib_send.c b/net/rds/ib_send.c
index f380c3f01256..c18228aec779 100644
--- a/net/rds/ib_send.c
+++ b/net/rds/ib_send.c
@@ -482,6 +482,13 @@ int rds_ib_xmit(struct rds_connection *conn, struct rds_message *rm,
482 BUG_ON(off % RDS_FRAG_SIZE); 482 BUG_ON(off % RDS_FRAG_SIZE);
483 BUG_ON(hdr_off != 0 && hdr_off != sizeof(struct rds_header)); 483 BUG_ON(hdr_off != 0 && hdr_off != sizeof(struct rds_header));
484 484
485 /* Do not send cong updates to IB loopback */
486 if (conn->c_loopback
487 && rm->m_inc.i_hdr.h_flags & RDS_FLAG_CONG_BITMAP) {
488 rds_cong_map_updated(conn->c_fcong, ~(u64) 0);
489 return sizeof(struct rds_header) + RDS_CONG_MAP_BYTES;
490 }
491
485 /* FIXME we may overallocate here */ 492 /* FIXME we may overallocate here */
486 if (be32_to_cpu(rm->m_inc.i_hdr.h_len) == 0) 493 if (be32_to_cpu(rm->m_inc.i_hdr.h_len) == 0)
487 i = 1; 494 i = 1;
diff --git a/net/rds/loop.c b/net/rds/loop.c
index 4a61997f554d..93a45f1ce61f 100644
--- a/net/rds/loop.c
+++ b/net/rds/loop.c
@@ -80,16 +80,9 @@ static int rds_loop_xmit_cong_map(struct rds_connection *conn,
80 struct rds_cong_map *map, 80 struct rds_cong_map *map,
81 unsigned long offset) 81 unsigned long offset)
82{ 82{
83 unsigned long i;
84
85 BUG_ON(offset); 83 BUG_ON(offset);
86 BUG_ON(map != conn->c_lcong); 84 BUG_ON(map != conn->c_lcong);
87 85
88 for (i = 0; i < RDS_CONG_MAP_PAGES; i++) {
89 memcpy((void *)conn->c_fcong->m_page_addrs[i],
90 (void *)map->m_page_addrs[i], PAGE_SIZE);
91 }
92
93 rds_cong_map_updated(conn->c_fcong, ~(u64) 0); 86 rds_cong_map_updated(conn->c_fcong, ~(u64) 0);
94 87
95 return sizeof(struct rds_header) + RDS_CONG_MAP_BYTES; 88 return sizeof(struct rds_header) + RDS_CONG_MAP_BYTES;