diff options
Diffstat (limited to 'net/rds/ib_send.c')
| -rw-r--r-- | net/rds/ib_send.c | 14 | 
1 files changed, 8 insertions, 6 deletions
diff --git a/net/rds/ib_send.c b/net/rds/ib_send.c index 71f373c421b..1dde91e3dc7 100644 --- a/net/rds/ib_send.c +++ b/net/rds/ib_send.c @@ -34,6 +34,7 @@  #include <linux/in.h>  #include <linux/device.h>  #include <linux/dmapool.h> +#include <linux/ratelimit.h>  #include "rds.h"  #include "ib.h" @@ -207,8 +208,7 @@ static struct rds_message *rds_ib_send_unmap_op(struct rds_ib_connection *ic,  		}  		break;  	default: -		if (printk_ratelimit()) -			printk(KERN_NOTICE +		printk_ratelimited(KERN_NOTICE  			       "RDS/IB: %s: unexpected opcode 0x%x in WR!\n",  			       __func__, send->s_wr.opcode);  		break; @@ -298,7 +298,7 @@ void rds_ib_send_cq_comp_handler(struct ib_cq *cq, void *context)  		rds_ib_stats_inc(s_ib_tx_cq_event);  		if (wc.wr_id == RDS_IB_ACK_WR_ID) { -			if (ic->i_ack_queued + HZ/2 < jiffies) +			if (time_after(jiffies, ic->i_ack_queued + HZ/2))  				rds_ib_stats_inc(s_ib_tx_stalled);  			rds_ib_ack_send_complete(ic);  			continue; @@ -315,7 +315,7 @@ void rds_ib_send_cq_comp_handler(struct ib_cq *cq, void *context)  			rm = rds_ib_send_unmap_op(ic, send, wc.status); -			if (send->s_queued + HZ/2 < jiffies) +			if (time_after(jiffies, send->s_queued + HZ/2))  				rds_ib_stats_inc(s_ib_tx_stalled);  			if (send->s_op) { @@ -355,7 +355,7 @@ void rds_ib_send_cq_comp_handler(struct ib_cq *cq, void *context)   *   * Conceptually, we have two counters:   *  -	send credits: this tells us how many WRs we're allowed - *	to submit without overruning the reciever's queue. For + *	to submit without overruning the receiver's queue. For   *	each SEND WR we post, we decrement this by one.   *   *  -	posted credits: this tells us how many WRs we recently @@ -551,7 +551,9 @@ int rds_ib_xmit(struct rds_connection *conn, struct rds_message *rm,  	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; +		scat = &rm->data.op_sg[sg]; +		ret = max_t(int, RDS_CONG_MAP_BYTES, scat->length); +		return sizeof(struct rds_header) + ret;  	}  	/* FIXME we may overallocate here */  | 
