Lines Matching refs:ibdev

135 static union ib_gid gid_from_req_msg(struct ib_device *ibdev, struct ib_mad *mad)  in gid_from_req_msg()  argument
144 id_map_find_by_sl_id(struct ib_device *ibdev, u32 slave_id, u32 sl_cm_id) in id_map_find_by_sl_id() argument
146 struct rb_root *sl_id_map = &to_mdev(ibdev)->sriov.sl_id_map; in id_map_find_by_sl_id()
192 static void id_map_find_del(struct ib_device *ibdev, int pv_cm_id) in id_map_find_del() argument
194 struct mlx4_ib_sriov *sriov = &to_mdev(ibdev)->sriov; in id_map_find_del()
202 found_ent = id_map_find_by_sl_id(ibdev, ent->slave_id, ent->sl_cm_id); in id_map_find_del()
210 static void sl_id_map_add(struct ib_device *ibdev, struct id_map_entry *new) in sl_id_map_add() argument
212 struct rb_root *sl_id_map = &to_mdev(ibdev)->sriov.sl_id_map; in sl_id_map_add()
218 ent = id_map_find_by_sl_id(ibdev, slave_id, sl_cm_id); in sl_id_map_add()
243 id_map_alloc(struct ib_device *ibdev, int slave_id, u32 sl_cm_id) in id_map_alloc() argument
247 struct mlx4_ib_sriov *sriov = &to_mdev(ibdev)->sriov; in id_map_alloc()
251 mlx4_ib_warn(ibdev, "Couldn't allocate id cache entry - out of memory\n"); in id_map_alloc()
258 ent->dev = to_mdev(ibdev); in id_map_alloc()
262 spin_lock(&to_mdev(ibdev)->sriov.id_map_lock); in id_map_alloc()
267 sl_id_map_add(ibdev, ent); in id_map_alloc()
279 mlx4_ib_warn(ibdev, "No more space in the idr (err:0x%x)\n", ret); in id_map_alloc()
284 id_map_get(struct ib_device *ibdev, int *pv_cm_id, int sl_cm_id, int slave_id) in id_map_get() argument
287 struct mlx4_ib_sriov *sriov = &to_mdev(ibdev)->sriov; in id_map_get()
291 ent = id_map_find_by_sl_id(ibdev, sl_cm_id, slave_id); in id_map_get()
301 static void schedule_delayed(struct ib_device *ibdev, struct id_map_entry *id) in schedule_delayed() argument
303 struct mlx4_ib_sriov *sriov = &to_mdev(ibdev)->sriov; in schedule_delayed()
317 int mlx4_ib_multiplex_cm_handler(struct ib_device *ibdev, int port, int slave_id, in mlx4_ib_multiplex_cm_handler() argument
328 id = id_map_alloc(ibdev, slave_id, sl_cm_id); in mlx4_ib_multiplex_cm_handler()
330 mlx4_ib_warn(ibdev, "%s: id{slave: %d, sl_cm_id: 0x%x} Failed to id_map_alloc\n", in mlx4_ib_multiplex_cm_handler()
339 id = id_map_get(ibdev, &pv_cm_id, slave_id, sl_cm_id); in mlx4_ib_multiplex_cm_handler()
351 schedule_delayed(ibdev, id); in mlx4_ib_multiplex_cm_handler()
353 id_map_find_del(ibdev, pv_cm_id); in mlx4_ib_multiplex_cm_handler()
358 int mlx4_ib_demux_cm_handler(struct ib_device *ibdev, int port, int *slave, in mlx4_ib_demux_cm_handler() argument
371 gid = gid_from_req_msg(ibdev, mad); in mlx4_ib_demux_cm_handler()
372 *slave = mlx4_ib_find_real_gid(ibdev, port, gid.global.interface_id); in mlx4_ib_demux_cm_handler()
374 mlx4_ib_warn(ibdev, "failed matching slave_id by gid (0x%llx)\n", in mlx4_ib_demux_cm_handler()
382 id = id_map_get(ibdev, (int *)&pv_cm_id, -1, -1); in mlx4_ib_demux_cm_handler()
394 schedule_delayed(ibdev, id); in mlx4_ib_demux_cm_handler()
397 id_map_find_del(ibdev, (int) pv_cm_id); in mlx4_ib_demux_cm_handler()