Lines Matching refs:rds_ibdev
112 struct rds_ib_device *rds_ibdev; in rds_ib_get_device() local
116 list_for_each_entry_rcu(rds_ibdev, &rds_ib_devices, list) { in rds_ib_get_device()
117 list_for_each_entry_rcu(i_ipaddr, &rds_ibdev->ipaddr_list, list) { in rds_ib_get_device()
119 atomic_inc(&rds_ibdev->refcount); in rds_ib_get_device()
121 return rds_ibdev; in rds_ib_get_device()
130 static int rds_ib_add_ipaddr(struct rds_ib_device *rds_ibdev, __be32 ipaddr) in rds_ib_add_ipaddr() argument
140 spin_lock_irq(&rds_ibdev->spinlock); in rds_ib_add_ipaddr()
141 list_add_tail_rcu(&i_ipaddr->list, &rds_ibdev->ipaddr_list); in rds_ib_add_ipaddr()
142 spin_unlock_irq(&rds_ibdev->spinlock); in rds_ib_add_ipaddr()
147 static void rds_ib_remove_ipaddr(struct rds_ib_device *rds_ibdev, __be32 ipaddr) in rds_ib_remove_ipaddr() argument
153 spin_lock_irq(&rds_ibdev->spinlock); in rds_ib_remove_ipaddr()
154 list_for_each_entry_rcu(i_ipaddr, &rds_ibdev->ipaddr_list, list) { in rds_ib_remove_ipaddr()
161 spin_unlock_irq(&rds_ibdev->spinlock); in rds_ib_remove_ipaddr()
167 int rds_ib_update_ipaddr(struct rds_ib_device *rds_ibdev, __be32 ipaddr) in rds_ib_update_ipaddr() argument
173 return rds_ib_add_ipaddr(rds_ibdev, ipaddr); in rds_ib_update_ipaddr()
175 if (rds_ibdev_old != rds_ibdev) { in rds_ib_update_ipaddr()
178 return rds_ib_add_ipaddr(rds_ibdev, ipaddr); in rds_ib_update_ipaddr()
185 void rds_ib_add_conn(struct rds_ib_device *rds_ibdev, struct rds_connection *conn) in rds_ib_add_conn() argument
195 spin_lock(&rds_ibdev->spinlock); in rds_ib_add_conn()
196 list_add_tail(&ic->ib_node, &rds_ibdev->conn_list); in rds_ib_add_conn()
197 spin_unlock(&rds_ibdev->spinlock); in rds_ib_add_conn()
200 ic->rds_ibdev = rds_ibdev; in rds_ib_add_conn()
201 atomic_inc(&rds_ibdev->refcount); in rds_ib_add_conn()
204 void rds_ib_remove_conn(struct rds_ib_device *rds_ibdev, struct rds_connection *conn) in rds_ib_remove_conn() argument
211 spin_lock_irq(&rds_ibdev->spinlock); in rds_ib_remove_conn()
214 spin_unlock_irq(&rds_ibdev->spinlock); in rds_ib_remove_conn()
220 ic->rds_ibdev = NULL; in rds_ib_remove_conn()
221 rds_ib_dev_put(rds_ibdev); in rds_ib_remove_conn()
238 struct rds_ib_mr_pool *rds_ib_create_mr_pool(struct rds_ib_device *rds_ibdev, in rds_ib_create_mr_pool() argument
266 pool->fmr_attr.max_maps = rds_ibdev->fmr_max_remaps; in rds_ib_create_mr_pool()
268 pool->max_items_soft = rds_ibdev->max_fmrs * 3 / 4; in rds_ib_create_mr_pool()
273 void rds_ib_get_mr_info(struct rds_ib_device *rds_ibdev, struct rds_info_rdma_connection *iinfo) in rds_ib_get_mr_info() argument
275 struct rds_ib_mr_pool *pool_1m = rds_ibdev->mr_1m_pool; in rds_ib_get_mr_info()
320 static struct rds_ib_mr *rds_ib_alloc_fmr(struct rds_ib_device *rds_ibdev, in rds_ib_alloc_fmr() argument
328 pool = rds_ibdev->mr_8k_pool; in rds_ib_alloc_fmr()
330 pool = rds_ibdev->mr_1m_pool; in rds_ib_alloc_fmr()
338 pool = rds_ibdev->mr_1m_pool; in rds_ib_alloc_fmr()
340 pool = rds_ibdev->mr_8k_pool; in rds_ib_alloc_fmr()
380 ibmr = kzalloc_node(sizeof(*ibmr), GFP_KERNEL, rdsibdev_to_node(rds_ibdev)); in rds_ib_alloc_fmr()
386 ibmr->fmr = ib_alloc_fmr(rds_ibdev->pd, in rds_ib_alloc_fmr()
417 static int rds_ib_map_fmr(struct rds_ib_device *rds_ibdev, struct rds_ib_mr *ibmr, in rds_ib_map_fmr() argument
420 struct ib_device *dev = rds_ibdev->dev; in rds_ib_map_fmr()
464 rdsibdev_to_node(rds_ibdev)); in rds_ib_map_fmr()
507 struct rds_ib_device *rds_ibdev = ibmr->device; in rds_ib_sync_mr() local
511 ib_dma_sync_sg_for_cpu(rds_ibdev->dev, ibmr->sg, in rds_ib_sync_mr()
515 ib_dma_sync_sg_for_device(rds_ibdev->dev, ibmr->sg, in rds_ib_sync_mr()
523 struct rds_ib_device *rds_ibdev = ibmr->device; in __rds_ib_teardown_mr() local
526 ib_dma_unmap_sg(rds_ibdev->dev, in __rds_ib_teardown_mr()
760 struct rds_ib_device *rds_ibdev = ibmr->device; in rds_ib_free_mr() local
790 rds_ib_dev_put(rds_ibdev); in rds_ib_free_mr()
795 struct rds_ib_device *rds_ibdev; in rds_ib_flush_mrs() local
798 list_for_each_entry(rds_ibdev, &rds_ib_devices, list) { in rds_ib_flush_mrs()
799 if (rds_ibdev->mr_8k_pool) in rds_ib_flush_mrs()
800 rds_ib_flush_mr_pool(rds_ibdev->mr_8k_pool, 0, NULL); in rds_ib_flush_mrs()
802 if (rds_ibdev->mr_1m_pool) in rds_ib_flush_mrs()
803 rds_ib_flush_mr_pool(rds_ibdev->mr_1m_pool, 0, NULL); in rds_ib_flush_mrs()
811 struct rds_ib_device *rds_ibdev; in rds_ib_get_mr() local
815 rds_ibdev = rds_ib_get_device(rs->rs_bound_addr); in rds_ib_get_mr()
816 if (!rds_ibdev) { in rds_ib_get_mr()
821 if (!rds_ibdev->mr_8k_pool || !rds_ibdev->mr_1m_pool) { in rds_ib_get_mr()
826 ibmr = rds_ib_alloc_fmr(rds_ibdev, nents); in rds_ib_get_mr()
828 rds_ib_dev_put(rds_ibdev); in rds_ib_get_mr()
832 ret = rds_ib_map_fmr(rds_ibdev, ibmr, sg, nents); in rds_ib_get_mr()
838 ibmr->device = rds_ibdev; in rds_ib_get_mr()
839 rds_ibdev = NULL; in rds_ib_get_mr()
847 if (rds_ibdev) in rds_ib_get_mr()
848 rds_ib_dev_put(rds_ibdev); in rds_ib_get_mr()