# mlx5dv_query_port

## NAME



           mlx5dv_query_port - Query non standard attributes of IB device
           port.
    


## SYNOPSIS



                  #include <infiniband/mlx5dv.h>
    
                  int mlx5dv_query_port(struct ibv_context *context,
                                uint32_t port_num,
                                struct mlx5dv_port *info);
    


## DESCRIPTION



           Query port info which can be used for some device commands over
           the DEVX interface and when directly accessing the hardware
           resources.
    
           A function that lets a user query hardware and configuration
           attributes associated with the port.
    


## USAGE



           A user should provide the port number to query.  On successful
           query _flags_ will store a subset of the requested attributes which
           are supported/relevant for that port.
    


## ARGUMENTS



           _context_
                  RDMA device context to work on.
    
           _port_num_
                  Port number to query.
    
           ## _info_
                  Stores the returned attributes from the kernel.
    
                  struct mlx5dv_port {
                      uint64_t flags;
                      uint16_t vport;
                      uint16_t vport_vhca_id;
                      uint16_t esw_owner_vhca_id;
                      uint16_t rsvd0;
                      uint64_t vport_steering_icm_rx;
                      uint64_t vport_steering_icm_tx;
                      struct mlx5dv_reg reg_c0;
                  };
    
           _flags_  Bit field of attributes, on successful query _flags_ stores
                  the valid filled attributes.
    
                  MLX5DV_QUERY_PORT_VPORT: The vport number of that port.
    
                  MLX5DV_QUERY_PORT_VPORT_VHCA_ID: The VHCA ID of _vport_num_.
    
                  MLX5DV_QUERY_PORT_ESW_OWNER_VHCA_ID: The E-Switch owner of
                  _vport_num_.
    
                  MLX5DV_QUERY_PORT_VPORT_STEERING_ICM_RX: The ICM RX address
                  when directing traffic.
    
                  MLX5DV_QUERY_PORT_VPORT_STEERING_ICM_TX: The ICM TX address
                  when directing traffic.
    
                  MLX5DV_QUERY_PORT_VPORT_REG_C0: Register C0 value used to
                  identify egress of _vport_num_.
    
           _vport_  The VPORT number of that port.
    
           _vport_vhca_id_
                  The VHCA ID of _vport_num_.
    
           _rsvd0_  A reserved field.  Not to be used.
    
           _esw_owner_vhca_id_
                  The E-Switch owner of _vport_num_.
    
           _vport_steering_ica_rx_
                  The ICM RX address when directing traffic.
    
           _vport_steering_icm_tx_
                  The ICM TX address when directing traffic.
    
           ## reg_c0
                  Register C0 value used to identify traffic of _vport_num_.
    
                  struct mlx5dv_reg {
                          uint32_t value;
                          uint32_t mask;
                  };
    
           _value_  The value that should be used as match.
    
           _mask_   The mask that should be used when matching.
    


## RETURN VALUE



           returns 0 on success, or the value of errno on failure (which
           indicates the failure reason).
    


## EXAMPLE



                  for (i = 1; i <= ports; i++) {
                      ret = mlx5dv_query_port(context, i, &port_info);
                      if (ret) {
                          printf("Error querying port %d\n", i);
                          break;
                      }
    
                      printf("Port: %d:\n", i);
    
                      if (port_info.flags & MLX5DV_QUERY_PORT_VPORT)
                          printf("\tvport_num: 0x%x\n", port_info.vport_num);
    
                      if (port_info.flags & MLX5DV_QUERY_PORT_VPORT_REG_C0)
                          printf("\treg_c0: val: 0x%x mask: 0x%x\n",
                                  port_info.reg_c0.value,
                                  port_info.reg_c0.mask);
                  }
    
           Mark Bloch ⟨mbloch@nvidia.com⟩
    


* * *