mlxsw: pci: Permit toggling LAG mode
Add to struct mlxsw_config_profile a field lag_mode_prefer_sw for the driver to indicate that SW LAG mode should be configured if possible. Add to the PCI module code to set lag_mode as appropriate. Signed-off-by: Petr Machata <petrm@nvidia.com> Reviewed-by: Ido Schimmel <idosch@nvidia.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
b2e9b1fe8c
commit
daee7aaba8
@ -337,6 +337,7 @@ struct mlxsw_config_profile {
|
||||
u8 kvd_hash_single_parts;
|
||||
u8 kvd_hash_double_parts;
|
||||
u8 cqe_time_stamp_type;
|
||||
bool lag_mode_prefer_sw;
|
||||
struct mlxsw_swid_config swid_config[MLXSW_CONFIG_PROFILE_SWID_COUNT];
|
||||
};
|
||||
|
||||
|
@ -1314,7 +1314,16 @@ static int mlxsw_pci_config_profile(struct mlxsw_pci *mlxsw_pci, char *mbox,
|
||||
profile->cqe_time_stamp_type);
|
||||
}
|
||||
|
||||
mlxsw_pci->lag_mode = MLXSW_CMD_MBOX_CONFIG_PROFILE_LAG_MODE_FW;
|
||||
if (profile->lag_mode_prefer_sw && mlxsw_pci->lag_mode_support) {
|
||||
enum mlxsw_cmd_mbox_config_profile_lag_mode lag_mode =
|
||||
MLXSW_CMD_MBOX_CONFIG_PROFILE_LAG_MODE_SW;
|
||||
|
||||
mlxsw_cmd_mbox_config_profile_set_lag_mode_set(mbox, 1);
|
||||
mlxsw_cmd_mbox_config_profile_lag_mode_set(mbox, lag_mode);
|
||||
mlxsw_pci->lag_mode = lag_mode;
|
||||
} else {
|
||||
mlxsw_pci->lag_mode = MLXSW_CMD_MBOX_CONFIG_PROFILE_LAG_MODE_FW;
|
||||
}
|
||||
return mlxsw_cmd_config_profile_set(mlxsw_pci->core, mbox);
|
||||
}
|
||||
|
||||
@ -1624,9 +1633,8 @@ static int mlxsw_pci_init(void *bus_priv, struct mlxsw_core *mlxsw_core,
|
||||
if (err)
|
||||
goto err_config_profile;
|
||||
|
||||
/* Some resources depend on unified bridge model, which is configured
|
||||
* as part of config_profile. Query the resources again to get correct
|
||||
* values.
|
||||
/* Some resources depend on details of config_profile, such as unified
|
||||
* bridge model. Query the resources again to get correct values.
|
||||
*/
|
||||
err = mlxsw_core_resources_query(mlxsw_core, mbox, res);
|
||||
if (err)
|
||||
|
Loading…
Reference in New Issue
Block a user