1e9dcd831SSlava Shwartsman /*- 2e9dcd831SSlava Shwartsman * Copyright (c) 2017, Mellanox Technologies, Ltd. All rights reserved. 3e9dcd831SSlava Shwartsman * 4e9dcd831SSlava Shwartsman * This software is available to you under a choice of one of two 5e9dcd831SSlava Shwartsman * licenses. You may choose to be licensed under the terms of the GNU 6e9dcd831SSlava Shwartsman * General Public License (GPL) Version 2, available from the file 7e9dcd831SSlava Shwartsman * COPYING in the main directory of this source tree, or the 8e9dcd831SSlava Shwartsman * OpenIB.org BSD license below: 9e9dcd831SSlava Shwartsman * 10e9dcd831SSlava Shwartsman * Redistribution and use in source and binary forms, with or 11e9dcd831SSlava Shwartsman * without modification, are permitted provided that the following 12e9dcd831SSlava Shwartsman * conditions are met: 13e9dcd831SSlava Shwartsman * 14e9dcd831SSlava Shwartsman * - Redistributions of source code must retain the above 15e9dcd831SSlava Shwartsman * copyright notice, this list of conditions and the following 16e9dcd831SSlava Shwartsman * disclaimer. 17e9dcd831SSlava Shwartsman * 18e9dcd831SSlava Shwartsman * - Redistributions in binary form must reproduce the above 19e9dcd831SSlava Shwartsman * copyright notice, this list of conditions and the following 20e9dcd831SSlava Shwartsman * disclaimer in the documentation and/or other materials 21e9dcd831SSlava Shwartsman * provided with the distribution. 22e9dcd831SSlava Shwartsman * 23e9dcd831SSlava Shwartsman * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 24e9dcd831SSlava Shwartsman * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 25e9dcd831SSlava Shwartsman * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 26e9dcd831SSlava Shwartsman * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 27e9dcd831SSlava Shwartsman * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 28e9dcd831SSlava Shwartsman * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 29e9dcd831SSlava Shwartsman * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 30e9dcd831SSlava Shwartsman * SOFTWARE. 31e9dcd831SSlava Shwartsman */ 32e9dcd831SSlava Shwartsman 33e9dcd831SSlava Shwartsman #ifndef MLX5_IFC_FPGA_H 34e9dcd831SSlava Shwartsman #define MLX5_IFC_FPGA_H 35e9dcd831SSlava Shwartsman 36e9dcd831SSlava Shwartsman enum { 37e9dcd831SSlava Shwartsman MLX5_FPGA_CAP_SANDBOX_VENDOR_ID_MLNX = 0x2c9, 38e9dcd831SSlava Shwartsman }; 39e9dcd831SSlava Shwartsman 40e9dcd831SSlava Shwartsman enum { 41e9dcd831SSlava Shwartsman MLX5_FPGA_CAP_SANDBOX_PRODUCT_ID_EXAMPLE = 0x1, 42e9dcd831SSlava Shwartsman MLX5_FPGA_CAP_SANDBOX_PRODUCT_ID_IPSEC = 0x2, 43e9dcd831SSlava Shwartsman MLX5_FPGA_CAP_SANDBOX_PRODUCT_ID_TLS = 0x3, 44e9dcd831SSlava Shwartsman }; 45e9dcd831SSlava Shwartsman 46e9dcd831SSlava Shwartsman enum { 47e9dcd831SSlava Shwartsman MLX5_FPGA_SHELL_CAPS_QP_TYPE_SHELL_QP = 0x1, 48e9dcd831SSlava Shwartsman MLX5_FPGA_SHELL_CAPS_QP_TYPE_SANDBOX_QP = 0x2, 49e9dcd831SSlava Shwartsman }; 50e9dcd831SSlava Shwartsman 51e9dcd831SSlava Shwartsman struct mlx5_ifc_fpga_shell_caps_bits { 52e9dcd831SSlava Shwartsman u8 max_num_qps[0x10]; 53e9dcd831SSlava Shwartsman u8 reserved_at_10[0x8]; 54e9dcd831SSlava Shwartsman u8 total_rcv_credits[0x8]; 55e9dcd831SSlava Shwartsman 56e9dcd831SSlava Shwartsman u8 reserved_at_20[0xe]; 57e9dcd831SSlava Shwartsman u8 qp_type[0x2]; 58e9dcd831SSlava Shwartsman u8 reserved_at_30[0x5]; 59e9dcd831SSlava Shwartsman u8 rae[0x1]; 60e9dcd831SSlava Shwartsman u8 rwe[0x1]; 61e9dcd831SSlava Shwartsman u8 rre[0x1]; 62e9dcd831SSlava Shwartsman u8 reserved_at_38[0x4]; 63e9dcd831SSlava Shwartsman u8 dc[0x1]; 64e9dcd831SSlava Shwartsman u8 ud[0x1]; 65e9dcd831SSlava Shwartsman u8 uc[0x1]; 66e9dcd831SSlava Shwartsman u8 rc[0x1]; 67e9dcd831SSlava Shwartsman 68e9dcd831SSlava Shwartsman u8 reserved_at_40[0x1a]; 69e9dcd831SSlava Shwartsman u8 log_ddr_size[0x6]; 70e9dcd831SSlava Shwartsman 71e9dcd831SSlava Shwartsman u8 max_fpga_qp_msg_size[0x20]; 72e9dcd831SSlava Shwartsman 73e9dcd831SSlava Shwartsman u8 reserved_at_80[0x180]; 74e9dcd831SSlava Shwartsman }; 75e9dcd831SSlava Shwartsman 76e9dcd831SSlava Shwartsman struct mlx5_ifc_fpga_cap_bits { 77e9dcd831SSlava Shwartsman u8 fpga_id[0x8]; 78e9dcd831SSlava Shwartsman u8 fpga_device[0x18]; 79e9dcd831SSlava Shwartsman 80e9dcd831SSlava Shwartsman u8 register_file_ver[0x20]; 81e9dcd831SSlava Shwartsman 82e9dcd831SSlava Shwartsman u8 fpga_ctrl_modify[0x1]; 83e9dcd831SSlava Shwartsman u8 reserved_at_41[0x5]; 84e9dcd831SSlava Shwartsman u8 access_reg_query_mode[0x2]; 85e9dcd831SSlava Shwartsman u8 reserved_at_48[0x6]; 86e9dcd831SSlava Shwartsman u8 access_reg_modify_mode[0x2]; 87e9dcd831SSlava Shwartsman u8 reserved_at_50[0x10]; 88e9dcd831SSlava Shwartsman 89e9dcd831SSlava Shwartsman u8 reserved_at_60[0x20]; 90e9dcd831SSlava Shwartsman 91e9dcd831SSlava Shwartsman u8 image_version[0x20]; 92e9dcd831SSlava Shwartsman 93e9dcd831SSlava Shwartsman u8 image_date[0x20]; 94e9dcd831SSlava Shwartsman 95e9dcd831SSlava Shwartsman u8 image_time[0x20]; 96e9dcd831SSlava Shwartsman 97e9dcd831SSlava Shwartsman u8 shell_version[0x20]; 98e9dcd831SSlava Shwartsman 99e9dcd831SSlava Shwartsman u8 reserved_at_100[0x80]; 100e9dcd831SSlava Shwartsman 101e9dcd831SSlava Shwartsman struct mlx5_ifc_fpga_shell_caps_bits shell_caps; 102e9dcd831SSlava Shwartsman 103e9dcd831SSlava Shwartsman u8 reserved_at_380[0x8]; 104e9dcd831SSlava Shwartsman u8 ieee_vendor_id[0x18]; 105e9dcd831SSlava Shwartsman 106e9dcd831SSlava Shwartsman u8 sandbox_product_version[0x10]; 107e9dcd831SSlava Shwartsman u8 sandbox_product_id[0x10]; 108e9dcd831SSlava Shwartsman 109e9dcd831SSlava Shwartsman u8 sandbox_basic_caps[0x20]; 110e9dcd831SSlava Shwartsman 111e9dcd831SSlava Shwartsman u8 reserved_at_3e0[0x10]; 112e9dcd831SSlava Shwartsman u8 sandbox_extended_caps_len[0x10]; 113e9dcd831SSlava Shwartsman 114e9dcd831SSlava Shwartsman u8 sandbox_extended_caps_addr[0x40]; 115e9dcd831SSlava Shwartsman 116e9dcd831SSlava Shwartsman u8 fpga_ddr_start_addr[0x40]; 117e9dcd831SSlava Shwartsman 118e9dcd831SSlava Shwartsman u8 fpga_cr_space_start_addr[0x40]; 119e9dcd831SSlava Shwartsman 120e9dcd831SSlava Shwartsman u8 fpga_ddr_size[0x20]; 121e9dcd831SSlava Shwartsman 122e9dcd831SSlava Shwartsman u8 fpga_cr_space_size[0x20]; 123e9dcd831SSlava Shwartsman 124e9dcd831SSlava Shwartsman u8 reserved_at_500[0x300]; 125e9dcd831SSlava Shwartsman }; 126e9dcd831SSlava Shwartsman 127e9dcd831SSlava Shwartsman enum { 128e9dcd831SSlava Shwartsman MLX5_FPGA_CTRL_OPERATION_LOAD = 0x1, 129e9dcd831SSlava Shwartsman MLX5_FPGA_CTRL_OPERATION_RESET = 0x2, 130e9dcd831SSlava Shwartsman MLX5_FPGA_CTRL_OPERATION_FLASH_SELECT = 0x3, 131e9dcd831SSlava Shwartsman MLX5_FPGA_CTRL_OPERATION_SANDBOX_BYPASS_ON = 0x4, 132e9dcd831SSlava Shwartsman MLX5_FPGA_CTRL_OPERATION_SANDBOX_BYPASS_OFF = 0x5, 133e9dcd831SSlava Shwartsman MLX5_FPGA_CTRL_OPERATION_RESET_SANDBOX = 0x6, 134d82f1c13SSlava Shwartsman MLX5_FPGA_CTRL_OPERATION_DISCONNECT = 0x9, 135d82f1c13SSlava Shwartsman MLX5_FPGA_CTRL_OPERATION_CONNECT = 0xA, 136*c322dbafSHans Petter Selasky MLX5_FPGA_CTRL_OPERATION_RELOAD = 0xB, 137e9dcd831SSlava Shwartsman }; 138e9dcd831SSlava Shwartsman 139e9dcd831SSlava Shwartsman struct mlx5_ifc_fpga_ctrl_bits { 140e9dcd831SSlava Shwartsman u8 reserved_at_0[0x8]; 141e9dcd831SSlava Shwartsman u8 operation[0x8]; 142e9dcd831SSlava Shwartsman u8 reserved_at_10[0x8]; 143e9dcd831SSlava Shwartsman u8 status[0x8]; 144e9dcd831SSlava Shwartsman 145e9dcd831SSlava Shwartsman u8 reserved_at_20[0x8]; 146e9dcd831SSlava Shwartsman u8 flash_select_admin[0x8]; 147e9dcd831SSlava Shwartsman u8 reserved_at_30[0x8]; 148e9dcd831SSlava Shwartsman u8 flash_select_oper[0x8]; 149e9dcd831SSlava Shwartsman 150e9dcd831SSlava Shwartsman u8 reserved_at_40[0x40]; 151e9dcd831SSlava Shwartsman }; 152e9dcd831SSlava Shwartsman 153e9dcd831SSlava Shwartsman enum { 154e9dcd831SSlava Shwartsman MLX5_FPGA_ERROR_EVENT_SYNDROME_CORRUPTED_DDR = 0x1, 155e9dcd831SSlava Shwartsman MLX5_FPGA_ERROR_EVENT_SYNDROME_FLASH_TIMEOUT = 0x2, 156e9dcd831SSlava Shwartsman MLX5_FPGA_ERROR_EVENT_SYNDROME_INTERNAL_LINK_ERROR = 0x3, 157e9dcd831SSlava Shwartsman MLX5_FPGA_ERROR_EVENT_SYNDROME_WATCHDOG_FAILURE = 0x4, 158e9dcd831SSlava Shwartsman MLX5_FPGA_ERROR_EVENT_SYNDROME_I2C_FAILURE = 0x5, 159e9dcd831SSlava Shwartsman MLX5_FPGA_ERROR_EVENT_SYNDROME_IMAGE_CHANGED = 0x6, 160e9dcd831SSlava Shwartsman MLX5_FPGA_ERROR_EVENT_SYNDROME_TEMPERATURE_CRITICAL = 0x7, 161e9dcd831SSlava Shwartsman }; 162e9dcd831SSlava Shwartsman 163e9dcd831SSlava Shwartsman struct mlx5_ifc_fpga_error_event_bits { 164e9dcd831SSlava Shwartsman u8 reserved_at_0[0x40]; 165e9dcd831SSlava Shwartsman 166e9dcd831SSlava Shwartsman u8 reserved_at_40[0x18]; 167e9dcd831SSlava Shwartsman u8 syndrome[0x8]; 168e9dcd831SSlava Shwartsman 169e9dcd831SSlava Shwartsman u8 reserved_at_60[0x80]; 170e9dcd831SSlava Shwartsman }; 171e9dcd831SSlava Shwartsman 172e9dcd831SSlava Shwartsman #define MLX5_FPGA_ACCESS_REG_SIZE_MAX 64 173e9dcd831SSlava Shwartsman 174e9dcd831SSlava Shwartsman struct mlx5_ifc_fpga_access_reg_bits { 175e9dcd831SSlava Shwartsman u8 reserved_at_0[0x20]; 176e9dcd831SSlava Shwartsman 177e9dcd831SSlava Shwartsman u8 reserved_at_20[0x10]; 178e9dcd831SSlava Shwartsman u8 size[0x10]; 179e9dcd831SSlava Shwartsman 180e9dcd831SSlava Shwartsman u8 address[0x40]; 181e9dcd831SSlava Shwartsman 182e9dcd831SSlava Shwartsman u8 data[0][0x8]; 183e9dcd831SSlava Shwartsman }; 184e9dcd831SSlava Shwartsman 185e9dcd831SSlava Shwartsman enum mlx5_ifc_fpga_qp_state { 186e9dcd831SSlava Shwartsman MLX5_FPGA_QPC_STATE_INIT = 0x0, 187e9dcd831SSlava Shwartsman MLX5_FPGA_QPC_STATE_ACTIVE = 0x1, 188e9dcd831SSlava Shwartsman MLX5_FPGA_QPC_STATE_ERROR = 0x2, 189e9dcd831SSlava Shwartsman }; 190e9dcd831SSlava Shwartsman 191e9dcd831SSlava Shwartsman enum mlx5_ifc_fpga_qp_type { 192e9dcd831SSlava Shwartsman MLX5_FPGA_QPC_QP_TYPE_SHELL_QP = 0x0, 193e9dcd831SSlava Shwartsman MLX5_FPGA_QPC_QP_TYPE_SANDBOX_QP = 0x1, 194e9dcd831SSlava Shwartsman }; 195e9dcd831SSlava Shwartsman 196e9dcd831SSlava Shwartsman enum mlx5_ifc_fpga_qp_service_type { 197e9dcd831SSlava Shwartsman MLX5_FPGA_QPC_ST_RC = 0x0, 198e9dcd831SSlava Shwartsman }; 199e9dcd831SSlava Shwartsman 200e9dcd831SSlava Shwartsman struct mlx5_ifc_fpga_qpc_bits { 201e9dcd831SSlava Shwartsman u8 state[0x4]; 202e9dcd831SSlava Shwartsman u8 reserved_at_4[0x1b]; 203e9dcd831SSlava Shwartsman u8 qp_type[0x1]; 204e9dcd831SSlava Shwartsman 205e9dcd831SSlava Shwartsman u8 reserved_at_20[0x4]; 206e9dcd831SSlava Shwartsman u8 st[0x4]; 207e9dcd831SSlava Shwartsman u8 reserved_at_28[0x10]; 208e9dcd831SSlava Shwartsman u8 traffic_class[0x8]; 209e9dcd831SSlava Shwartsman 210e9dcd831SSlava Shwartsman u8 ether_type[0x10]; 211e9dcd831SSlava Shwartsman u8 prio[0x3]; 212e9dcd831SSlava Shwartsman u8 dei[0x1]; 213e9dcd831SSlava Shwartsman u8 vid[0xc]; 214e9dcd831SSlava Shwartsman 215e9dcd831SSlava Shwartsman u8 reserved_at_60[0x20]; 216e9dcd831SSlava Shwartsman 217e9dcd831SSlava Shwartsman u8 reserved_at_80[0x8]; 218e9dcd831SSlava Shwartsman u8 next_rcv_psn[0x18]; 219e9dcd831SSlava Shwartsman 220e9dcd831SSlava Shwartsman u8 reserved_at_a0[0x8]; 221e9dcd831SSlava Shwartsman u8 next_send_psn[0x18]; 222e9dcd831SSlava Shwartsman 223e9dcd831SSlava Shwartsman u8 reserved_at_c0[0x10]; 224e9dcd831SSlava Shwartsman u8 pkey[0x10]; 225e9dcd831SSlava Shwartsman 226e9dcd831SSlava Shwartsman u8 reserved_at_e0[0x8]; 227e9dcd831SSlava Shwartsman u8 remote_qpn[0x18]; 228e9dcd831SSlava Shwartsman 229e9dcd831SSlava Shwartsman u8 reserved_at_100[0x15]; 230e9dcd831SSlava Shwartsman u8 rnr_retry[0x3]; 231e9dcd831SSlava Shwartsman u8 reserved_at_118[0x5]; 232e9dcd831SSlava Shwartsman u8 retry_count[0x3]; 233e9dcd831SSlava Shwartsman 234e9dcd831SSlava Shwartsman u8 reserved_at_120[0x20]; 235e9dcd831SSlava Shwartsman 236e9dcd831SSlava Shwartsman u8 reserved_at_140[0x10]; 237e9dcd831SSlava Shwartsman u8 remote_mac_47_32[0x10]; 238e9dcd831SSlava Shwartsman 239e9dcd831SSlava Shwartsman u8 remote_mac_31_0[0x20]; 240e9dcd831SSlava Shwartsman 241e9dcd831SSlava Shwartsman u8 remote_ip[16][0x8]; 242e9dcd831SSlava Shwartsman 243e9dcd831SSlava Shwartsman u8 reserved_at_200[0x40]; 244e9dcd831SSlava Shwartsman 245e9dcd831SSlava Shwartsman u8 reserved_at_240[0x10]; 246e9dcd831SSlava Shwartsman u8 fpga_mac_47_32[0x10]; 247e9dcd831SSlava Shwartsman 248e9dcd831SSlava Shwartsman u8 fpga_mac_31_0[0x20]; 249e9dcd831SSlava Shwartsman 250e9dcd831SSlava Shwartsman u8 fpga_ip[16][0x8]; 251e9dcd831SSlava Shwartsman }; 252e9dcd831SSlava Shwartsman 253e9dcd831SSlava Shwartsman struct mlx5_ifc_fpga_create_qp_in_bits { 254e9dcd831SSlava Shwartsman u8 opcode[0x10]; 255e9dcd831SSlava Shwartsman u8 reserved_at_10[0x10]; 256e9dcd831SSlava Shwartsman 257e9dcd831SSlava Shwartsman u8 reserved_at_20[0x10]; 258e9dcd831SSlava Shwartsman u8 op_mod[0x10]; 259e9dcd831SSlava Shwartsman 260e9dcd831SSlava Shwartsman u8 reserved_at_40[0x40]; 261e9dcd831SSlava Shwartsman 262e9dcd831SSlava Shwartsman struct mlx5_ifc_fpga_qpc_bits fpga_qpc; 263e9dcd831SSlava Shwartsman }; 264e9dcd831SSlava Shwartsman 265e9dcd831SSlava Shwartsman struct mlx5_ifc_fpga_create_qp_out_bits { 266e9dcd831SSlava Shwartsman u8 status[0x8]; 267e9dcd831SSlava Shwartsman u8 reserved_at_8[0x18]; 268e9dcd831SSlava Shwartsman 269e9dcd831SSlava Shwartsman u8 syndrome[0x20]; 270e9dcd831SSlava Shwartsman 271e9dcd831SSlava Shwartsman u8 reserved_at_40[0x8]; 272e9dcd831SSlava Shwartsman u8 fpga_qpn[0x18]; 273e9dcd831SSlava Shwartsman 274e9dcd831SSlava Shwartsman u8 reserved_at_60[0x20]; 275e9dcd831SSlava Shwartsman 276e9dcd831SSlava Shwartsman struct mlx5_ifc_fpga_qpc_bits fpga_qpc; 277e9dcd831SSlava Shwartsman }; 278e9dcd831SSlava Shwartsman 279e9dcd831SSlava Shwartsman struct mlx5_ifc_fpga_modify_qp_in_bits { 280e9dcd831SSlava Shwartsman u8 opcode[0x10]; 281e9dcd831SSlava Shwartsman u8 reserved_at_10[0x10]; 282e9dcd831SSlava Shwartsman 283e9dcd831SSlava Shwartsman u8 reserved_at_20[0x10]; 284e9dcd831SSlava Shwartsman u8 op_mod[0x10]; 285e9dcd831SSlava Shwartsman 286e9dcd831SSlava Shwartsman u8 reserved_at_40[0x8]; 287e9dcd831SSlava Shwartsman u8 fpga_qpn[0x18]; 288e9dcd831SSlava Shwartsman 289e9dcd831SSlava Shwartsman u8 field_select[0x20]; 290e9dcd831SSlava Shwartsman 291e9dcd831SSlava Shwartsman struct mlx5_ifc_fpga_qpc_bits fpga_qpc; 292e9dcd831SSlava Shwartsman }; 293e9dcd831SSlava Shwartsman 294e9dcd831SSlava Shwartsman struct mlx5_ifc_fpga_modify_qp_out_bits { 295e9dcd831SSlava Shwartsman u8 status[0x8]; 296e9dcd831SSlava Shwartsman u8 reserved_at_8[0x18]; 297e9dcd831SSlava Shwartsman 298e9dcd831SSlava Shwartsman u8 syndrome[0x20]; 299e9dcd831SSlava Shwartsman 300e9dcd831SSlava Shwartsman u8 reserved_at_40[0x40]; 301e9dcd831SSlava Shwartsman }; 302e9dcd831SSlava Shwartsman 303e9dcd831SSlava Shwartsman struct mlx5_ifc_fpga_query_qp_in_bits { 304e9dcd831SSlava Shwartsman u8 opcode[0x10]; 305e9dcd831SSlava Shwartsman u8 reserved_at_10[0x10]; 306e9dcd831SSlava Shwartsman 307e9dcd831SSlava Shwartsman u8 reserved_at_20[0x10]; 308e9dcd831SSlava Shwartsman u8 op_mod[0x10]; 309e9dcd831SSlava Shwartsman 310e9dcd831SSlava Shwartsman u8 reserved_at_40[0x8]; 311e9dcd831SSlava Shwartsman u8 fpga_qpn[0x18]; 312e9dcd831SSlava Shwartsman 313e9dcd831SSlava Shwartsman u8 reserved_at_60[0x20]; 314e9dcd831SSlava Shwartsman }; 315e9dcd831SSlava Shwartsman 316e9dcd831SSlava Shwartsman struct mlx5_ifc_fpga_query_qp_out_bits { 317e9dcd831SSlava Shwartsman u8 status[0x8]; 318e9dcd831SSlava Shwartsman u8 reserved_at_8[0x18]; 319e9dcd831SSlava Shwartsman 320e9dcd831SSlava Shwartsman u8 syndrome[0x20]; 321e9dcd831SSlava Shwartsman 322e9dcd831SSlava Shwartsman u8 reserved_at_40[0x40]; 323e9dcd831SSlava Shwartsman 324e9dcd831SSlava Shwartsman struct mlx5_ifc_fpga_qpc_bits fpga_qpc; 325e9dcd831SSlava Shwartsman }; 326e9dcd831SSlava Shwartsman 327e9dcd831SSlava Shwartsman struct mlx5_ifc_fpga_query_qp_counters_in_bits { 328e9dcd831SSlava Shwartsman u8 opcode[0x10]; 329e9dcd831SSlava Shwartsman u8 reserved_at_10[0x10]; 330e9dcd831SSlava Shwartsman 331e9dcd831SSlava Shwartsman u8 reserved_at_20[0x10]; 332e9dcd831SSlava Shwartsman u8 op_mod[0x10]; 333e9dcd831SSlava Shwartsman 334e9dcd831SSlava Shwartsman u8 clear[0x1]; 335e9dcd831SSlava Shwartsman u8 reserved_at_41[0x7]; 336e9dcd831SSlava Shwartsman u8 fpga_qpn[0x18]; 337e9dcd831SSlava Shwartsman 338e9dcd831SSlava Shwartsman u8 reserved_at_60[0x20]; 339e9dcd831SSlava Shwartsman }; 340e9dcd831SSlava Shwartsman 341e9dcd831SSlava Shwartsman struct mlx5_ifc_fpga_query_qp_counters_out_bits { 342e9dcd831SSlava Shwartsman u8 status[0x8]; 343e9dcd831SSlava Shwartsman u8 reserved_at_8[0x18]; 344e9dcd831SSlava Shwartsman 345e9dcd831SSlava Shwartsman u8 syndrome[0x20]; 346e9dcd831SSlava Shwartsman 347e9dcd831SSlava Shwartsman u8 reserved_at_40[0x40]; 348e9dcd831SSlava Shwartsman 349e9dcd831SSlava Shwartsman u8 rx_ack_packets[0x40]; 350e9dcd831SSlava Shwartsman 351e9dcd831SSlava Shwartsman u8 rx_send_packets[0x40]; 352e9dcd831SSlava Shwartsman 353e9dcd831SSlava Shwartsman u8 tx_ack_packets[0x40]; 354e9dcd831SSlava Shwartsman 355e9dcd831SSlava Shwartsman u8 tx_send_packets[0x40]; 356e9dcd831SSlava Shwartsman 357e9dcd831SSlava Shwartsman u8 rx_total_drop[0x40]; 358e9dcd831SSlava Shwartsman 359e9dcd831SSlava Shwartsman u8 reserved_at_1c0[0x1c0]; 360e9dcd831SSlava Shwartsman }; 361e9dcd831SSlava Shwartsman 362e9dcd831SSlava Shwartsman struct mlx5_ifc_fpga_destroy_qp_in_bits { 363e9dcd831SSlava Shwartsman u8 opcode[0x10]; 364e9dcd831SSlava Shwartsman u8 reserved_at_10[0x10]; 365e9dcd831SSlava Shwartsman 366e9dcd831SSlava Shwartsman u8 reserved_at_20[0x10]; 367e9dcd831SSlava Shwartsman u8 op_mod[0x10]; 368e9dcd831SSlava Shwartsman 369e9dcd831SSlava Shwartsman u8 reserved_at_40[0x8]; 370e9dcd831SSlava Shwartsman u8 fpga_qpn[0x18]; 371e9dcd831SSlava Shwartsman 372e9dcd831SSlava Shwartsman u8 reserved_at_60[0x20]; 373e9dcd831SSlava Shwartsman }; 374e9dcd831SSlava Shwartsman 375e9dcd831SSlava Shwartsman struct mlx5_ifc_fpga_destroy_qp_out_bits { 376e9dcd831SSlava Shwartsman u8 status[0x8]; 377e9dcd831SSlava Shwartsman u8 reserved_at_8[0x18]; 378e9dcd831SSlava Shwartsman 379e9dcd831SSlava Shwartsman u8 syndrome[0x20]; 380e9dcd831SSlava Shwartsman 381e9dcd831SSlava Shwartsman u8 reserved_at_40[0x40]; 382e9dcd831SSlava Shwartsman }; 383e9dcd831SSlava Shwartsman 384e9dcd831SSlava Shwartsman struct mlx5_ifc_ipsec_extended_cap_bits { 385e9dcd831SSlava Shwartsman u8 encapsulation[0x20]; 386e9dcd831SSlava Shwartsman 387e9dcd831SSlava Shwartsman u8 reserved_0[0x15]; 388e9dcd831SSlava Shwartsman u8 ipv4_fragment[0x1]; 389e9dcd831SSlava Shwartsman u8 ipv6[0x1]; 390e9dcd831SSlava Shwartsman u8 esn[0x1]; 391e9dcd831SSlava Shwartsman u8 lso[0x1]; 392e9dcd831SSlava Shwartsman u8 transport_and_tunnel_mode[0x1]; 393e9dcd831SSlava Shwartsman u8 tunnel_mode[0x1]; 394e9dcd831SSlava Shwartsman u8 transport_mode[0x1]; 395e9dcd831SSlava Shwartsman u8 ah_esp[0x1]; 396e9dcd831SSlava Shwartsman u8 esp[0x1]; 397e9dcd831SSlava Shwartsman u8 ah[0x1]; 398e9dcd831SSlava Shwartsman u8 ipv4_options[0x1]; 399e9dcd831SSlava Shwartsman 400e9dcd831SSlava Shwartsman u8 auth_alg[0x20]; 401e9dcd831SSlava Shwartsman 402e9dcd831SSlava Shwartsman u8 enc_alg[0x20]; 403e9dcd831SSlava Shwartsman 404e9dcd831SSlava Shwartsman u8 sa_cap[0x20]; 405e9dcd831SSlava Shwartsman 406e9dcd831SSlava Shwartsman u8 reserved_1[0x10]; 407e9dcd831SSlava Shwartsman u8 number_of_ipsec_counters[0x10]; 408e9dcd831SSlava Shwartsman 409e9dcd831SSlava Shwartsman u8 ipsec_counters_addr_low[0x20]; 410e9dcd831SSlava Shwartsman u8 ipsec_counters_addr_high[0x20]; 411e9dcd831SSlava Shwartsman }; 412e9dcd831SSlava Shwartsman 413e9dcd831SSlava Shwartsman struct mlx5_ifc_ipsec_counters_bits { 414e9dcd831SSlava Shwartsman u8 dec_in_packets[0x40]; 415e9dcd831SSlava Shwartsman 416e9dcd831SSlava Shwartsman u8 dec_out_packets[0x40]; 417e9dcd831SSlava Shwartsman 418e9dcd831SSlava Shwartsman u8 dec_bypass_packets[0x40]; 419e9dcd831SSlava Shwartsman 420e9dcd831SSlava Shwartsman u8 enc_in_packets[0x40]; 421e9dcd831SSlava Shwartsman 422e9dcd831SSlava Shwartsman u8 enc_out_packets[0x40]; 423e9dcd831SSlava Shwartsman 424e9dcd831SSlava Shwartsman u8 enc_bypass_packets[0x40]; 425e9dcd831SSlava Shwartsman 426e9dcd831SSlava Shwartsman u8 drop_dec_packets[0x40]; 427e9dcd831SSlava Shwartsman 428e9dcd831SSlava Shwartsman u8 failed_auth_dec_packets[0x40]; 429e9dcd831SSlava Shwartsman 430e9dcd831SSlava Shwartsman u8 drop_enc_packets[0x40]; 431e9dcd831SSlava Shwartsman 432e9dcd831SSlava Shwartsman u8 success_add_sa[0x40]; 433e9dcd831SSlava Shwartsman 434e9dcd831SSlava Shwartsman u8 fail_add_sa[0x40]; 435e9dcd831SSlava Shwartsman 436e9dcd831SSlava Shwartsman u8 success_delete_sa[0x40]; 437e9dcd831SSlava Shwartsman 438e9dcd831SSlava Shwartsman u8 fail_delete_sa[0x40]; 439e9dcd831SSlava Shwartsman 440e9dcd831SSlava Shwartsman u8 dropped_cmd[0x40]; 441e9dcd831SSlava Shwartsman }; 442e9dcd831SSlava Shwartsman 443e9dcd831SSlava Shwartsman struct mlx5_ifc_fpga_shell_counters_bits { 444e9dcd831SSlava Shwartsman u8 reserved_0[0x20]; 445e9dcd831SSlava Shwartsman 446e9dcd831SSlava Shwartsman u8 clear[0x1]; 447e9dcd831SSlava Shwartsman u8 reserved_1[0x1f]; 448e9dcd831SSlava Shwartsman 449e9dcd831SSlava Shwartsman u8 reserved_2[0x40]; 450e9dcd831SSlava Shwartsman 451e9dcd831SSlava Shwartsman u8 ddr_read_requests[0x40]; 452e9dcd831SSlava Shwartsman 453e9dcd831SSlava Shwartsman u8 ddr_write_requests[0x40]; 454e9dcd831SSlava Shwartsman 455e9dcd831SSlava Shwartsman u8 ddr_read_bytes[0x40]; 456e9dcd831SSlava Shwartsman 457e9dcd831SSlava Shwartsman u8 ddr_write_bytes[0x40]; 458e9dcd831SSlava Shwartsman 459e9dcd831SSlava Shwartsman u8 reserved_3[0x200]; 460e9dcd831SSlava Shwartsman }; 461e9dcd831SSlava Shwartsman 462e9dcd831SSlava Shwartsman enum { 463e9dcd831SSlava Shwartsman MLX5_FPGA_SHELL_QP_PACKET_TYPE_DDR_READ = 0x0, 464e9dcd831SSlava Shwartsman MLX5_FPGA_SHELL_QP_PACKET_TYPE_DDR_WRITE = 0x1, 465e9dcd831SSlava Shwartsman MLX5_FPGA_SHELL_QP_PACKET_TYPE_DDR_READ_RESPONSE = 0x2, 466e9dcd831SSlava Shwartsman MLX5_FPGA_SHELL_QP_PACKET_TYPE_DDR_WRITE_RESPONSE = 0x3, 467e9dcd831SSlava Shwartsman }; 468e9dcd831SSlava Shwartsman 469e9dcd831SSlava Shwartsman struct mlx5_ifc_fpga_shell_qp_packet_bits { 470e9dcd831SSlava Shwartsman u8 version[0x4]; 471e9dcd831SSlava Shwartsman u8 syndrome[0x4]; 472e9dcd831SSlava Shwartsman u8 reserved_at_8[0x4]; 473e9dcd831SSlava Shwartsman u8 type[0x4]; 474e9dcd831SSlava Shwartsman u8 reserved_at_10[0x8]; 475e9dcd831SSlava Shwartsman u8 tid[0x8]; 476e9dcd831SSlava Shwartsman 477e9dcd831SSlava Shwartsman u8 len[0x20]; 478e9dcd831SSlava Shwartsman 479e9dcd831SSlava Shwartsman u8 address[0x40]; 480e9dcd831SSlava Shwartsman 481e9dcd831SSlava Shwartsman u8 data[0][0x8]; 482e9dcd831SSlava Shwartsman }; 483e9dcd831SSlava Shwartsman 484e9dcd831SSlava Shwartsman enum { 485e9dcd831SSlava Shwartsman MLX5_FPGA_QP_ERROR_EVENT_SYNDROME_RETRY_COUNTER_EXPIRED = 0x1, 486e9dcd831SSlava Shwartsman MLX5_FPGA_QP_ERROR_EVENT_SYNDROME_RNR_EXPIRED = 0x2, 487e9dcd831SSlava Shwartsman }; 488e9dcd831SSlava Shwartsman 489e9dcd831SSlava Shwartsman struct mlx5_ifc_fpga_qp_error_event_bits { 490e9dcd831SSlava Shwartsman u8 reserved_0[0x40]; 491e9dcd831SSlava Shwartsman 492e9dcd831SSlava Shwartsman u8 reserved_1[0x18]; 493e9dcd831SSlava Shwartsman u8 syndrome[0x8]; 494e9dcd831SSlava Shwartsman 495e9dcd831SSlava Shwartsman u8 reserved_2[0x60]; 496e9dcd831SSlava Shwartsman 497e9dcd831SSlava Shwartsman u8 reserved_3[0x8]; 498e9dcd831SSlava Shwartsman u8 fpga_qpn[0x18]; 499e9dcd831SSlava Shwartsman }; 500e9dcd831SSlava Shwartsman 501e9dcd831SSlava Shwartsman #endif /* MLX5_IFC_FPGA_H */ 502