From d31a995844c7c5f5cfd873151300c8df8b26e411 Mon Sep 17 00:00:00 2001 From: Baruch Even Date: Mon, 11 May 2015 22:38:31 +0300 Subject: [PATCH] Parse new power mode event Closes #5 --- mptparser.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/mptparser.c b/mptparser.c index 92eecb0..df09895 100644 --- a/mptparser.c +++ b/mptparser.c @@ -657,6 +657,46 @@ static void dump_sas_phy_counter(struct MPT2_IOCTL_EVENTS *event) evt->Reserved4); } +static const char *power_mode_init_to_text(uint8_t val) +{ + val &= MPI2_EVENT_PM_INIT_MASK; + + switch (val) { + case MPI2_EVENT_PM_INIT_UNAVAILABLE: return "INIT_UNAVAILABLE"; + case MPI2_EVENT_PM_INIT_HOST: return "INIT_HOST"; + case MPI2_EVENT_PM_INIT_IO_UNIT: return "INIT_IO_UNIT"; + case MPI2_EVENT_PM_INIT_PCIE_DPA: return "INIT_PCIE_DPA"; + } + + return "INIT_UNKNOWN"; +} + +static const char *power_mode_mode_to_text(uint8_t val) +{ + val &= MPI2_EVENT_PM_MODE_MASK; + + switch (val) { + case MPI2_EVENT_PM_MODE_UNAVAILABLE: return "MODE_UNAVAILABLE"; + case MPI2_EVENT_PM_MODE_UNKNOWN: return "MODE_UNKNOWN"; + case MPI2_EVENT_PM_MODE_FULL_POWER: return "MODE_FULL_POWER"; + case MPI2_EVENT_PM_MODE_REDUCED_POWER: return "MODE_REDUCED_POWER"; + case MPI2_EVENT_PM_MODE_STANDBY: return "MODE_STANDBY"; + } + + return "MODE_UNKNOWN_FALLOUT"; +} + +static void dump_power_performance_change(struct MPT2_IOCTL_EVENTS *event) +{ + MPI2_EVENT_DATA_POWER_PERF_CHANGE *evt = (void*)&event->data; + + my_syslog(LOG_INFO, "Power Performance Change: context=%u current_power_mode=%02X(%s %s) prev_power_mode=%02X(%s %s) reserved1=%04X", + event->context, + evt->CurrentPowerMode, power_mode_init_to_text(evt->CurrentPowerMode), power_mode_mode_to_text(evt->CurrentPowerMode), + evt->PreviousPowerMode, power_mode_init_to_text(evt->PreviousPowerMode), power_mode_mode_to_text(evt->PreviousPowerMode), + evt->Reserved1); +} + static void dump_event(struct MPT2_IOCTL_EVENTS *event) { switch (event->event) { @@ -756,6 +796,10 @@ static void dump_event(struct MPT2_IOCTL_EVENTS *event) dump_name_only("Host Message", event); break; + case MPI2_EVENT_POWER_PERFORMANCE_CHANGE: + dump_power_performance_change(event); + break; + default: dump_name_only("Unknown Event", event); break;