@@ -266,6 +266,18 @@ cdef class Context(PyverbsCM):
266266 format(p = port_num), rc)
267267 return port_attrs
268268
269+ def query_port_speed (self , unsigned int port_num ):
270+ """
271+ Query port <port_num> speed in 100 Mb/s granularity.
272+ :param port_num: Port number to query
273+ :return: Port speed
274+ """
275+ cdef uint64_t port_speed
276+ rc = v.ibv_query_port_speed(self .context, port_num, & port_speed)
277+ if rc != 0 :
278+ raise PyverbsRDMAError(f' Failed to query port speed for port {port_num}' , rc)
279+ return port_speed
280+
269281 def query_gid_table (self , size_t max_entries , uint32_t flags = 0 ):
270282 """
271283 Queries the GID tables of the device for at most <max_entries> entries
@@ -854,6 +866,16 @@ cdef class DM(PyverbsCM):
854866 free(data)
855867 return res
856868
869+ def export_dmabuf_fd (self ):
870+ """
871+ Export a dmabuf FD for this DM object.
872+ :return: A file descriptor (int) for the dmabuf FD
873+ """
874+ fd = v.ibv_dm_export_dmabuf_fd(self .dm)
875+ if fd < 0 :
876+ raise PyverbsRDMAErrno(' Failed to export dmabuf FD for DM' )
877+ return fd
878+
857879 @property
858880 def handle (self ):
859881 return self .dm.handle
@@ -1266,7 +1288,8 @@ def translate_event_type(event_type):
12661288 e.IBV_EVENT_QP_LAST_WQE_REACHED: ' .IBV_EVENT_QP_LAST_WQE_REACHED' ,
12671289 e.IBV_EVENT_CLIENT_REREGISTER: ' IBV_EVENT_CLIENT_REREGISTER' ,
12681290 e.IBV_EVENT_GID_CHANGE: ' IBV_EVENT_GID_CHANGE' ,
1269- e.IBV_EVENT_WQ_FATAL: ' IBV_EVENT_WQ_FATAL'
1291+ e.IBV_EVENT_WQ_FATAL: ' IBV_EVENT_WQ_FATAL' ,
1292+ e.IBV_EVENT_DEVICE_SPEED_CHANGE: ' IBV_EVENT_DEVICE_SPEED_CHANGE'
12701293 }
12711294 try :
12721295 return types[event_type]
0 commit comments