Commit a3c39230 authored by David S. Miller's avatar David S. Miller
Browse files

Merge branch 'mlxsw-misc-updates'



Ido Schimmel says:

====================
mlxsw: Misc updates

This patch set contains miscellaneous updates for mlxsw.

Patches #1-#2 reword an extack message to make it clearer and fix a
comment.

Patch #3 bumps the minimum firmware version enforced by mlxsw. This is
needed for two upcoming features: Resilient hashing and per-flow
sampling.

Patches #4-#6 improve the information reported via devlink-health for
'fw_fatal' events.
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 13fdb940 4734a750
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -1728,7 +1728,7 @@ static int mlxsw_core_health_fw_fatal_dump(struct devlink_health_reporter *repor
		return err;

	event_id = mlxsw_reg_mfde_event_id_get(mfde_pl);
	err = devlink_fmsg_u8_pair_put(fmsg, "id", event_id);
	err = devlink_fmsg_u32_pair_put(fmsg, "id", event_id);
	if (err)
		return err;
	switch (event_id) {
@@ -1806,6 +1806,10 @@ static int mlxsw_core_health_fw_fatal_dump(struct devlink_health_reporter *repor
		err = devlink_fmsg_u8_pair_put(fmsg, "log_irisc_id", val);
		if (err)
			return err;
		val = mlxsw_reg_mfde_log_ip_get(mfde_pl);
		err = devlink_fmsg_u64_pair_put(fmsg, "log_ip", val);
		if (err)
			return err;
	} else if (event_id == MLXSW_REG_MFDE_EVENT_ID_KVD_IM_STOP) {
		val = mlxsw_reg_mfde_pipes_mask_get(mfde_pl);
		err = devlink_fmsg_u32_pair_put(fmsg, "pipes_mask", val);
+10 −3
Original line number Diff line number Diff line
@@ -5637,7 +5637,7 @@ static inline void mlxsw_reg_pspa_pack(char *payload, u8 swid, u8 local_port)

MLXSW_REG_DEFINE(pmaos, MLXSW_REG_PMAOS_ID, MLXSW_REG_PMAOS_LEN);

/* reg_slot_index
/* reg_pmaos_slot_index
 * Slot index.
 * Access: Index
 */
@@ -10919,7 +10919,7 @@ MLXSW_REG_DEFINE(mfde, MLXSW_REG_MFDE_ID, MLXSW_REG_MFDE_LEN);
 * Which irisc triggered the event
 * Access: RO
 */
MLXSW_ITEM32(reg, mfde, irisc_id, 0x00, 8, 4);
MLXSW_ITEM32(reg, mfde, irisc_id, 0x00, 24, 8);

enum mlxsw_reg_mfde_event_id {
	MLXSW_REG_MFDE_EVENT_ID_CRSPACE_TO = 1,
@@ -10930,7 +10930,7 @@ enum mlxsw_reg_mfde_event_id {
/* reg_mfde_event_id
 * Access: RO
 */
MLXSW_ITEM32(reg, mfde, event_id, 0x00, 0, 8);
MLXSW_ITEM32(reg, mfde, event_id, 0x00, 0, 16);

enum mlxsw_reg_mfde_method {
	MLXSW_REG_MFDE_METHOD_QUERY,
@@ -10979,6 +10979,13 @@ MLXSW_ITEM32(reg, mfde, log_address, 0x10, 0, 32);
 */
MLXSW_ITEM32(reg, mfde, log_id, 0x14, 0, 4);

/* reg_mfde_log_ip
 * IP (instruction pointer) that triggered the timeout.
 * Valid in case event_id == MLXSW_REG_MFDE_EVENT_ID_CRSPACE_TO
 * Access: RO
 */
MLXSW_ITEM64(reg, mfde, log_ip, 0x18, 0, 64);

/* reg_mfde_pipes_mask
 * Bit per kvh pipe.
 * Access: RO
+4 −4
Original line number Diff line number Diff line
@@ -45,7 +45,7 @@

#define MLXSW_SP1_FWREV_MAJOR 13
#define MLXSW_SP1_FWREV_MINOR 2008
#define MLXSW_SP1_FWREV_SUBMINOR 2018
#define MLXSW_SP1_FWREV_SUBMINOR 2406
#define MLXSW_SP1_FWREV_CAN_RESET_MINOR 1702

static const struct mlxsw_fw_rev mlxsw_sp1_fw_rev = {
@@ -62,7 +62,7 @@ static const struct mlxsw_fw_rev mlxsw_sp1_fw_rev = {

#define MLXSW_SP2_FWREV_MAJOR 29
#define MLXSW_SP2_FWREV_MINOR 2008
#define MLXSW_SP2_FWREV_SUBMINOR 2018
#define MLXSW_SP2_FWREV_SUBMINOR 2406

static const struct mlxsw_fw_rev mlxsw_sp2_fw_rev = {
	.major = MLXSW_SP2_FWREV_MAJOR,
@@ -77,7 +77,7 @@ static const struct mlxsw_fw_rev mlxsw_sp2_fw_rev = {

#define MLXSW_SP3_FWREV_MAJOR 30
#define MLXSW_SP3_FWREV_MINOR 2008
#define MLXSW_SP3_FWREV_SUBMINOR 2018
#define MLXSW_SP3_FWREV_SUBMINOR 2406

static const struct mlxsw_fw_rev mlxsw_sp3_fw_rev = {
	.major = MLXSW_SP3_FWREV_MAJOR,
@@ -4283,7 +4283,7 @@ static int mlxsw_sp_netdevice_bridge_event(struct net_device *br_dev,
		if (br_vlan_enabled(br_dev)) {
			br_vlan_get_proto(br_dev, &proto);
			if (proto == ETH_P_8021AD) {
				NL_SET_ERR_MSG_MOD(extack, "Uppers are not supported on top of an 802.1ad bridge");
				NL_SET_ERR_MSG_MOD(extack, "Upper devices are not supported on top of an 802.1ad bridge");
				return -EOPNOTSUPP;
			}
		}