MCPcopy Create free account
hub / github.com/F-Stack/f-stack / mlx4_mr_release

Function mlx4_mr_release

dpdk/drivers/net/mlx4/mlx4_mr.c:1427–1456  ·  view source on GitHub ↗

* Release all the created MRs and resources. Remove device from memory callback * list. * * @param dev * Pointer to Ethernet device. */

Source from the content-addressed store, hash-verified

1425 * Pointer to Ethernet device.
1426 */
1427void
1428mlx4_mr_release(struct rte_eth_dev *dev)
1429{
1430 struct mlx4_priv *priv = dev->data->dev_private;
1431 struct mlx4_mr *mr_next;
1432
1433 /* Remove from memory callback device list. */
1434 rte_rwlock_write_lock(&mlx4_shared_data->mem_event_rwlock);
1435 LIST_REMOVE(priv, mem_event_cb);
1436 rte_rwlock_write_unlock(&mlx4_shared_data->mem_event_rwlock);
1437#ifdef RTE_LIBRTE_MLX4_DEBUG
1438 mlx4_mr_dump_dev(dev);
1439#endif
1440 rte_rwlock_write_lock(&priv->mr.rwlock);
1441 /* Detach from MR list and move to free list. */
1442 mr_next = LIST_FIRST(&priv->mr.mr_list);
1443 while (mr_next != NULL) {
1444 struct mlx4_mr *mr = mr_next;
1445
1446 mr_next = LIST_NEXT(mr, mr);
1447 LIST_REMOVE(mr, mr);
1448 LIST_INSERT_HEAD(&priv->mr.mr_free_list, mr, mr);
1449 }
1450 LIST_INIT(&priv->mr.mr_list);
1451 /* Free global cache. */
1452 mlx4_mr_btree_free(&priv->mr.cache);
1453 rte_rwlock_write_unlock(&priv->mr.rwlock);
1454 /* Free all remaining MRs. */
1455 mlx4_mr_garbage_collect(dev);
1456}

Callers 1

mlx4_dev_closeFunction · 0.85

Calls 3

mlx4_mr_dump_devFunction · 0.85
mlx4_mr_btree_freeFunction · 0.85
mlx4_mr_garbage_collectFunction · 0.85

Tested by

no test coverage detected