iPXE
|
#include "../include/mlx_port.h"
#include "../include/mlx_cmd.h"
#include "../../mlx_utils/include/public/mlx_memory.h"
#include "../../mlx_utils/include/public/mlx_pci.h"
#include "../../mlx_utils/include/public/mlx_bail.h"
Go to the source code of this file.
Macros | |
#define | PortDataEntry(_option, _offset, _align, _mask) |
#define | QpDataEntry(_type, _send_offset, _recv_offset) |
#define | MAX_QP_DATA_ENTRIES 5 |
#define | MAX_NODNIC_PORTS 2 |
#define | NODNIC_PORT_ARM_CQ_DBR_ADDR_LOW_OFFSET 0x114 |
#define | NODNIC_PORT_ARM_CQ_DBR_ADDR_HIGH_OFFSET 0x110 |
#define | NODIC_CQ_ADDR_HIGH 0x68 |
#define | NODIC_CQ_ADDR_LOW 0x6c |
#define | NODNIC_RING_DBR_ADDR_LOW_OFFSET 0x1C |
#define | NODNIC_RING_DBR_ADDR_HIGH_OFFSET 0x18 |
#define | NODIC_RING_QP_ADDR_HIGH 0x0 |
#define | NODIC_RING_QP_ADDR_LOW 0x4 |
#define | NODNIC_RING_QPN_OFFSET 0xc |
#define | NODNIC_RING_QPN_MASK 0xFFFFFF |
#define | NODNIC_RING_RING_OFFSET 0x8 |
Variables | |
struct nodnic_port_data_entry | nodnic_port_data_table [] |
struct nodnic_qp_data_entry | nodnic_qp_data_teable [MAX_QP_DATA_ENTRIES] |
int | nodnic_port_offset_table [MAX_NODNIC_PORTS] |
#define PortDataEntry | ( | _option, | |
_offset, | |||
_align, | |||
_mask | |||
) |
Definition at line 28 of file mlx_port.c.
#define QpDataEntry | ( | _type, | |
_send_offset, | |||
_recv_offset | |||
) |
Definition at line 35 of file mlx_port.c.
#define MAX_QP_DATA_ENTRIES 5 |
Definition at line 72 of file mlx_port.c.
#define MAX_NODNIC_PORTS 2 |
Definition at line 81 of file mlx_port.c.
#define NODNIC_PORT_ARM_CQ_DBR_ADDR_LOW_OFFSET 0x114 |
#define NODNIC_PORT_ARM_CQ_DBR_ADDR_HIGH_OFFSET 0x110 |
#define NODIC_CQ_ADDR_HIGH 0x68 |
#define NODIC_CQ_ADDR_LOW 0x6c |
#define NODNIC_RING_DBR_ADDR_LOW_OFFSET 0x1C |
#define NODNIC_RING_DBR_ADDR_HIGH_OFFSET 0x18 |
#define NODIC_RING_QP_ADDR_HIGH 0x0 |
#define NODIC_RING_QP_ADDR_LOW 0x4 |
#define NODNIC_RING_QPN_OFFSET 0xc |
#define NODNIC_RING_QPN_MASK 0xFFFFFF |
#define NODNIC_RING_RING_OFFSET 0x8 |
FILE_LICENCE | ( | GPL2_OR_LATER | ) |
mlx_status nodnic_port_get_state | ( | IN nodnic_port_priv * | port_priv, |
OUT nodnic_port_state * | state | ||
) |
Definition at line 88 of file mlx_port.c.
References MLX_CHECK_STATUS, MLX_SUCCESS, nodnic_port_option_port_state, nodnic_port_query(), out, state, and status.
Referenced by flexboot_nodnic_eth_open(), and flexboot_nodnic_poll_eq().
mlx_status nodnic_port_get_type | ( | IN nodnic_port_priv * | port_priv, |
OUT nodnic_port_type * | type | ||
) |
Definition at line 105 of file mlx_port.c.
References MLX_FATAL_CHECK_STATUS, MLX_SUCCESS, nodnic_port_option_link_type, nodnic_port_query(), NODNIC_PORT_TYPE_UNKNOWN, out, status, and type.
Referenced by flexboot_nodnic_set_ports_type().
mlx_status nodnic_port_query | ( | IN nodnic_port_priv * | port_priv, |
IN nodnic_port_option | option, | ||
OUT mlx_uint32 * | out | ||
) |
Definition at line 126 of file mlx_port.c.
References nodnic_port_data_entry::align, buffer, nodnic_port_data_entry::mask, MLX_CHECK_STATUS, MLX_INVALID_PARAMETER, MLX_SUCCESS, nodnic_cmd_read(), nodnic_port_data_table, NULL, nodnic_port_data_entry::offset, nodnic_port_data_entry::option, out, and status.
Referenced by flexboot_nodnic_create_cq(), flexboot_nodnic_register_netdev(), nodnic_port_add_mac_filter(), nodnic_port_get_cq_size(), nodnic_port_get_state(), nodnic_port_get_type(), nodnic_port_read_port_management_change_event(), nodnic_port_read_reset_needed(), nodnic_port_remove_mac_filter(), and nodnic_port_set_send_uar_offset().
mlx_status nodnic_port_set | ( | IN nodnic_port_priv * | port_priv, |
IN nodnic_port_option | option, | ||
IN mlx_uint32 | in | ||
) |
Definition at line 155 of file mlx_port.c.
References nodnic_port_data_entry::align, buffer, in, nodnic_port_data_entry::mask, MLX_DEBUG_FATAL_ERROR, MLX_FATAL_CHECK_STATUS, MLX_INVALID_PARAMETER, MLX_SUCCESS, nodnic_cmd_read(), nodnic_cmd_write(), nodnic_port_data_table, NULL, nodnic_port_data_entry::offset, nodnic_port_data_entry::option, and status.
Referenced by flexboot_nodnic_arm_cq(), nodnic_port_add_mac_filter(), nodnic_port_allocate_eq(), nodnic_port_create_cq(), nodnic_port_remove_mac_filter(), nodnic_port_set_dma(), nodnic_port_set_network(), nodnic_port_set_promisc(), nodnic_port_set_promisc_multicast(), and nodnic_port_thin_init().
mlx_status nodnic_port_set_send_uar_offset | ( | IN nodnic_port_priv * | port_priv | ) |
Definition at line 197 of file mlx_port.c.
References MLX_CHECK_STATUS, MLX_DEBUG_INFO1, MLX_SUCCESS, MLX_UNSUPPORTED, nodnic_port_option_send_ring0_uar_index, nodnic_port_query(), out, and status.
Referenced by flexboot_nodnic_alloc_uar().
mlx_status nodnic_port_read_reset_needed | ( | IN nodnic_port_priv * | port_priv, |
OUT mlx_boolean * | reset_needed | ||
) |
Definition at line 221 of file mlx_port.c.
References MLX_CHECK_STATUS, MLX_SUCCESS, nodnic_port_option_reset_needed, nodnic_port_query(), out, and status.
Referenced by nodnic_port_thin_init().
mlx_status nodnic_port_read_port_management_change_event | ( | IN nodnic_port_priv * | port_priv, |
OUT mlx_boolean * | change_event | ||
) |
Definition at line 238 of file mlx_port.c.
References MLX_CHECK_STATUS, MLX_SUCCESS, nodnic_port_option_port_management_change_event, nodnic_port_query(), out, and status.
|
static |
Definition at line 256 of file mlx_port.c.
References address, map, MLX_FATAL_CHECK_STATUS, MLX_INVALID_PARAMETER, mlx_memory_alloc_dma(), mlx_memory_free_dma(), mlx_memory_map_dma(), mlx_memory_ummap_dma(), MLX_SUCCESS, nodnic_cmd_write(), NODNIC_MEMORY_ALIGN, NULL, size, status, and _nodnic_device_priv::utils.
Referenced by nodnic_port_allocate_ring_db_dma(), and nodnic_port_cq_dbr_dma_init().
|
static |
Definition at line 321 of file mlx_port.c.
References _nodnic_device_priv::device_cap, MLX_FATAL_CHECK_STATUS, MLX_INVALID_PARAMETER, MLX_SUCCESS, MLX_UNSUPPORTED, nodnic_port_allocate_dbr_dma(), NODNIC_PORT_ARM_CQ_DBR_ADDR_HIGH_OFFSET, NODNIC_PORT_ARM_CQ_DBR_ADDR_LOW_OFFSET, NULL, status, and _nodnic_device_capabilites::support_bar_cq_ctrl.
Referenced by nodnic_port_create_cq().
mlx_status nodnic_port_create_cq | ( | IN nodnic_port_priv * | port_priv, |
IN mlx_size | cq_size, | ||
OUT nodnic_cq ** | cq | ||
) |
Definition at line 360 of file mlx_port.c.
References address, MLX_FATAL_CHECK_STATUS, MLX_INVALID_PARAMETER, mlx_memory_alloc_dma(), mlx_memory_free(), mlx_memory_free_dma(), mlx_memory_map_dma(), mlx_memory_ummap_dma(), mlx_memory_zalloc(), MLX_SUCCESS, NODNIC_MEMORY_ALIGN, nodnic_port_cq_dbr_dma_init(), nodnic_port_option_cq_addr_high, nodnic_port_option_cq_addr_low, nodnic_port_set(), NULL, status, and _nodnic_device_priv::utils.
Referenced by flexboot_nodnic_create_cq().
mlx_status nodnic_port_destroy_cq | ( | IN nodnic_port_priv * | port_priv, |
IN nodnic_cq * | cq | ||
) |
Definition at line 426 of file mlx_port.c.
References _nodnic_device_priv::device_cap, MLX_DEBUG_ERROR, MLX_INVALID_PARAMETER, mlx_memory_free(), mlx_memory_free_dma(), mlx_memory_ummap_dma(), MLX_SUCCESS, NULL, status, _nodnic_device_capabilites::support_bar_cq_ctrl, and _nodnic_device_priv::utils.
Referenced by flexboot_nodnic_destroy_cq().
|
static |
Definition at line 467 of file mlx_port.c.
References nodnic_ring::map, MLX_FATAL_CHECK_STATUS, MLX_INVALID_PARAMETER, MLX_SUCCESS, nodnic_port_allocate_dbr_dma(), NODNIC_RING_DBR_ADDR_HIGH_OFFSET, NODNIC_RING_DBR_ADDR_LOW_OFFSET, NULL, nodnic_ring::offset, and status.
Referenced by nodnic_port_rx_pi_dma_alloc(), and nodnic_port_tx_dbr_dma_init().
|
static |
Definition at line 498 of file mlx_port.c.
References _nodnic_device_priv::device_cap, MLX_FATAL_CHECK_STATUS, MLX_INVALID_PARAMETER, MLX_SUCCESS, nodnic_port_allocate_ring_db_dma(), NULL, qp, status, and _nodnic_device_capabilites::support_rx_pi_dma.
Referenced by nodnic_port_create_qp().
|
static |
Definition at line 534 of file mlx_port.c.
References index, mlx_memory_cpu_to_be32(), and MLX_SUCCESS.
Referenced by nodnic_port_tx_dbr_dma_init().
|
static |
Definition at line 550 of file mlx_port.c.
References _nodnic_device_priv::device_cap, MLX_FATAL_CHECK_STATUS, MLX_INVALID_PARAMETER, MLX_SUCCESS, MLX_UNSUPPORTED, nodnic_port_allocate_ring_db_dma(), nodnic_port_send_db_dma(), NULL, _nodnic_uar_priv::offset, qp, status, _nodnic_device_capabilites::support_uar_tx_db, and _nodnic_device_priv::uar.
Referenced by nodnic_port_create_qp().
mlx_status nodnic_port_create_qp | ( | IN nodnic_port_priv * | port_priv, |
IN nodnic_queue_pair_type | type, | ||
IN mlx_size | send_wq_size, | ||
IN mlx_uint32 | send_wqe_num, | ||
IN mlx_size | receive_wq_size, | ||
IN mlx_uint32 | recv_wqe_num, | ||
OUT nodnic_qp ** | qp | ||
) |
Definition at line 585 of file mlx_port.c.
References address, _nodnic_device_priv::device_cap, _nodnic_device_capabilites::log_max_ring_size, MLX_FATAL_CHECK_STATUS, MLX_INVALID_PARAMETER, mlx_memory_alloc_dma(), mlx_memory_free(), mlx_memory_free_dma(), mlx_memory_map_dma(), mlx_memory_set(), mlx_memory_ummap_dma(), mlx_memory_zalloc(), MLX_SUCCESS, mlx_utils_ilog2(), NODIC_RING_QP_ADDR_HIGH, NODIC_RING_QP_ADDR_LOW, nodnic_cmd_write(), NODNIC_MEMORY_ALIGN, nodnic_port_rx_pi_dma_alloc(), nodnic_port_tx_dbr_dma_init(), nodnic_qp_data_teable, NULL, qp, nodnic_qp_data_entry::recv_offset, nodnic_qp_data_entry::send_offset, status, type, and _nodnic_device_priv::utils.
Referenced by flexboot_nodnic_create_qp().
mlx_status nodnic_port_destroy_qp | ( | IN nodnic_port_priv * | port_priv, |
IN nodnic_queue_pair_type | type, | ||
IN nodnic_qp * | qp | ||
) |
Definition at line 726 of file mlx_port.c.
References _nodnic_device_priv::device_cap, MLX_DEBUG_ERROR, mlx_memory_free(), mlx_memory_free_dma(), mlx_memory_ummap_dma(), MLX_SUCCESS, _nodnic_uar_priv::offset, qp, status, _nodnic_device_capabilites::support_rx_pi_dma, _nodnic_device_capabilites::support_uar_tx_db, _nodnic_device_priv::uar, and _nodnic_device_priv::utils.
Referenced by flexboot_nodnic_destroy_qp().
mlx_status nodnic_port_get_qpn | ( | IN nodnic_port_priv * | port_priv, |
IN struct nodnic_ring * | ring, | ||
OUT mlx_uint32 * | qpn | ||
) |
Definition at line 796 of file mlx_port.c.
References buffer, MLX_FATAL_CHECK_STATUS, MLX_INVALID_PARAMETER, MLX_SUCCESS, nodnic_cmd_read(), NODNIC_RING_QPN_MASK, NODNIC_RING_QPN_OFFSET, NULL, qpn, and status.
Referenced by flexboot_nodnic_eth_open(), flexboot_nodnic_find_wq(), and shomron_fill_eth_send_wqe().
|
static |
Definition at line 860 of file mlx_port.c.
References index, mlx_memory_cpu_to_be32(), and MLX_SUCCESS.
Referenced by nodnic_port_thin_init().
mlx_status nodnic_port_update_ring_doorbell | ( | IN nodnic_port_priv * | port_priv, |
IN struct nodnic_ring * | ring, | ||
IN mlx_uint16 | index | ||
) |
Definition at line 874 of file mlx_port.c.
References buffer, index, MLX_CHECK_STATUS, MLX_INVALID_PARAMETER, MLX_SUCCESS, nodnic_cmd_write(), NODNIC_RING_RING_OFFSET, NULL, and status.
Referenced by nodnic_port_thin_init().
mlx_status nodnic_port_get_cq_size | ( | IN nodnic_port_priv * | port_priv, |
OUT mlx_uint64 * | cq_size | ||
) |
Definition at line 899 of file mlx_port.c.
References MLX_FATAL_CHECK_STATUS, MLX_SUCCESS, nodnic_port_option_log_cq_size, nodnic_port_query(), out, and status.
Referenced by flexboot_nodnic_eth_open().
mlx_status nodnic_port_allocate_eq | ( | IN nodnic_port_priv * | port_priv, |
IN mlx_uint8 | log_eq_size | ||
) |
Definition at line 915 of file mlx_port.c.
References address, MLX_FATAL_CHECK_STATUS, MLX_INVALID_PARAMETER, mlx_memory_alloc_dma(), mlx_memory_free_dma(), mlx_memory_map_dma(), mlx_memory_ummap_dma(), MLX_SUCCESS, NODNIC_MEMORY_ALIGN, nodnic_port_option_eq_addr_high, nodnic_port_option_eq_addr_low, nodnic_port_set(), NULL, status, and _nodnic_device_priv::utils.
Referenced by flexboot_nodnic_eth_open().
mlx_status nodnic_port_free_eq | ( | IN nodnic_port_priv * | port_priv | ) |
Definition at line 968 of file mlx_port.c.
References MLX_INVALID_PARAMETER, mlx_memory_free_dma(), mlx_memory_ummap_dma(), MLX_SUCCESS, NULL, status, and _nodnic_device_priv::utils.
Referenced by flexboot_nodnic_eth_close(), and flexboot_nodnic_eth_open().
mlx_status nodnic_port_add_mac_filter | ( | IN nodnic_port_priv * | port_priv, |
IN mlx_mac_address | mac | ||
) |
Definition at line 992 of file mlx_port.c.
References address, index, mac, MLX_CHECK_STATUS, MLX_FAILED, MLX_INVALID_PARAMETER, mlx_memory_cmp(), mlx_memory_set(), MLX_SUCCESS, nodnic_cmd_write(), NODNIC_MAX_MAC_FILTERS, NODNIC_PORT_MAC_FILTERS_OFFSET, nodnic_port_option_mac_filters_en, nodnic_port_query(), nodnic_port_set(), NULL, out, and status.
Referenced by flexboot_nodnic_mcast_attach().
mlx_status nodnic_port_remove_mac_filter | ( | IN nodnic_port_priv * | port_priv, |
IN mlx_mac_address | mac | ||
) |
Definition at line 1073 of file mlx_port.c.
References index, mac, MLX_CHECK_STATUS, MLX_FAILED, MLX_INVALID_PARAMETER, mlx_memory_cmp(), mlx_memory_set(), MLX_SUCCESS, NODNIC_MAX_MAC_FILTERS, nodnic_port_option_mac_filters_en, nodnic_port_query(), nodnic_port_set(), NULL, out, and status.
Referenced by flexboot_nodnic_mcast_detach().
|
static |
Definition at line 1134 of file mlx_port.c.
References MLX_CHECK_STATUS, MLX_SUCCESS, nodnic_port_option_network_en, nodnic_port_set(), status, and value.
Referenced by nodnic_port_close(), and nodnic_port_init().
|
static |
Definition at line 1170 of file mlx_port.c.
References nodnic_port_option_dma_en, nodnic_port_set(), and value.
Referenced by nodnic_port_thin_init().
|
static |
Definition at line 1180 of file mlx_port.c.
References MLX_CHECK_STATUS, MLX_DEBUG_WARN, MLX_SUCCESS, status, and value.
Referenced by nodnic_port_disable_dma(), and nodnic_port_enable_dma().
mlx_status nodnic_port_set_promisc | ( | IN nodnic_port_priv * | port_priv, |
IN mlx_boolean | value | ||
) |
Definition at line 1205 of file mlx_port.c.
References buffer, MLX_CHECK_STATUS, MLX_SUCCESS, nodnic_port_option_port_promisc_en, nodnic_port_set(), status, and value.
Referenced by flexboot_nodnic_eth_close(), and flexboot_nodnic_eth_open().
mlx_status nodnic_port_set_promisc_multicast | ( | IN nodnic_port_priv * | port_priv, |
IN mlx_boolean | value | ||
) |
Definition at line 1220 of file mlx_port.c.
References buffer, MLX_CHECK_STATUS, MLX_SUCCESS, nodnic_port_option_port_promisc_multicast_en, nodnic_port_set(), status, and value.
mlx_status nodnic_port_init | ( | IN nodnic_port_priv * | port_priv | ) |
Definition at line 1235 of file mlx_port.c.
References MLX_FATAL_CHECK_STATUS, MLX_INVALID_PARAMETER, MLX_SUCCESS, nodnic_port_set_network(), NULL, status, and TRUE.
Referenced by flexboot_nodnic_eth_open().
mlx_status nodnic_port_close | ( | IN nodnic_port_priv * | port_priv | ) |
Definition at line 1255 of file mlx_port.c.
References FALSE, MLX_FATAL_CHECK_STATUS, MLX_INVALID_PARAMETER, MLX_SUCCESS, nodnic_port_set_network(), NULL, and status.
Referenced by flexboot_nodnic_eth_close(), and flexboot_nodnic_eth_open().
mlx_status nodnic_port_enable_dma | ( | IN nodnic_port_priv * | port_priv | ) |
Definition at line 1275 of file mlx_port.c.
References MLX_CHECK_STATUS, MLX_INVALID_PARAMETER, MLX_SUCCESS, nodnic_port_check_and_set_dma(), NULL, status, and TRUE.
Referenced by __attribute__(), and flexboot_nodnic_eth_open().
mlx_status nodnic_port_disable_dma | ( | IN nodnic_port_priv * | port_priv | ) |
Definition at line 1295 of file mlx_port.c.
References FALSE, MLX_CHECK_STATUS, MLX_INVALID_PARAMETER, MLX_SUCCESS, nodnic_port_check_and_set_dma(), NULL, and status.
Referenced by flexboot_nodnic_port_disable_dma().
mlx_status nodnic_port_thin_init | ( | IN nodnic_device_priv * | device_priv, |
IN nodnic_port_priv * | port_priv, | ||
IN mlx_uint8 | port_index | ||
) |
Definition at line 1315 of file mlx_port.c.
References MLX_FAILED, MLX_INVALID_PARAMETER, MLX_SUCCESS, nodnic_cmd_read(), nodnic_port_offset_table, nodnic_port_read_reset_needed(), nodnic_port_recv_db_dma(), nodnic_port_set(), nodnic_port_set_dma(), NODNIC_PORT_TYPE_UNKNOWN, nodnic_port_update_ring_doorbell(), NULL, offset, and status.
Referenced by flexboot_nodnic_thin_init_ports().
struct nodnic_port_data_entry nodnic_port_data_table[] |
Definition at line 42 of file mlx_port.c.
Referenced by nodnic_port_query(), and nodnic_port_set().
struct nodnic_qp_data_entry nodnic_qp_data_teable[MAX_QP_DATA_ENTRIES] |
Definition at line 73 of file mlx_port.c.
Referenced by nodnic_port_create_qp().
int nodnic_port_offset_table[MAX_NODNIC_PORTS] |
Definition at line 82 of file mlx_port.c.
Referenced by nodnic_port_thin_init().