blob: b10380cbc173392f67adb7d3b7c17b4031f5d5a7 [file] [log] [blame] [edit]
# SPDX-License-Identifier: (GPL-2.0 OR Linux-OpenIB)
# Copyright (c) 2021 Nvidia Inc. All rights reserved. See COPYING file
"""
Test module for mlx5 DevX.
"""
from tests.mlx5_base import Mlx5DevxRcResources, Mlx5DevxTrafficBase
import pyverbs.mem_alloc as mem
from pyverbs.mr import MR
import pyverbs.enums as e
import tests.utils as u
class Mlx5DevxRcOdpRes(Mlx5DevxRcResources):
@u.requires_odpv2
def create_mr(self):
self.with_odp = True
self.user_addr = mem.mmap(length=self.msg_size,
flags=mem.MAP_ANONYMOUS_ | mem.MAP_PRIVATE_)
access = e.IBV_ACCESS_LOCAL_WRITE | e.IBV_ACCESS_REMOTE_READ | \
e.IBV_ACCESS_ON_DEMAND
self.mr = MR(self.pd, self.msg_size, access, self.user_addr)
class Mlx5DevxRcTrafficTest(Mlx5DevxTrafficBase):
"""
Test various functionality of mlx5 DevX objects
"""
def test_devx_rc_qp_send_imm_traffic(self):
"""
Creates two DevX RC QPs and modifies them to RTS state.
Then does SEND_IMM traffic.
"""
self.create_players(Mlx5DevxRcResources)
# Send traffic
self.send_imm_traffic()
def test_devx_rc_qp_send_imm_doorbell_less_traffic(self):
"""
Creates two DevX RC QPs with dbr less ext and modifies them to RTS state.
Then does SEND_IMM traffic.
"""
from tests.mlx5_prm_structs import SendDbrMode
self.create_players(Mlx5DevxRcResources, send_dbr_mode=SendDbrMode.NO_DBR_EXT)
# Send traffic
self.send_imm_traffic()
@u.requires_odp('rc', e.IBV_ODP_SUPPORT_SEND | e.IBV_ODP_SUPPORT_RECV)
def test_devx_rc_qp_odp_traffic(self):
"""
Creates two DevX RC QPs using ODP enabled MKeys.
Then does SEND_IMM traffic.
"""
self.create_players(Mlx5DevxRcOdpRes)
# Send traffic
self.send_imm_traffic()