staticbool mlx5ctl_validate_rpc(constvoid *in, enum fwctl_rpc_scope scope)
{
u16 opcode = MLX5_GET(mbox_in_hdr, in, opcode);
u16 op_mod = MLX5_GET(mbox_in_hdr, in, op_mod);
/* *Currentlythedrivercan'tkeeptrackofcommandsthatallocate *objectsintheFW,thesecommandsaresafefromasecurity *perspectivebutnothingwillfreethememorywhentheFDisclosed. *Fornowpermitonlyquerycommandsandsetcommandsthatdon'talter *objects.Alsothecapsforthescopehavenotbeendefinedyet, *filtercommandsmanuallyfornow.
*/ switch (opcode) { case MLX5_CMD_OP_POSTPONE_CONNECTED_QP_TIMEOUT: case MLX5_CMD_OP_QUERY_ADAPTER: case MLX5_CMD_OP_QUERY_ESW_FUNCTIONS: case MLX5_CMD_OP_QUERY_HCA_CAP: case MLX5_CMD_OP_QUERY_HCA_VPORT_CONTEXT: case MLX5_CMD_OP_QUERY_OTHER_HCA_CAP: case MLX5_CMD_OP_QUERY_ROCE_ADDRESS: case MLX5_CMD_OPCODE_QUERY_VUID: /* *FWlimitsSET_HCA_CAPonthetoolsUIDtoonlytheotherfunction *modewhichisusedforfunctionpre-configuration
*/ case MLX5_CMD_OP_SET_HCA_CAP: returntrue; /* scope >= FWCTL_RPC_CONFIGURATION; */
case MLX5_CMD_OP_FPGA_QUERY_QP_COUNTERS: case MLX5_CMD_OP_FPGA_QUERY_QP: case MLX5_CMD_OP_NOP: case MLX5_CMD_OP_QUERY_AFU: case MLX5_CMD_OP_QUERY_BURST_SIZE: case MLX5_CMD_OP_QUERY_CAPI_PEC: case MLX5_CMD_OP_QUERY_CONG_PARAMS: case MLX5_CMD_OP_QUERY_CONG_STATISTICS: case MLX5_CMD_OP_QUERY_CONG_STATUS: case MLX5_CMD_OP_QUERY_CQ: case MLX5_CMD_OP_QUERY_CRYPTO_STATE: case MLX5_CMD_OP_QUERY_DC_CNAK_TRACE: case MLX5_CMD_OP_QUERY_DCT: case MLX5_CMD_OP_QUERY_DELAY_DROP_PARAMS: case MLX5_CMD_OP_QUERY_DIAGNOSTIC_COUNTERS: case MLX5_CMD_OP_QUERY_DIAGNOSTIC_PARAMS: case MLX5_CMD_OP_QUERY_DPA_PARTITION: case MLX5_CMD_OP_QUERY_DPA_PARTITIONS: case MLX5_CMD_OP_QUERY_DRIVER_VERSION: case MLX5_CMD_OP_QUERY_EMULATED_FUNCTIONS_INFO: case MLX5_CMD_OP_QUERY_EMULATED_RESOURCES_INFO: case MLX5_CMD_OP_QUERY_EMULATION_DEVICE_EQ_MSIX_MAPPING: case MLX5_CMD_OP_QUERY_EQ: case MLX5_CMD_OP_QUERY_ESW_VPORT_CONTEXT: case MLX5_CMD_OP_QUERY_FLOW_COUNTER: case MLX5_CMD_OP_QUERY_FLOW_GROUP: case MLX5_CMD_OP_QUERY_FLOW_TABLE_ENTRY: case MLX5_CMD_OP_QUERY_FLOW_TABLE: case MLX5_CMD_OP_QUERY_GENERAL_OBJECT: case MLX5_CMD_OP_QUERY_HCA_VPORT_GID: case MLX5_CMD_OP_QUERY_HCA_VPORT_PKEY: case MLX5_CMD_OP_QUERY_ISSI: case MLX5_CMD_OP_QUERY_L2_TABLE_ENTRY: case MLX5_CMD_OP_QUERY_LAG: case MLX5_CMD_OP_QUERY_MAD_DEMUX: case MLX5_CMD_OP_QUERY_MATCH_SAMPLE_INFO: case MLX5_CMD_OP_QUERY_MKEY: case MLX5_CMD_OP_QUERY_MODIFY_HEADER_CONTEXT: case MLX5_CMD_OP_QUERY_MTT: case MLX5_CMD_OP_QUERY_NIC_VPORT_CONTEXT: case MLX5_CMD_OP_QUERY_NVMF_BACKEND_CONTROLLER: case MLX5_CMD_OP_QUERY_NVMF_CC_RESPONSE: case MLX5_CMD_OP_QUERY_NVMF_NAMESPACE_CONTEXT: case MLX5_CMD_OP_QUERY_PACKET_REFORMAT_CONTEXT: case MLX5_CMD_OP_QUERY_PAGES: case MLX5_CMD_OP_QUERY_PSV: case MLX5_CMD_OP_QUERY_Q_COUNTER: case MLX5_CMD_OP_QUERY_QP: case MLX5_CMD_OP_QUERY_RATE_LIMIT: case MLX5_CMD_OP_QUERY_RDB: case MLX5_CMD_OP_QUERY_REGEXP_PARAMS: case MLX5_CMD_OP_QUERY_REGEXP_REGISTER: case MLX5_CMD_OP_QUERY_RMP: case MLX5_CMD_OP_QUERY_RQ: case MLX5_CMD_OP_QUERY_RQT: case MLX5_CMD_OP_QUERY_RSV_RESOURCES: case MLX5_CMD_OP_QUERY_SCHED_QUEUE: case MLX5_CMD_OP_QUERY_SCHEDULING_ELEMENT: case MLX5_CMD_OP_QUERY_SF_PARTITION: case MLX5_CMD_OP_QUERY_SPECIAL_CONTEXTS: case MLX5_CMD_OP_QUERY_SQ: case MLX5_CMD_OP_QUERY_SRQ: case MLX5_CMD_OP_QUERY_TIR: case MLX5_CMD_OP_QUERY_TIS: case MLX5_CMD_OP_QUERY_UCTX: case MLX5_CMD_OP_QUERY_UMEM: case MLX5_CMD_OP_QUERY_VHCA_MIGRATION_STATE: case MLX5_CMD_OP_QUERY_VHCA_STATE: case MLX5_CMD_OP_QUERY_VNIC_ENV: case MLX5_CMD_OP_QUERY_VPORT_COUNTER: case MLX5_CMD_OP_QUERY_VPORT_STATE: case MLX5_CMD_OP_QUERY_WOL_ROL: case MLX5_CMD_OP_QUERY_XRC_SRQ: case MLX5_CMD_OP_QUERY_XRQ_DC_PARAMS_ENTRY: case MLX5_CMD_OP_QUERY_XRQ_ERROR_PARAMS: case MLX5_CMD_OP_QUERY_XRQ: case MLX5_CMD_OP_USER_QUERY_XRQ_DC_PARAMS_ENTRY: case MLX5_CMD_OP_USER_QUERY_XRQ_ERROR_PARAMS: return scope >= FWCTL_RPC_DEBUG_READ_ONLY;
case MLX5_CMD_OP_SET_DIAGNOSTIC_PARAMS: return scope >= FWCTL_RPC_DEBUG_WRITE;
case MLX5_CMD_OP_ACCESS_REG: case MLX5_CMD_OP_ACCESS_REGISTER_USER: if (op_mod == 0) /* write */ returntrue; /* scope >= FWCTL_RPC_CONFIGURATION; */ return scope >= FWCTL_RPC_DEBUG_READ_ONLY; default: returnfalse;
}
}
/* Enforce the user context for the command */
MLX5_SET(mbox_in_hdr, rpc_in, uid, mfd->uctx_uid);
ret = mlx5_cmd_do(mcdev->mdev, rpc_in, in_len, rpc_out, *out_len);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.