diff options
Diffstat (limited to 'net/rds/ib.h')
| -rw-r--r-- | net/rds/ib.h | 15 | 
1 files changed, 10 insertions, 5 deletions
diff --git a/net/rds/ib.h b/net/rds/ib.h index f2b558e8b5ea..6e6f24753998 100644 --- a/net/rds/ib.h +++ b/net/rds/ib.h @@ -165,8 +165,8 @@ struct rds_ib_connection {  	/* tx */  	struct rds_ib_work_ring	i_send_ring;  	struct rm_data_op	*i_data_op; -	struct rds_header	*i_send_hdrs; -	dma_addr_t		i_send_hdrs_dma; +	struct rds_header	**i_send_hdrs; +	dma_addr_t		*i_send_hdrs_dma;  	struct rds_ib_send_work *i_sends;  	atomic_t		i_signaled_sends; @@ -175,8 +175,8 @@ struct rds_ib_connection {  	struct rds_ib_work_ring	i_recv_ring;  	struct rds_ib_incoming	*i_ibinc;  	u32			i_recv_data_rem; -	struct rds_header	*i_recv_hdrs; -	dma_addr_t		i_recv_hdrs_dma; +	struct rds_header	**i_recv_hdrs; +	dma_addr_t		*i_recv_hdrs_dma;  	struct rds_ib_recv_work *i_recvs;  	u64			i_ack_recv;	/* last ACK received */  	struct rds_ib_refill_cache i_cache_incs; @@ -246,6 +246,7 @@ struct rds_ib_device {  	struct list_head	conn_list;  	struct ib_device	*dev;  	struct ib_pd		*pd; +	struct dma_pool		*rid_hdrs_pool; /* RDS headers DMA pool */  	bool                    use_fastreg;  	unsigned int		max_mrs; @@ -381,7 +382,11 @@ int rds_ib_cm_handle_connect(struct rdma_cm_id *cm_id,  int rds_ib_cm_initiate_connect(struct rdma_cm_id *cm_id, bool isv6);  void rds_ib_cm_connect_complete(struct rds_connection *conn,  				struct rdma_cm_event *event); - +struct rds_header **rds_dma_hdrs_alloc(struct ib_device *ibdev, +				       struct dma_pool *pool, +				       dma_addr_t **dma_addrs, u32 num_hdrs); +void rds_dma_hdrs_free(struct dma_pool *pool, struct rds_header **hdrs, +		       dma_addr_t *dma_addrs, u32 num_hdrs);  #define rds_ib_conn_error(conn, fmt...) \  	__rds_ib_conn_error(conn, KERN_WARNING "RDS/IB: " fmt)  |