Lines Matching refs:ib_dev

115 static int write_gid(struct ib_device *ib_dev, u8 port,  in write_gid()  argument
131 if (rdma_cap_roce_gid_table(ib_dev, port)) { in write_gid()
138 ret = ib_dev->add_gid(ib_dev, port, ix, gid, attr, in write_gid()
141 ret = ib_dev->del_gid(ib_dev, port, ix, in write_gid()
167 if (!ret && rdma_cap_roce_gid_table(ib_dev, port)) { in write_gid()
170 event.device = ib_dev; in write_gid()
179 static int add_gid(struct ib_device *ib_dev, u8 port, in add_gid() argument
184 return write_gid(ib_dev, port, table, ix, gid, attr, in add_gid()
188 static int modify_gid(struct ib_device *ib_dev, u8 port, in modify_gid() argument
193 return write_gid(ib_dev, port, table, ix, gid, attr, in modify_gid()
197 static int del_gid(struct ib_device *ib_dev, u8 port, in del_gid() argument
200 return write_gid(ib_dev, port, table, ix, &zgid, &zattr, in del_gid()
247 int ib_cache_gid_add(struct ib_device *ib_dev, u8 port, in ib_cache_gid_add() argument
250 struct ib_gid_table **ports_table = ib_dev->cache.gid_cache; in ib_cache_gid_add()
256 table = ports_table[port - rdma_start_port(ib_dev)]; in ib_cache_gid_add()
261 if (ib_dev->get_netdev) { in ib_cache_gid_add()
262 idev = ib_dev->get_netdev(ib_dev, port); in ib_cache_gid_add()
291 add_gid(ib_dev, port, table, ix, gid, attr, false); in ib_cache_gid_add()
298 int ib_cache_gid_del(struct ib_device *ib_dev, u8 port, in ib_cache_gid_del() argument
301 struct ib_gid_table **ports_table = ib_dev->cache.gid_cache; in ib_cache_gid_del()
305 table = ports_table[port - rdma_start_port(ib_dev)]; in ib_cache_gid_del()
316 del_gid(ib_dev, port, table, ix, false); in ib_cache_gid_del()
323 int ib_cache_gid_del_all_netdev_gids(struct ib_device *ib_dev, u8 port, in ib_cache_gid_del_all_netdev_gids() argument
326 struct ib_gid_table **ports_table = ib_dev->cache.gid_cache; in ib_cache_gid_del_all_netdev_gids()
330 table = ports_table[port - rdma_start_port(ib_dev)]; in ib_cache_gid_del_all_netdev_gids()
336 del_gid(ib_dev, port, table, ix, false); in ib_cache_gid_del_all_netdev_gids()
342 static int __ib_cache_gid_get(struct ib_device *ib_dev, u8 port, int index, in __ib_cache_gid_get() argument
345 struct ib_gid_table **ports_table = ib_dev->cache.gid_cache; in __ib_cache_gid_get()
349 table = ports_table[port - rdma_start_port(ib_dev)]; in __ib_cache_gid_get()
371 static int _ib_cache_gid_table_find(struct ib_device *ib_dev, in _ib_cache_gid_table_find() argument
377 struct ib_gid_table **ports_table = ib_dev->cache.gid_cache; in _ib_cache_gid_table_find()
382 for (p = 0; p < ib_dev->phys_port_cnt; p++) { in _ib_cache_gid_table_find()
389 *port = p + rdma_start_port(ib_dev); in _ib_cache_gid_table_find()
397 static int ib_cache_gid_find(struct ib_device *ib_dev, in ib_cache_gid_find() argument
408 return _ib_cache_gid_table_find(ib_dev, gid, &gid_attr_val, in ib_cache_gid_find()
412 int ib_find_cached_gid_by_port(struct ib_device *ib_dev, in ib_find_cached_gid_by_port() argument
418 struct ib_gid_table **ports_table = ib_dev->cache.gid_cache; in ib_find_cached_gid_by_port()
423 if (port < rdma_start_port(ib_dev) || in ib_find_cached_gid_by_port()
424 port > rdma_end_port(ib_dev)) in ib_find_cached_gid_by_port()
427 table = ports_table[port - rdma_start_port(ib_dev)]; in ib_find_cached_gid_by_port()
463 static int ib_cache_gid_find_by_filter(struct ib_device *ib_dev, in ib_cache_gid_find_by_filter() argument
472 struct ib_gid_table **ports_table = ib_dev->cache.gid_cache; in ib_cache_gid_find_by_filter()
480 if (port < rdma_start_port(ib_dev) || in ib_cache_gid_find_by_filter()
481 port > rdma_end_port(ib_dev) || in ib_cache_gid_find_by_filter()
482 !rdma_protocol_roce(ib_dev, port)) in ib_cache_gid_find_by_filter()
485 table = ports_table[port - rdma_start_port(ib_dev)]; in ib_cache_gid_find_by_filter()
552 static void cleanup_gid_table_port(struct ib_device *ib_dev, u8 port, in cleanup_gid_table_port() argument
563 del_gid(ib_dev, port, table, i, in cleanup_gid_table_port()
569 void ib_cache_gid_set_default_gid(struct ib_device *ib_dev, u8 port, in ib_cache_gid_set_default_gid() argument
573 struct ib_gid_table **ports_table = ib_dev->cache.gid_cache; in ib_cache_gid_set_default_gid()
581 table = ports_table[port - rdma_start_port(ib_dev)]; in ib_cache_gid_set_default_gid()
593 if (!__ib_cache_gid_get(ib_dev, port, ix, in ib_cache_gid_set_default_gid()
603 del_gid(ib_dev, port, table, ix, true)) { in ib_cache_gid_set_default_gid()
610 if (add_gid(ib_dev, port, table, ix, &gid, &gid_attr, true)) in ib_cache_gid_set_default_gid()
620 static int gid_table_reserve_default(struct ib_device *ib_dev, u8 port, in gid_table_reserve_default() argument
623 if (rdma_protocol_roce(ib_dev, port)) { in gid_table_reserve_default()
632 static int _gid_table_setup_one(struct ib_device *ib_dev) in _gid_table_setup_one() argument
638 table = kcalloc(ib_dev->phys_port_cnt, sizeof(*table), GFP_KERNEL); in _gid_table_setup_one()
642 ib_dev->name); in _gid_table_setup_one()
646 for (port = 0; port < ib_dev->phys_port_cnt; port++) { in _gid_table_setup_one()
647 u8 rdma_port = port + rdma_start_port(ib_dev); in _gid_table_setup_one()
651 ib_dev->port_immutable[rdma_port].gid_tbl_len); in _gid_table_setup_one()
657 err = gid_table_reserve_default(ib_dev, in _gid_table_setup_one()
658 port + rdma_start_port(ib_dev), in _gid_table_setup_one()
664 ib_dev->cache.gid_cache = table; in _gid_table_setup_one()
668 for (port = 0; port < ib_dev->phys_port_cnt; port++) { in _gid_table_setup_one()
669 cleanup_gid_table_port(ib_dev, port + rdma_start_port(ib_dev), in _gid_table_setup_one()
678 static void gid_table_release_one(struct ib_device *ib_dev) in gid_table_release_one() argument
680 struct ib_gid_table **table = ib_dev->cache.gid_cache; in gid_table_release_one()
686 for (port = 0; port < ib_dev->phys_port_cnt; port++) in gid_table_release_one()
690 ib_dev->cache.gid_cache = NULL; in gid_table_release_one()
693 static void gid_table_cleanup_one(struct ib_device *ib_dev) in gid_table_cleanup_one() argument
695 struct ib_gid_table **table = ib_dev->cache.gid_cache; in gid_table_cleanup_one()
701 for (port = 0; port < ib_dev->phys_port_cnt; port++) in gid_table_cleanup_one()
702 cleanup_gid_table_port(ib_dev, port + rdma_start_port(ib_dev), in gid_table_cleanup_one()
706 static int gid_table_setup_one(struct ib_device *ib_dev) in gid_table_setup_one() argument
710 err = _gid_table_setup_one(ib_dev); in gid_table_setup_one()
715 err = roce_rescan_device(ib_dev); in gid_table_setup_one()
718 gid_table_cleanup_one(ib_dev); in gid_table_setup_one()
719 gid_table_release_one(ib_dev); in gid_table_setup_one()