| # SPDX-License-Identifier: (GPL-2.0 OR Linux-OpenIB) |
| # Copyright (c) 2019 Mellanox Technologies, Inc. All rights reserved. See COPYING file |
| |
| """ |
| Test module for Mlx5 VAR allocation. |
| """ |
| |
| from pyverbs.pyverbs_error import PyverbsRDMAError |
| from pyverbs.providers.mlx5.mlx5dv import Mlx5VAR |
| from tests.mlx5_base import Mlx5RDMATestCase |
| from tests.base import BaseResources |
| import unittest |
| import errno |
| import mmap |
| |
| |
| class Mlx5VarRes(BaseResources): |
| def __init__(self, dev_name, ib_port=None, gid_index=None): |
| super().__init__(dev_name, ib_port, gid_index) |
| try: |
| self.var = Mlx5VAR(self.ctx) |
| except PyverbsRDMAError as ex: |
| if ex.error_code == errno.EOPNOTSUPP or ex.error_code == errno.EPROTONOSUPPORT: |
| raise unittest.SkipTest('VAR allocation is not supported') |
| |
| |
| class Mlx5VarTestCase(Mlx5RDMATestCase): |
| def setUp(self): |
| super().setUp() |
| self.var_res = Mlx5VarRes(self.dev_name) |
| |
| def test_var_map_unmap(self): |
| var_map = mmap.mmap(fileno=self.var_res.ctx.cmd_fd, |
| length=self.var_res.var.length, |
| offset=self.var_res.var.mmap_off) |
| # There is no munmap method in mmap Python module, but by closing the |
| # mmap instance the memory is unmapped. |
| var_map.close() |
| self.var_res.var.close() |