diff options
Diffstat (limited to 'net')
| -rw-r--r-- | net/rds/cong.c | 2 | ||||
| -rw-r--r-- | net/rds/ib_send.c | 7 | ||||
| -rw-r--r-- | net/rds/loop.c | 7 |
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; |
