Merge branch 'mlx5-next' of git://git.kernel.org/pub/scm/linux/kernel/git/mellanox/linux
mlx5 updates for both net-next and rdma-next: 1) HW bits and definitions for TLS and IPsec offlaods 2) Release all pages capability bits 3) New command interface helpers and some code cleanup as a result 4) Move qp.c out of mlx5 core driver into mlx5_ib rdma driver Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
This commit is contained in:
@@ -1,51 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2013-2015, Mellanox Technologies. All rights reserved.
|
||||
*
|
||||
* This software is available to you under a choice of one of two
|
||||
* licenses. You may choose to be licensed under the terms of the GNU
|
||||
* General Public License (GPL) Version 2, available from the file
|
||||
* COPYING in the main directory of this source tree, or the
|
||||
* OpenIB.org BSD license below:
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or
|
||||
* without modification, are permitted provided that the following
|
||||
* conditions are met:
|
||||
*
|
||||
* - Redistributions of source code must retain the above
|
||||
* copyright notice, this list of conditions and the following
|
||||
* disclaimer.
|
||||
*
|
||||
* - Redistributions in binary form must reproduce the above
|
||||
* copyright notice, this list of conditions and the following
|
||||
* disclaimer in the documentation and/or other materials
|
||||
* provided with the distribution.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
||||
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef MLX5_CMD_H
|
||||
#define MLX5_CMD_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
struct manage_pages_layout {
|
||||
u64 ptr;
|
||||
u32 reserved;
|
||||
u16 num_entries;
|
||||
u16 func_id;
|
||||
};
|
||||
|
||||
|
||||
struct mlx5_cmd_alloc_uar_imm_out {
|
||||
u32 rsvd[3];
|
||||
u32 uarn;
|
||||
};
|
||||
|
||||
#endif /* MLX5_CMD_H */
|
@@ -188,7 +188,7 @@ int mlx5_core_create_cq(struct mlx5_core_dev *dev, struct mlx5_core_cq *cq,
|
||||
u32 *in, int inlen, u32 *out, int outlen);
|
||||
int mlx5_core_destroy_cq(struct mlx5_core_dev *dev, struct mlx5_core_cq *cq);
|
||||
int mlx5_core_query_cq(struct mlx5_core_dev *dev, struct mlx5_core_cq *cq,
|
||||
u32 *out, int outlen);
|
||||
u32 *out);
|
||||
int mlx5_core_modify_cq(struct mlx5_core_dev *dev, struct mlx5_core_cq *cq,
|
||||
u32 *in, int inlen);
|
||||
int mlx5_core_modify_cq_moderation(struct mlx5_core_dev *dev,
|
||||
|
@@ -364,6 +364,7 @@ enum {
|
||||
enum {
|
||||
MLX5_GENERAL_SUBTYPE_DELAY_DROP_TIMEOUT = 0x1,
|
||||
MLX5_GENERAL_SUBTYPE_PCI_POWER_CHANGE_EVENT = 0x5,
|
||||
MLX5_GENERAL_SUBTYPE_PCI_SYNC_FOR_FW_UPDATE_EVENT = 0x8,
|
||||
};
|
||||
|
||||
enum {
|
||||
@@ -449,10 +450,12 @@ enum {
|
||||
|
||||
enum {
|
||||
MLX5_OPC_MOD_TLS_TIS_STATIC_PARAMS = 0x1,
|
||||
MLX5_OPC_MOD_TLS_TIR_STATIC_PARAMS = 0x2,
|
||||
};
|
||||
|
||||
enum {
|
||||
MLX5_OPC_MOD_TLS_TIS_PROGRESS_PARAMS = 0x1,
|
||||
MLX5_OPC_MOD_TLS_TIR_PROGRESS_PARAMS = 0x2,
|
||||
};
|
||||
|
||||
enum {
|
||||
@@ -689,6 +692,19 @@ struct mlx5_eqe_temp_warning {
|
||||
__be64 sensor_warning_lsb;
|
||||
} __packed;
|
||||
|
||||
#define SYNC_RST_STATE_MASK 0xf
|
||||
|
||||
enum sync_rst_state_type {
|
||||
MLX5_SYNC_RST_STATE_RESET_REQUEST = 0x0,
|
||||
MLX5_SYNC_RST_STATE_RESET_NOW = 0x1,
|
||||
MLX5_SYNC_RST_STATE_RESET_ABORT = 0x2,
|
||||
};
|
||||
|
||||
struct mlx5_eqe_sync_fw_update {
|
||||
u8 reserved_at_0[3];
|
||||
u8 sync_rst_state;
|
||||
};
|
||||
|
||||
union ev_data {
|
||||
__be32 raw[7];
|
||||
struct mlx5_eqe_cmd cmd;
|
||||
@@ -707,6 +723,7 @@ union ev_data {
|
||||
struct mlx5_eqe_dct dct;
|
||||
struct mlx5_eqe_temp_warning temp_warning;
|
||||
struct mlx5_eqe_xrq_err xrq_err;
|
||||
struct mlx5_eqe_sync_fw_update sync_fw_update;
|
||||
} __packed;
|
||||
|
||||
struct mlx5_eqe {
|
||||
@@ -749,7 +766,7 @@ struct mlx5_err_cqe {
|
||||
};
|
||||
|
||||
struct mlx5_cqe64 {
|
||||
u8 outer_l3_tunneled;
|
||||
u8 tls_outer_l3_tunneled;
|
||||
u8 rsvd0;
|
||||
__be16 wqe_id;
|
||||
u8 lro_tcppsh_abort_dupack;
|
||||
@@ -767,7 +784,12 @@ struct mlx5_cqe64 {
|
||||
u8 l4_l3_hdr_type;
|
||||
__be16 vlan_info;
|
||||
__be32 srqn; /* [31:24]: lro_num_seg, [23:0]: srqn */
|
||||
__be32 imm_inval_pkey;
|
||||
union {
|
||||
__be32 immediate;
|
||||
__be32 inval_rkey;
|
||||
__be32 pkey;
|
||||
__be32 ft_metadata;
|
||||
};
|
||||
u8 rsvd40[4];
|
||||
__be32 byte_cnt;
|
||||
__be32 timestamp_h;
|
||||
@@ -834,7 +856,12 @@ static inline u8 get_cqe_l3_hdr_type(struct mlx5_cqe64 *cqe)
|
||||
|
||||
static inline bool cqe_is_tunneled(struct mlx5_cqe64 *cqe)
|
||||
{
|
||||
return cqe->outer_l3_tunneled & 0x1;
|
||||
return cqe->tls_outer_l3_tunneled & 0x1;
|
||||
}
|
||||
|
||||
static inline u8 get_cqe_tls_offload(struct mlx5_cqe64 *cqe)
|
||||
{
|
||||
return (cqe->tls_outer_l3_tunneled >> 3) & 0x3;
|
||||
}
|
||||
|
||||
static inline bool cqe_has_vlan(struct mlx5_cqe64 *cqe)
|
||||
@@ -922,6 +949,13 @@ enum {
|
||||
CQE_L4_OK = 1 << 2,
|
||||
};
|
||||
|
||||
enum {
|
||||
CQE_TLS_OFFLOAD_NOT_DECRYPTED = 0x0,
|
||||
CQE_TLS_OFFLOAD_DECRYPTED = 0x1,
|
||||
CQE_TLS_OFFLOAD_RESYNC = 0x2,
|
||||
CQE_TLS_OFFLOAD_ERROR = 0x3,
|
||||
};
|
||||
|
||||
struct mlx5_sig_err_cqe {
|
||||
u8 rsvd0[16];
|
||||
__be32 expected_trans_sig;
|
||||
@@ -1107,6 +1141,7 @@ enum mlx5_cap_type {
|
||||
MLX5_CAP_TLS,
|
||||
MLX5_CAP_VDPA_EMULATION = 0x13,
|
||||
MLX5_CAP_DEV_EVENT = 0x14,
|
||||
MLX5_CAP_IPSEC,
|
||||
/* NUM OF CAP Types */
|
||||
MLX5_CAP_NUM
|
||||
};
|
||||
@@ -1324,6 +1359,9 @@ enum mlx5_qcam_feature_groups {
|
||||
MLX5_GET64(device_virtio_emulation_cap, \
|
||||
(mdev)->caps.hca_cur[MLX5_CAP_VDPA_EMULATION], cap)
|
||||
|
||||
#define MLX5_CAP_IPSEC(mdev, cap)\
|
||||
MLX5_GET(ipsec_cap, (mdev)->caps.hca_cur[MLX5_CAP_IPSEC], cap)
|
||||
|
||||
enum {
|
||||
MLX5_CMD_STAT_OK = 0x0,
|
||||
MLX5_CMD_STAT_INT_ERR = 0x1,
|
||||
|
@@ -130,6 +130,7 @@ enum {
|
||||
MLX5_REG_NODE_DESC = 0x6001,
|
||||
MLX5_REG_HOST_ENDIANNESS = 0x7004,
|
||||
MLX5_REG_MCIA = 0x9014,
|
||||
MLX5_REG_MFRL = 0x9028,
|
||||
MLX5_REG_MLCR = 0x902b,
|
||||
MLX5_REG_MTRC_CAP = 0x9040,
|
||||
MLX5_REG_MTRC_CONF = 0x9041,
|
||||
@@ -541,7 +542,6 @@ struct mlx5_priv {
|
||||
struct mlx5_core_health health;
|
||||
|
||||
/* start: qp staff */
|
||||
struct mlx5_qp_table qp_table;
|
||||
struct dentry *qp_debugfs;
|
||||
struct dentry *eq_debugfs;
|
||||
struct dentry *cq_debugfs;
|
||||
@@ -687,7 +687,6 @@ struct mlx5_core_dev {
|
||||
unsigned long intf_state;
|
||||
struct mlx5_priv priv;
|
||||
struct mlx5_profile *profile;
|
||||
atomic_t num_qps;
|
||||
u32 issi;
|
||||
struct mlx5e_resources mlx5e_res;
|
||||
struct mlx5_dm *dm;
|
||||
@@ -903,6 +902,19 @@ int mlx5_cmd_exec_cb(struct mlx5_async_ctx *ctx, void *in, int in_size,
|
||||
|
||||
int mlx5_cmd_exec(struct mlx5_core_dev *dev, void *in, int in_size, void *out,
|
||||
int out_size);
|
||||
|
||||
#define mlx5_cmd_exec_inout(dev, ifc_cmd, in, out) \
|
||||
({ \
|
||||
mlx5_cmd_exec(dev, in, MLX5_ST_SZ_BYTES(ifc_cmd##_in), out, \
|
||||
MLX5_ST_SZ_BYTES(ifc_cmd##_out)); \
|
||||
})
|
||||
|
||||
#define mlx5_cmd_exec_in(dev, ifc_cmd, in) \
|
||||
({ \
|
||||
u32 _out[MLX5_ST_SZ_DW(ifc_cmd##_out)] = {}; \
|
||||
mlx5_cmd_exec_inout(dev, ifc_cmd, in, _out); \
|
||||
})
|
||||
|
||||
int mlx5_cmd_exec_polling(struct mlx5_core_dev *dev, void *in, int in_size,
|
||||
void *out, int out_size);
|
||||
void mlx5_cmd_mbox_status(void *out, u8 *status, u32 *syndrome);
|
||||
@@ -1069,7 +1081,8 @@ int mlx5_lag_query_cong_counters(struct mlx5_core_dev *dev,
|
||||
struct mlx5_uars_page *mlx5_get_uars_page(struct mlx5_core_dev *mdev);
|
||||
void mlx5_put_uars_page(struct mlx5_core_dev *mdev, struct mlx5_uars_page *up);
|
||||
int mlx5_dm_sw_icm_alloc(struct mlx5_core_dev *dev, enum mlx5_sw_icm_type type,
|
||||
u64 length, u16 uid, phys_addr_t *addr, u32 *obj_id);
|
||||
u64 length, u32 log_alignment, u16 uid,
|
||||
phys_addr_t *addr, u32 *obj_id);
|
||||
int mlx5_dm_sw_icm_dealloc(struct mlx5_core_dev *dev, enum mlx5_sw_icm_type type,
|
||||
u64 length, u16 uid, phys_addr_t addr, u32 obj_id);
|
||||
|
||||
|
@@ -74,6 +74,7 @@ enum {
|
||||
MLX5_SET_HCA_CAP_OP_MOD_GENERAL_DEVICE = 0x0,
|
||||
MLX5_SET_HCA_CAP_OP_MOD_ODP = 0x2,
|
||||
MLX5_SET_HCA_CAP_OP_MOD_ATOMIC = 0x3,
|
||||
MLX5_SET_HCA_CAP_OP_MOD_ROCE = 0x4,
|
||||
};
|
||||
|
||||
enum {
|
||||
@@ -885,7 +886,8 @@ struct mlx5_ifc_per_protocol_networking_offload_caps_bits {
|
||||
u8 tunnel_stateless_vxlan_gpe[0x1];
|
||||
u8 tunnel_stateless_ipv4_over_vxlan[0x1];
|
||||
u8 tunnel_stateless_ip_over_ip[0x1];
|
||||
u8 reserved_at_2a[0x6];
|
||||
u8 insert_trailer[0x1];
|
||||
u8 reserved_at_2b[0x5];
|
||||
u8 max_vxlan_udp_ports[0x8];
|
||||
u8 reserved_at_38[0x6];
|
||||
u8 max_geneve_opt_len[0x1];
|
||||
@@ -903,7 +905,9 @@ struct mlx5_ifc_per_protocol_networking_offload_caps_bits {
|
||||
|
||||
struct mlx5_ifc_roce_cap_bits {
|
||||
u8 roce_apm[0x1];
|
||||
u8 reserved_at_1[0x1f];
|
||||
u8 reserved_at_1[0x3];
|
||||
u8 sw_r_roce_src_udp_port[0x1];
|
||||
u8 reserved_at_5[0x1b];
|
||||
|
||||
u8 reserved_at_20[0x60];
|
||||
|
||||
@@ -1097,6 +1101,23 @@ struct mlx5_ifc_tls_cap_bits {
|
||||
u8 reserved_at_20[0x7e0];
|
||||
};
|
||||
|
||||
struct mlx5_ifc_ipsec_cap_bits {
|
||||
u8 ipsec_full_offload[0x1];
|
||||
u8 ipsec_crypto_offload[0x1];
|
||||
u8 ipsec_esn[0x1];
|
||||
u8 ipsec_crypto_esp_aes_gcm_256_encrypt[0x1];
|
||||
u8 ipsec_crypto_esp_aes_gcm_128_encrypt[0x1];
|
||||
u8 ipsec_crypto_esp_aes_gcm_256_decrypt[0x1];
|
||||
u8 ipsec_crypto_esp_aes_gcm_128_decrypt[0x1];
|
||||
u8 reserved_at_7[0x4];
|
||||
u8 log_max_ipsec_offload[0x5];
|
||||
u8 reserved_at_10[0x10];
|
||||
|
||||
u8 min_log_ipsec_full_replay_window[0x8];
|
||||
u8 max_log_ipsec_full_replay_window[0x8];
|
||||
u8 reserved_at_30[0x7d0];
|
||||
};
|
||||
|
||||
enum {
|
||||
MLX5_WQ_TYPE_LINKED_LIST = 0x0,
|
||||
MLX5_WQ_TYPE_CYCLIC = 0x1,
|
||||
@@ -1223,7 +1244,9 @@ struct mlx5_ifc_cmd_hca_cap_bits {
|
||||
u8 reserved_at_130[0xa];
|
||||
u8 log_max_ra_res_dc[0x6];
|
||||
|
||||
u8 reserved_at_140[0x9];
|
||||
u8 reserved_at_140[0x6];
|
||||
u8 release_all_pages[0x1];
|
||||
u8 reserved_at_147[0x2];
|
||||
u8 roce_accl[0x1];
|
||||
u8 log_max_ra_req_qp[0x6];
|
||||
u8 reserved_at_150[0xa];
|
||||
@@ -1296,7 +1319,9 @@ struct mlx5_ifc_cmd_hca_cap_bits {
|
||||
u8 wol_p[0x1];
|
||||
|
||||
u8 stat_rate_support[0x10];
|
||||
u8 reserved_at_1f0[0xc];
|
||||
u8 reserved_at_1f0[0x1];
|
||||
u8 pci_sync_for_fw_update_event[0x1];
|
||||
u8 reserved_at_1f2[0xa];
|
||||
u8 cqe_version[0x4];
|
||||
|
||||
u8 compact_address_vector[0x1];
|
||||
@@ -1461,13 +1486,14 @@ struct mlx5_ifc_cmd_hca_cap_bits {
|
||||
|
||||
u8 reserved_at_460[0x3];
|
||||
u8 log_max_uctx[0x5];
|
||||
u8 reserved_at_468[0x3];
|
||||
u8 reserved_at_468[0x2];
|
||||
u8 ipsec_offload[0x1];
|
||||
u8 log_max_umem[0x5];
|
||||
u8 max_num_eqs[0x10];
|
||||
|
||||
u8 reserved_at_480[0x1];
|
||||
u8 tls_tx[0x1];
|
||||
u8 reserved_at_482[0x1];
|
||||
u8 tls_rx[0x1];
|
||||
u8 log_max_l2_table[0x5];
|
||||
u8 reserved_at_488[0x8];
|
||||
u8 log_uar_page_sz[0x10];
|
||||
@@ -3112,7 +3138,8 @@ struct mlx5_ifc_tirc_bits {
|
||||
u8 reserved_at_0[0x20];
|
||||
|
||||
u8 disp_type[0x4];
|
||||
u8 reserved_at_24[0x1c];
|
||||
u8 tls_en[0x1];
|
||||
u8 reserved_at_25[0x1b];
|
||||
|
||||
u8 reserved_at_40[0x40];
|
||||
|
||||
@@ -4140,7 +4167,8 @@ enum {
|
||||
MLX5_SET_FTE_MODIFY_ENABLE_MASK_ACTION = 0x0,
|
||||
MLX5_SET_FTE_MODIFY_ENABLE_MASK_FLOW_TAG = 0x1,
|
||||
MLX5_SET_FTE_MODIFY_ENABLE_MASK_DESTINATION_LIST = 0x2,
|
||||
MLX5_SET_FTE_MODIFY_ENABLE_MASK_FLOW_COUNTERS = 0x3
|
||||
MLX5_SET_FTE_MODIFY_ENABLE_MASK_FLOW_COUNTERS = 0x3,
|
||||
MLX5_SET_FTE_MODIFY_ENABLE_MASK_IPSEC_OBJ_ID = 0x4
|
||||
};
|
||||
|
||||
struct mlx5_ifc_set_fte_out_bits {
|
||||
@@ -5667,9 +5695,9 @@ struct mlx5_ifc_copy_action_in_bits {
|
||||
u8 reserved_at_38[0x8];
|
||||
};
|
||||
|
||||
union mlx5_ifc_set_action_in_add_action_in_auto_bits {
|
||||
struct mlx5_ifc_set_action_in_bits set_action_in;
|
||||
struct mlx5_ifc_add_action_in_bits add_action_in;
|
||||
union mlx5_ifc_set_add_copy_action_in_auto_bits {
|
||||
struct mlx5_ifc_set_action_in_bits set_action_in;
|
||||
struct mlx5_ifc_add_action_in_bits add_action_in;
|
||||
struct mlx5_ifc_copy_action_in_bits copy_action_in;
|
||||
u8 reserved_at_0[0x40];
|
||||
};
|
||||
@@ -5743,7 +5771,7 @@ struct mlx5_ifc_alloc_modify_header_context_in_bits {
|
||||
u8 reserved_at_68[0x10];
|
||||
u8 num_of_actions[0x8];
|
||||
|
||||
union mlx5_ifc_set_action_in_add_action_in_auto_bits actions[0];
|
||||
union mlx5_ifc_set_add_copy_action_in_auto_bits actions[0];
|
||||
};
|
||||
|
||||
struct mlx5_ifc_dealloc_modify_header_context_out_bits {
|
||||
@@ -9680,6 +9708,29 @@ struct mlx5_ifc_mcda_reg_bits {
|
||||
u8 data[0][0x20];
|
||||
};
|
||||
|
||||
enum {
|
||||
MLX5_MFRL_REG_RESET_TYPE_FULL_CHIP = BIT(0),
|
||||
MLX5_MFRL_REG_RESET_TYPE_NET_PORT_ALIVE = BIT(1),
|
||||
};
|
||||
|
||||
enum {
|
||||
MLX5_MFRL_REG_RESET_LEVEL0 = BIT(0),
|
||||
MLX5_MFRL_REG_RESET_LEVEL3 = BIT(3),
|
||||
MLX5_MFRL_REG_RESET_LEVEL6 = BIT(6),
|
||||
};
|
||||
|
||||
struct mlx5_ifc_mfrl_reg_bits {
|
||||
u8 reserved_at_0[0x20];
|
||||
|
||||
u8 reserved_at_20[0x2];
|
||||
u8 pci_sync_for_fw_update_start[0x1];
|
||||
u8 pci_sync_for_fw_update_resp[0x2];
|
||||
u8 rst_type_sel[0x3];
|
||||
u8 reserved_at_28[0x8];
|
||||
u8 reset_type[0x8];
|
||||
u8 reset_level[0x8];
|
||||
};
|
||||
|
||||
struct mlx5_ifc_mirc_reg_bits {
|
||||
u8 reserved_at_0[0x18];
|
||||
u8 status_code[0x8];
|
||||
@@ -9743,6 +9794,7 @@ union mlx5_ifc_ports_control_registers_document_bits {
|
||||
struct mlx5_ifc_mcc_reg_bits mcc_reg;
|
||||
struct mlx5_ifc_mcda_reg_bits mcda_reg;
|
||||
struct mlx5_ifc_mirc_reg_bits mirc_reg;
|
||||
struct mlx5_ifc_mfrl_reg_bits mfrl_reg;
|
||||
u8 reserved_at_0[0x60e0];
|
||||
};
|
||||
|
||||
@@ -10465,10 +10517,62 @@ struct mlx5_ifc_affiliated_event_header_bits {
|
||||
|
||||
enum {
|
||||
MLX5_HCA_CAP_GENERAL_OBJECT_TYPES_ENCRYPTION_KEY = BIT(0xc),
|
||||
MLX5_HCA_CAP_GENERAL_OBJECT_TYPES_IPSEC = BIT(0x13),
|
||||
};
|
||||
|
||||
enum {
|
||||
MLX5_GENERAL_OBJECT_TYPES_ENCRYPTION_KEY = 0xc,
|
||||
MLX5_GENERAL_OBJECT_TYPES_IPSEC = 0x13,
|
||||
};
|
||||
|
||||
enum {
|
||||
MLX5_IPSEC_OBJECT_ICV_LEN_16B,
|
||||
MLX5_IPSEC_OBJECT_ICV_LEN_12B,
|
||||
MLX5_IPSEC_OBJECT_ICV_LEN_8B,
|
||||
};
|
||||
|
||||
struct mlx5_ifc_ipsec_obj_bits {
|
||||
u8 modify_field_select[0x40];
|
||||
u8 full_offload[0x1];
|
||||
u8 reserved_at_41[0x1];
|
||||
u8 esn_en[0x1];
|
||||
u8 esn_overlap[0x1];
|
||||
u8 reserved_at_44[0x2];
|
||||
u8 icv_length[0x2];
|
||||
u8 reserved_at_48[0x4];
|
||||
u8 aso_return_reg[0x4];
|
||||
u8 reserved_at_50[0x10];
|
||||
|
||||
u8 esn_msb[0x20];
|
||||
|
||||
u8 reserved_at_80[0x8];
|
||||
u8 dekn[0x18];
|
||||
|
||||
u8 salt[0x20];
|
||||
|
||||
u8 implicit_iv[0x40];
|
||||
|
||||
u8 reserved_at_100[0x700];
|
||||
};
|
||||
|
||||
struct mlx5_ifc_create_ipsec_obj_in_bits {
|
||||
struct mlx5_ifc_general_obj_in_cmd_hdr_bits general_obj_in_cmd_hdr;
|
||||
struct mlx5_ifc_ipsec_obj_bits ipsec_object;
|
||||
};
|
||||
|
||||
enum {
|
||||
MLX5_MODIFY_IPSEC_BITMASK_ESN_OVERLAP = BIT(0),
|
||||
MLX5_MODIFY_IPSEC_BITMASK_ESN_MSB = BIT(1),
|
||||
};
|
||||
|
||||
struct mlx5_ifc_query_ipsec_obj_out_bits {
|
||||
struct mlx5_ifc_general_obj_out_cmd_hdr_bits general_obj_out_cmd_hdr;
|
||||
struct mlx5_ifc_ipsec_obj_bits ipsec_object;
|
||||
};
|
||||
|
||||
struct mlx5_ifc_modify_ipsec_obj_in_bits {
|
||||
struct mlx5_ifc_general_obj_in_cmd_hdr_bits general_obj_in_cmd_hdr;
|
||||
struct mlx5_ifc_ipsec_obj_bits ipsec_object;
|
||||
};
|
||||
|
||||
struct mlx5_ifc_encryption_key_obj_bits {
|
||||
|
@@ -229,6 +229,11 @@ enum {
|
||||
|
||||
enum {
|
||||
MLX5_ETH_WQE_SVLAN = 1 << 0,
|
||||
MLX5_ETH_WQE_TRAILER_HDR_OUTER_IP_ASSOC = 1 << 26,
|
||||
MLX5_ETH_WQE_TRAILER_HDR_OUTER_L4_ASSOC = 1 << 27,
|
||||
MLX5_ETH_WQE_TRAILER_HDR_INNER_IP_ASSOC = 3 << 26,
|
||||
MLX5_ETH_WQE_TRAILER_HDR_INNER_L4_ASSOC = 1 << 28,
|
||||
MLX5_ETH_WQE_INSERT_TRAILER = 1 << 30,
|
||||
MLX5_ETH_WQE_INSERT_VLAN = 1 << 15,
|
||||
};
|
||||
|
||||
@@ -257,6 +262,7 @@ struct mlx5_wqe_eth_seg {
|
||||
__be16 type;
|
||||
__be16 vlan_tci;
|
||||
} insert;
|
||||
__be32 trailer;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -553,57 +559,8 @@ struct mlx5_qp_context {
|
||||
u8 rsvd1[24];
|
||||
};
|
||||
|
||||
static inline struct mlx5_core_qp *__mlx5_qp_lookup(struct mlx5_core_dev *dev, u32 qpn)
|
||||
{
|
||||
return radix_tree_lookup(&dev->priv.qp_table.tree, qpn);
|
||||
}
|
||||
|
||||
int mlx5_core_create_dct(struct mlx5_core_dev *dev,
|
||||
struct mlx5_core_dct *qp,
|
||||
u32 *in, int inlen,
|
||||
u32 *out, int outlen);
|
||||
int mlx5_core_create_qp(struct mlx5_core_dev *dev,
|
||||
struct mlx5_core_qp *qp,
|
||||
u32 *in,
|
||||
int inlen);
|
||||
int mlx5_core_qp_modify(struct mlx5_core_dev *dev, u16 opcode,
|
||||
u32 opt_param_mask, void *qpc,
|
||||
struct mlx5_core_qp *qp);
|
||||
int mlx5_core_destroy_qp(struct mlx5_core_dev *dev,
|
||||
struct mlx5_core_qp *qp);
|
||||
int mlx5_core_destroy_dct(struct mlx5_core_dev *dev,
|
||||
struct mlx5_core_dct *dct);
|
||||
int mlx5_core_qp_query(struct mlx5_core_dev *dev, struct mlx5_core_qp *qp,
|
||||
u32 *out, int outlen);
|
||||
int mlx5_core_dct_query(struct mlx5_core_dev *dev, struct mlx5_core_dct *dct,
|
||||
u32 *out, int outlen);
|
||||
|
||||
int mlx5_core_set_delay_drop(struct mlx5_core_dev *dev,
|
||||
u32 timeout_usec);
|
||||
|
||||
int mlx5_core_xrcd_alloc(struct mlx5_core_dev *dev, u32 *xrcdn);
|
||||
int mlx5_core_xrcd_dealloc(struct mlx5_core_dev *dev, u32 xrcdn);
|
||||
void mlx5_init_qp_table(struct mlx5_core_dev *dev);
|
||||
void mlx5_cleanup_qp_table(struct mlx5_core_dev *dev);
|
||||
int mlx5_debug_qp_add(struct mlx5_core_dev *dev, struct mlx5_core_qp *qp);
|
||||
void mlx5_debug_qp_remove(struct mlx5_core_dev *dev, struct mlx5_core_qp *qp);
|
||||
int mlx5_core_create_rq_tracked(struct mlx5_core_dev *dev, u32 *in, int inlen,
|
||||
struct mlx5_core_qp *rq);
|
||||
void mlx5_core_destroy_rq_tracked(struct mlx5_core_dev *dev,
|
||||
struct mlx5_core_qp *rq);
|
||||
int mlx5_core_create_sq_tracked(struct mlx5_core_dev *dev, u32 *in, int inlen,
|
||||
struct mlx5_core_qp *sq);
|
||||
void mlx5_core_destroy_sq_tracked(struct mlx5_core_dev *dev,
|
||||
struct mlx5_core_qp *sq);
|
||||
int mlx5_core_alloc_q_counter(struct mlx5_core_dev *dev, u16 *counter_id);
|
||||
int mlx5_core_dealloc_q_counter(struct mlx5_core_dev *dev, u16 counter_id);
|
||||
int mlx5_core_query_q_counter(struct mlx5_core_dev *dev, u16 counter_id,
|
||||
int reset, void *out, int out_size);
|
||||
|
||||
struct mlx5_core_rsc_common *mlx5_core_res_hold(struct mlx5_core_dev *dev,
|
||||
int res_num,
|
||||
enum mlx5_res_type res_type);
|
||||
void mlx5_core_res_put(struct mlx5_core_rsc_common *res);
|
||||
|
||||
static inline const char *mlx5_qp_type_str(int type)
|
||||
{
|
||||
|
@@ -39,27 +39,20 @@ int mlx5_core_alloc_transport_domain(struct mlx5_core_dev *dev, u32 *tdn);
|
||||
void mlx5_core_dealloc_transport_domain(struct mlx5_core_dev *dev, u32 tdn);
|
||||
int mlx5_core_create_rq(struct mlx5_core_dev *dev, u32 *in, int inlen,
|
||||
u32 *rqn);
|
||||
int mlx5_core_modify_rq(struct mlx5_core_dev *dev, u32 rqn, u32 *in, int inlen);
|
||||
int mlx5_core_modify_rq(struct mlx5_core_dev *dev, u32 rqn, u32 *in);
|
||||
void mlx5_core_destroy_rq(struct mlx5_core_dev *dev, u32 rqn);
|
||||
int mlx5_core_query_rq(struct mlx5_core_dev *dev, u32 rqn, u32 *out);
|
||||
int mlx5_core_create_sq(struct mlx5_core_dev *dev, u32 *in, int inlen,
|
||||
u32 *sqn);
|
||||
int mlx5_core_modify_sq(struct mlx5_core_dev *dev, u32 sqn, u32 *in, int inlen);
|
||||
int mlx5_core_modify_sq(struct mlx5_core_dev *dev, u32 sqn, u32 *in);
|
||||
void mlx5_core_destroy_sq(struct mlx5_core_dev *dev, u32 sqn);
|
||||
int mlx5_core_query_sq(struct mlx5_core_dev *dev, u32 sqn, u32 *out);
|
||||
int mlx5_core_query_sq_state(struct mlx5_core_dev *dev, u32 sqn, u8 *state);
|
||||
int mlx5_core_create_tir(struct mlx5_core_dev *dev, u32 *in, int inlen,
|
||||
u32 *tirn);
|
||||
int mlx5_core_create_tir_out(struct mlx5_core_dev *dev,
|
||||
u32 *in, int inlen,
|
||||
u32 *out, int outlen);
|
||||
int mlx5_core_modify_tir(struct mlx5_core_dev *dev, u32 tirn, u32 *in,
|
||||
int inlen);
|
||||
int mlx5_core_create_tir(struct mlx5_core_dev *dev, u32 *in, u32 *tirn);
|
||||
int mlx5_core_modify_tir(struct mlx5_core_dev *dev, u32 tirn, u32 *in);
|
||||
void mlx5_core_destroy_tir(struct mlx5_core_dev *dev, u32 tirn);
|
||||
int mlx5_core_create_tis(struct mlx5_core_dev *dev, u32 *in, int inlen,
|
||||
u32 *tisn);
|
||||
int mlx5_core_modify_tis(struct mlx5_core_dev *dev, u32 tisn, u32 *in,
|
||||
int inlen);
|
||||
int mlx5_core_create_tis(struct mlx5_core_dev *dev, u32 *in, u32 *tisn);
|
||||
int mlx5_core_modify_tis(struct mlx5_core_dev *dev, u32 tisn, u32 *in);
|
||||
void mlx5_core_destroy_tis(struct mlx5_core_dev *dev, u32 tisn);
|
||||
int mlx5_core_create_rqt(struct mlx5_core_dev *dev, u32 *in, int inlen,
|
||||
u32 *rqtn);
|
||||
|
@@ -127,8 +127,7 @@ int mlx5_query_vport_down_stats(struct mlx5_core_dev *mdev, u16 vport,
|
||||
u8 other_vport, u64 *rx_discard_vport_down,
|
||||
u64 *tx_discard_vport_down);
|
||||
int mlx5_core_query_vport_counter(struct mlx5_core_dev *dev, u8 other_vport,
|
||||
int vf, u8 port_num, void *out,
|
||||
size_t out_sz);
|
||||
int vf, u8 port_num, void *out);
|
||||
int mlx5_core_modify_hca_vport_context(struct mlx5_core_dev *dev,
|
||||
u8 other_vport, u8 port_num,
|
||||
int vf,
|
||||
|
Reference in New Issue
Block a user