/openbmc/linux/drivers/net/ethernet/mellanox/mlxsw/ |
H A D | core.h | 29 struct mlxsw_core; 36 unsigned int mlxsw_core_max_ports(const struct mlxsw_core *mlxsw_core); 38 int mlxsw_core_max_lag(struct mlxsw_core *mlxsw_core, u16 *p_max_lag); 40 void *mlxsw_core_driver_priv(struct mlxsw_core *mlxsw_core); 42 struct mlxsw_linecards *mlxsw_core_linecards(struct mlxsw_core *mlxsw_core); 44 void mlxsw_core_linecards_set(struct mlxsw_core *mlxsw_core, 54 int mlxsw_core_fw_flash(struct mlxsw_core *mlxsw_core, 64 void mlxsw_core_bus_device_unregister(struct mlxsw_core *mlxsw_core, bool reload); 90 bool mlxsw_core_skb_transmit_busy(struct mlxsw_core *mlxsw_core, 92 int mlxsw_core_skb_transmit(struct mlxsw_core *mlxsw_core, struct sk_buff *skb, [all …]
|
H A D | core.c | 65 struct mlxsw_core { struct 102 struct mlxsw_linecards *mlxsw_core_linecards(struct mlxsw_core *mlxsw_core) in mlxsw_core_linecards() argument 104 return mlxsw_core->linecards; in mlxsw_core_linecards() 107 void mlxsw_core_linecards_set(struct mlxsw_core *mlxsw_core, in mlxsw_core_linecards_set() argument 110 mlxsw_core->linecards = linecards; in mlxsw_core_linecards_set() 117 struct mlxsw_core *mlxsw_core = priv; in mlxsw_ports_occ_get() local 119 return atomic_read(&mlxsw_core->active_ports_count); in mlxsw_ports_occ_get() 122 static int mlxsw_core_resources_ports_register(struct mlxsw_core *mlxsw_core) in mlxsw_core_resources_ports_register() argument 124 struct devlink *devlink = priv_to_devlink(mlxsw_core); in mlxsw_core_resources_ports_register() 128 max_ports = mlxsw_core->max_ports - 1; in mlxsw_core_resources_ports_register() [all …]
|
H A D | cmd.h | 26 struct mlxsw_core; 28 int mlxsw_cmd_exec(struct mlxsw_core *mlxsw_core, u16 opcode, u8 opcode_mod, 33 static inline int mlxsw_cmd_exec_in(struct mlxsw_core *mlxsw_core, u16 opcode, in mlxsw_cmd_exec_in() argument 37 return mlxsw_cmd_exec(mlxsw_core, opcode, opcode_mod, in_mod, false, in mlxsw_cmd_exec_in() 41 static inline int mlxsw_cmd_exec_out(struct mlxsw_core *mlxsw_core, u16 opcode, in mlxsw_cmd_exec_out() argument 46 return mlxsw_cmd_exec(mlxsw_core, opcode, opcode_mod, in_mod, in mlxsw_cmd_exec_out() 51 static inline int mlxsw_cmd_exec_none(struct mlxsw_core *mlxsw_core, u16 opcode, in mlxsw_cmd_exec_none() argument 54 return mlxsw_cmd_exec(mlxsw_core, opcode, opcode_mod, in_mod, false, in mlxsw_cmd_exec_none() 199 static inline int mlxsw_cmd_query_fw(struct mlxsw_core *mlxsw_core, in mlxsw_cmd_query_fw() argument 202 return mlxsw_cmd_exec_out(mlxsw_core, MLXSW_CMD_OPCODE_QUERY_FW, in mlxsw_cmd_query_fw() [all …]
|
H A D | core_env.h | 12 int mlxsw_env_module_temp_thresholds_get(struct mlxsw_core *core, 17 struct mlxsw_core *mlxsw_core, u8 slot_index, 21 struct mlxsw_core *mlxsw_core, u8 slot_index, 26 mlxsw_env_get_module_eeprom_by_page(struct mlxsw_core *mlxsw_core, 32 struct mlxsw_core *mlxsw_core, u8 slot_index, 36 mlxsw_env_get_module_power_mode(struct mlxsw_core *mlxsw_core, u8 slot_index, 42 mlxsw_env_set_module_power_mode(struct mlxsw_core *mlxsw_core, u8 slot_index, 48 mlxsw_env_module_overheat_counter_get(struct mlxsw_core *mlxsw_core, u8 slot_index, 51 void mlxsw_env_module_port_map(struct mlxsw_core *mlxsw_core, u8 slot_index, 54 void mlxsw_env_module_port_unmap(struct mlxsw_core *mlxsw_core, u8 slot_index, [all …]
|
H A D | core_linecards.c | 79 struct mlxsw_core *mlxsw_core = linecard->linecards->mlxsw_core; in mlxsw_linecard_type_name() local 84 err = mlxsw_reg_query(mlxsw_core, MLXSW_REG(mddq), mddq_pl); in mlxsw_linecard_type_name() 93 struct mlxsw_core *mlxsw_core; member 107 struct mlxsw_core *mlxsw_core = info->mlxsw_core; in mlxsw_linecard_device_fw_component_query() local 118 err = mlxsw_reg_query(mlxsw_core, MLXSW_REG(mddt), mddt_pl); in mlxsw_linecard_device_fw_component_query() 137 struct mlxsw_core *mlxsw_core = info->mlxsw_core; in mlxsw_linecard_device_fw_fsm_lock() local 148 err = mlxsw_reg_query(mlxsw_core, MLXSW_REG(mddt), mddt_pl); in mlxsw_linecard_device_fw_fsm_lock() 162 return mlxsw_reg_write(mlxsw_core, MLXSW_REG(mddt), mddt_pl); in mlxsw_linecard_device_fw_fsm_lock() 175 struct mlxsw_core *mlxsw_core = info->mlxsw_core; in mlxsw_linecard_device_fw_fsm_component_update() local 185 return mlxsw_reg_write(mlxsw_core, MLXSW_REG(mddt), mddt_pl); in mlxsw_linecard_device_fw_fsm_component_update() [all …]
|
H A D | core_env.c | 31 struct mlxsw_core *core; 59 mlxsw_env_module_info *mlxsw_env_module_info_get(struct mlxsw_core *mlxsw_core, in mlxsw_env_module_info_get() argument 62 struct mlxsw_env *mlxsw_env = mlxsw_core_env(mlxsw_core); in mlxsw_env_module_info_get() 67 static int __mlxsw_env_validate_module_type(struct mlxsw_core *core, in __mlxsw_env_validate_module_type() 89 static int mlxsw_env_validate_module_type(struct mlxsw_core *core, in mlxsw_env_validate_module_type() 103 mlxsw_env_validate_cable_ident(struct mlxsw_core *core, u8 slot_index, int id, in mlxsw_env_validate_cable_ident() 146 mlxsw_env_query_module_eeprom(struct mlxsw_core *mlxsw_core, u8 slot_index, in mlxsw_env_query_module_eeprom() argument 150 struct mlxsw_env *mlxsw_env = mlxsw_core_env(mlxsw_core); in mlxsw_env_query_module_eeprom() 192 err = mlxsw_reg_query(mlxsw_core, MLXSW_REG(mcia), mcia_pl); in mlxsw_env_query_module_eeprom() 208 mlxsw_env_module_temp_thresholds_get(struct mlxsw_core *core, u8 slot_index, in mlxsw_env_module_temp_thresholds_get() [all …]
|
H A D | minimal.c | 36 struct mlxsw_core *core; 110 struct mlxsw_core *core = mlxsw_m_port->mlxsw_m->core; in mlxsw_m_get_module_info() 122 struct mlxsw_core *core = mlxsw_m_port->mlxsw_m->core; in mlxsw_m_get_module_eeprom() 135 struct mlxsw_core *core = mlxsw_m_port->mlxsw_m->core; in mlxsw_m_get_module_eeprom_by_page() 146 struct mlxsw_core *core = mlxsw_m_port->mlxsw_m->core; in mlxsw_m_reset() 159 struct mlxsw_core *core = mlxsw_m_port->mlxsw_m->core; in mlxsw_m_get_module_power_mode() 172 struct mlxsw_core *core = mlxsw_m_port->mlxsw_m->core; in mlxsw_m_set_module_power_mode() 545 mlxsw_m_ports_remove_selected(struct mlxsw_core *mlxsw_core, in mlxsw_m_ports_remove_selected() argument 549 struct mlxsw_m *mlxsw_m = mlxsw_core_driver_priv(mlxsw_core); in mlxsw_m_ports_remove_selected() 581 mlxsw_m_got_active(struct mlxsw_core *mlxsw_core, u8 slot_index, void *priv) in mlxsw_m_got_active() argument [all …]
|
H A D | spectrum.c | 251 mlxsw_sp_txhdr_ptp_data_construct(struct mlxsw_core *mlxsw_core, in mlxsw_sp_txhdr_ptp_data_construct() argument 265 if (!MLXSW_CORE_RES_VALID(mlxsw_core, FID)) { in mlxsw_sp_txhdr_ptp_data_construct() 269 max_fid = MLXSW_CORE_RES_GET(mlxsw_core, FID); in mlxsw_sp_txhdr_ptp_data_construct() 300 static int mlxsw_sp_txhdr_handle(struct mlxsw_core *mlxsw_core, in mlxsw_sp_txhdr_handle() argument 305 struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core); in mlxsw_sp_txhdr_handle() 312 return mlxsw_sp->ptp_ops->txhdr_construct(mlxsw_core, in mlxsw_sp_txhdr_handle() 2099 mlxsw_sp_ports_remove_selected(struct mlxsw_core *mlxsw_core, in mlxsw_sp_ports_remove_selected() argument 2103 struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core); in mlxsw_sp_ports_remove_selected() 2104 unsigned int max_ports = mlxsw_core_max_ports(mlxsw_core); in mlxsw_sp_ports_remove_selected() 2261 static int mlxsw_sp_port_split(struct mlxsw_core *mlxsw_core, u16 local_port, in mlxsw_sp_port_split() argument [all …]
|
H A D | spectrum_ptp.h | 60 int mlxsw_sp_ptp_txhdr_construct(struct mlxsw_core *mlxsw_core, 89 int mlxsw_sp2_ptp_txhdr_construct(struct mlxsw_core *mlxsw_core, 175 mlxsw_sp_ptp_txhdr_construct(struct mlxsw_core *mlxsw_core, in mlxsw_sp_ptp_txhdr_construct() argument 236 mlxsw_sp2_ptp_txhdr_construct(struct mlxsw_core *mlxsw_core, in mlxsw_sp2_ptp_txhdr_construct() argument
|
H A D | spectrum.h | 163 struct mlxsw_core *core; 248 int (*txhdr_construct)(struct mlxsw_core *mlxsw_core, 584 int mlxsw_sp_sb_pool_get(struct mlxsw_core *mlxsw_core, 587 int mlxsw_sp_sb_pool_set(struct mlxsw_core *mlxsw_core, 606 int mlxsw_sp_sb_occ_snapshot(struct mlxsw_core *mlxsw_core, 608 int mlxsw_sp_sb_occ_max_clear(struct mlxsw_core *mlxsw_core, 716 int mlxsw_sp_txhdr_ptp_data_construct(struct mlxsw_core *mlxsw_core, 838 int mlxsw_sp1_kvdl_resources_register(struct mlxsw_core *mlxsw_core); 1409 int mlxsw_sp_trap_init(struct mlxsw_core *mlxsw_core, 1411 void mlxsw_sp_trap_fini(struct mlxsw_core *mlxsw_core, [all …]
|
H A D | spectrum_ptp.c | 77 struct mlxsw_core *core; 115 struct mlxsw_core *mlxsw_core = clock->common.core; in __mlxsw_sp1_ptp_read_frc() local 118 frc_h1 = mlxsw_core_read_frc_h(mlxsw_core); in __mlxsw_sp1_ptp_read_frc() 120 frc_l = mlxsw_core_read_frc_l(mlxsw_core); in __mlxsw_sp1_ptp_read_frc() 122 frc_h2 = mlxsw_core_read_frc_h(mlxsw_core); in __mlxsw_sp1_ptp_read_frc() 127 frc_l = mlxsw_core_read_frc_l(mlxsw_core); in __mlxsw_sp1_ptp_read_frc() 145 struct mlxsw_core *mlxsw_core = clock->core; in mlxsw_sp_ptp_phc_adjfreq() local 150 return mlxsw_reg_write(mlxsw_core, MLXSW_REG(mtutc), mtutc_pl); in mlxsw_sp_ptp_phc_adjfreq() 166 struct mlxsw_core *mlxsw_core = clock->common.core; in mlxsw_sp1_ptp_phc_settime() local 180 err = mlxsw_reg_write(mlxsw_core, MLXSW_REG(mtpps), mtpps_pl); in mlxsw_sp1_ptp_phc_settime() [all …]
|
H A D | spectrum_trap.c | 1568 int mlxsw_sp_trap_init(struct mlxsw_core *mlxsw_core, in mlxsw_sp_trap_init() argument 1571 struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core); in mlxsw_sp_trap_init() 1586 err = mlxsw_core_trap_register(mlxsw_core, listener, trap_ctx); in mlxsw_sp_trap_init() 1594 void mlxsw_sp_trap_fini(struct mlxsw_core *mlxsw_core, in mlxsw_sp_trap_fini() argument 1597 struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core); in mlxsw_sp_trap_fini() 1611 mlxsw_core_trap_unregister(mlxsw_core, listener, trap_ctx); in mlxsw_sp_trap_fini() 1615 int mlxsw_sp_trap_action_set(struct mlxsw_core *mlxsw_core, in mlxsw_sp_trap_action_set() argument 1620 struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core); in mlxsw_sp_trap_action_set() 1652 err = mlxsw_core_trap_state_set(mlxsw_core, listener, enabled); in mlxsw_sp_trap_action_set() 1661 __mlxsw_sp_trap_group_init(struct mlxsw_core *mlxsw_core, in __mlxsw_sp_trap_group_init() argument [all …]
|
H A D | Makefile | 2 obj-$(CONFIG_MLXSW_CORE) += mlxsw_core.o 3 mlxsw_core-objs := core.o core_acl_flex_keys.o \ 6 mlxsw_core-$(CONFIG_MLXSW_CORE_HWMON) += core_hwmon.o 7 mlxsw_core-$(CONFIG_MLXSW_CORE_THERMAL) += core_thermal.o
|
H A D | spectrum_cnt.c | 242 int mlxsw_sp_counter_resources_register(struct mlxsw_core *mlxsw_core) in mlxsw_sp_counter_resources_register() argument 245 struct devlink *devlink = priv_to_devlink(mlxsw_core); in mlxsw_sp_counter_resources_register() 255 if (!MLXSW_CORE_RES_VALID(mlxsw_core, COUNTER_POOL_SIZE) || in mlxsw_sp_counter_resources_register() 256 !MLXSW_CORE_RES_VALID(mlxsw_core, COUNTER_BANK_SIZE)) in mlxsw_sp_counter_resources_register() 259 pool_size = MLXSW_CORE_RES_GET(mlxsw_core, COUNTER_POOL_SIZE); in mlxsw_sp_counter_resources_register() 260 bank_size = MLXSW_CORE_RES_GET(mlxsw_core, COUNTER_BANK_SIZE); in mlxsw_sp_counter_resources_register()
|
H A D | spectrum_policer.c | 82 struct mlxsw_core *core = family->mlxsw_sp->core; in mlxsw_sp_policer_single_rate_family_init() 404 int mlxsw_sp_policer_resources_register(struct mlxsw_core *mlxsw_core) in mlxsw_sp_policer_resources_register() argument 407 struct devlink *devlink = priv_to_devlink(mlxsw_core); in mlxsw_sp_policer_resources_register() 411 if (!MLXSW_CORE_RES_VALID(mlxsw_core, MAX_GLOBAL_POLICERS) || in mlxsw_sp_policer_resources_register() 412 !MLXSW_CORE_RES_VALID(mlxsw_core, MAX_CPU_POLICERS)) in mlxsw_sp_policer_resources_register() 415 global_policers = MLXSW_CORE_RES_GET(mlxsw_core, MAX_GLOBAL_POLICERS); in mlxsw_sp_policer_resources_register() 416 cpu_policers = MLXSW_CORE_RES_GET(mlxsw_core, MAX_CPU_POLICERS); in mlxsw_sp_policer_resources_register()
|
H A D | spectrum_cnt.h | 23 int mlxsw_sp_counter_resources_register(struct mlxsw_core *mlxsw_core);
|
H A D | spectrum_buffers.c | 288 static void mlxsw_sp_sb_pm_occ_query_cb(struct mlxsw_core *mlxsw_core, in mlxsw_sp_sb_pm_occ_query_cb() argument 1354 int mlxsw_sp_sb_pool_get(struct mlxsw_core *mlxsw_core, in mlxsw_sp_sb_pool_get() argument 1358 struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core); in mlxsw_sp_sb_pool_get() 1371 int mlxsw_sp_sb_pool_set(struct mlxsw_core *mlxsw_core, in mlxsw_sp_sb_pool_set() argument 1376 struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core); in mlxsw_sp_sb_pool_set() 1558 static void mlxsw_sp_sb_sr_occ_query_cb(struct mlxsw_core *mlxsw_core, in mlxsw_sp_sb_sr_occ_query_cb() argument 1562 struct mlxsw_sp *mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core); in mlxsw_sp_sb_sr_occ_query_cb() 1574 local_port < mlxsw_core_max_ports(mlxsw_core); local_port++) { in mlxsw_sp_sb_sr_occ_query_cb() 1593 local_port < mlxsw_core_max_ports(mlxsw_core); local_port++) { in mlxsw_sp_sb_sr_occ_query_cb() 1607 int mlxsw_sp_sb_occ_snapshot(struct mlxsw_core *mlxsw_core, in mlxsw_sp_sb_occ_snapshot() argument [all …]
|
H A D | spectrum1_kvdl.c | 385 int mlxsw_sp1_kvdl_resources_register(struct mlxsw_core *mlxsw_core) in mlxsw_sp1_kvdl_resources_register() argument 387 struct devlink *devlink = priv_to_devlink(mlxsw_core); in mlxsw_sp1_kvdl_resources_register() 392 kvdl_max_size = MLXSW_CORE_RES_GET(mlxsw_core, KVD_SIZE) - in mlxsw_sp1_kvdl_resources_register() 393 MLXSW_CORE_RES_GET(mlxsw_core, KVD_SINGLE_MIN_SIZE) - in mlxsw_sp1_kvdl_resources_register() 394 MLXSW_CORE_RES_GET(mlxsw_core, KVD_DOUBLE_MIN_SIZE); in mlxsw_sp1_kvdl_resources_register()
|
H A D | core_thermal.c | 118 struct mlxsw_core *core; 446 mlxsw_thermal_module_init(struct device *dev, struct mlxsw_core *core, in mlxsw_thermal_module_init() 477 mlxsw_thermal_modules_init(struct device *dev, struct mlxsw_core *core, in mlxsw_thermal_modules_init() 572 mlxsw_thermal_gearboxes_init(struct device *dev, struct mlxsw_core *core, in mlxsw_thermal_gearboxes_init() 636 mlxsw_thermal_got_active(struct mlxsw_core *mlxsw_core, u8 slot_index, in mlxsw_thermal_got_active() argument 674 mlxsw_thermal_got_inactive(struct mlxsw_core *mlxsw_core, u8 slot_index, in mlxsw_thermal_got_inactive() argument 693 int mlxsw_thermal_init(struct mlxsw_core *core, in mlxsw_thermal_init()
|
H A D | core_hwmon.c | 60 struct mlxsw_core *core; 788 mlxsw_hwmon_got_active(struct mlxsw_core *mlxsw_core, u8 slot_index, in mlxsw_hwmon_got_active() argument 836 mlxsw_hwmon_got_inactive(struct mlxsw_core *mlxsw_core, u8 slot_index, in mlxsw_hwmon_got_inactive() argument 856 int mlxsw_hwmon_init(struct mlxsw_core *mlxsw_core, in mlxsw_hwmon_init() argument 867 err = mlxsw_reg_query(mlxsw_core, MLXSW_REG(mgpir), mgpir_pl); in mlxsw_hwmon_init() 879 mlxsw_hwmon->core = mlxsw_core; in mlxsw_hwmon_init()
|
H A D | i2c.c | 90 struct mlxsw_core *core; 527 mlxsw_i2c_init(void *bus_priv, struct mlxsw_core *mlxsw_core, in mlxsw_i2c_init() argument 535 mlxsw_i2c->core = mlxsw_core; in mlxsw_i2c_init() 541 err = mlxsw_cmd_query_fw(mlxsw_core, mbox); in mlxsw_i2c_init() 552 err = mlxsw_core_resources_query(mlxsw_core, mbox, res); in mlxsw_i2c_init()
|
H A D | pci.c | 110 struct mlxsw_core *core; 1511 static int mlxsw_pci_init(void *bus_priv, struct mlxsw_core *mlxsw_core, in mlxsw_pci_init() argument 1521 mlxsw_pci->core = mlxsw_core; in mlxsw_pci_init() 1537 err = mlxsw_cmd_query_fw(mlxsw_core, mbox); in mlxsw_pci_init() 1598 err = mlxsw_core_resources_query(mlxsw_core, mbox, res); in mlxsw_pci_init() 1602 if (MLXSW_CORE_RES_VALID(mlxsw_core, CQE_V2) && in mlxsw_pci_init() 1603 MLXSW_CORE_RES_GET(mlxsw_core, CQE_V2)) in mlxsw_pci_init() 1605 else if (MLXSW_CORE_RES_VALID(mlxsw_core, CQE_V1) && in mlxsw_pci_init() 1606 MLXSW_CORE_RES_GET(mlxsw_core, CQE_V1)) in mlxsw_pci_init() 1608 else if ((MLXSW_CORE_RES_VALID(mlxsw_core, CQE_V0) && in mlxsw_pci_init() [all …]
|
H A D | spectrum_acl_tcam.c | 1494 struct mlxsw_core *mlxsw_core = devlink_priv(devlink); in mlxsw_sp_acl_tcam_region_rehash_intrvl_get() local 1498 mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core); in mlxsw_sp_acl_tcam_region_rehash_intrvl_get() 1509 struct mlxsw_core *mlxsw_core = devlink_priv(devlink); in mlxsw_sp_acl_tcam_region_rehash_intrvl_set() local 1518 mlxsw_sp = mlxsw_core_driver_priv(mlxsw_core); in mlxsw_sp_acl_tcam_region_rehash_intrvl_set()
|
H A D | spectrum_port_range.c | 163 struct mlxsw_core *core = mlxsw_sp->core; in mlxsw_sp_port_range_init()
|
H A D | Kconfig | 15 module will be called mlxsw_core.
|