From 682cf99e80a070b6308a76acefabfe812b545123 Mon Sep 17 00:00:00 2001 From: "Oleksandr Shamray oleksandrs@mellanox.com" Date: Mon, 5 Jun 2017 13:07:19 +0000 Subject: [PATCH] add API for read min_fan_speed. change define MIN_LIMIT_*_FAN_RPM to api call --- .../onlp/builds/src/module/src/fani.c | 11 +++++++++++ .../onlp/builds/src/module/src/platform_lib.h | 5 ++--- .../onlp/builds/src/module/src/sysi.c | 7 +++++-- .../onlp/builds/src/module/src/fani.c | 11 +++++++++++ .../onlp/builds/src/module/src/ledi.c | 3 +++ .../onlp/builds/src/module/src/platform_lib.h | 3 --- .../onlp/builds/src/module/src/sysi.c | 7 +++++-- 7 files changed, 37 insertions(+), 10 deletions(-) diff --git a/packages/platforms/mellanox/x86-64/x86-64-mlnx-msn2410/onlp/builds/src/module/src/fani.c b/packages/platforms/mellanox/x86-64/x86-64-mlnx-msn2410/onlp/builds/src/module/src/fani.c index a1e23036..289a0ef1 100644 --- a/packages/platforms/mellanox/x86-64/x86-64-mlnx-msn2410/onlp/builds/src/module/src/fani.c +++ b/packages/platforms/mellanox/x86-64/x86-64-mlnx-msn2410/onlp/builds/src/module/src/fani.c @@ -534,3 +534,14 @@ onlp_fani_ioctl(onlp_oid_t id, va_list vargs) return ONLP_STATUS_E_UNSUPPORTED; } +int +onlp_fani_get_min_rpm(int id) +{ + int len = 0, nbytes = 10; + char r_data[10] = {0}; + char fullpath[65] = {0}; + + snprintf(fullpath, sizeof(fullpath), "%s%s", PREFIX_PATH, fan_path[id].min); + OPEN_READ_FILE(fullpath, r_data, nbytes, len); + return atoi(r_data); +} diff --git a/packages/platforms/mellanox/x86-64/x86-64-mlnx-msn2410/onlp/builds/src/module/src/platform_lib.h b/packages/platforms/mellanox/x86-64/x86-64-mlnx-msn2410/onlp/builds/src/module/src/platform_lib.h index 5e3060dc..3992e357 100644 --- a/packages/platforms/mellanox/x86-64/x86-64-mlnx-msn2410/onlp/builds/src/module/src/platform_lib.h +++ b/packages/platforms/mellanox/x86-64/x86-64-mlnx-msn2410/onlp/builds/src/module/src/platform_lib.h @@ -42,9 +42,6 @@ #define PSU_POWER_PREFIX "/bsp/power/psu%d_%s" #define IDPROM_PATH "/bsp/eeprom/%s%d_info" -#define MIN_LIMIT_FRONT_FAN_RPM 21000 -#define MIN_LIMIT_REAR_FAN_RPM 21000 - /* LED related data */ enum onlp_led_id @@ -69,4 +66,6 @@ psu_type_t get_psu_type(int id, char* modelname, int modelname_len); int psu_read_eeprom(int psu_index, onlp_psu_info_t* psu_info, onlp_fan_info_t* fan_info); +int onlp_fani_get_min_rpm(int id); + #endif /* __PLATFORM_LIB_H__ */ diff --git a/packages/platforms/mellanox/x86-64/x86-64-mlnx-msn2410/onlp/builds/src/module/src/sysi.c b/packages/platforms/mellanox/x86-64/x86-64-mlnx-msn2410/onlp/builds/src/module/src/sysi.c index 09975074..801b4914 100644 --- a/packages/platforms/mellanox/x86-64/x86-64-mlnx-msn2410/onlp/builds/src/module/src/sysi.c +++ b/packages/platforms/mellanox/x86-64/x86-64-mlnx-msn2410/onlp/builds/src/module/src/sysi.c @@ -138,6 +138,7 @@ onlp_sysi_platform_manage_leds(void) { int fan_number; onlp_led_mode_t mode; + int min_fan_speed; enum onlp_led_id fan_led_id[4] = { LED_FAN1, LED_FAN2, LED_FAN3, LED_FAN4 }; /* after reboot, status LED should blink green, SW set to solid green */ @@ -168,7 +169,8 @@ onlp_sysi_platform_manage_leds(void) } else { - if( fi.rpm < MIN_LIMIT_FRONT_FAN_RPM ) + min_fan_speed = onlp_fani_get_min_rpm(fan_number); + if( fi.rpm < min_fan_speed) { mode = ONLP_LED_MODE_RED; } @@ -186,7 +188,8 @@ onlp_sysi_platform_manage_leds(void) } else { - if( fi.rpm < MIN_LIMIT_REAR_FAN_RPM ) + min_fan_speed = onlp_fani_get_min_rpm(fan_number+1); + if( fi.rpm < min_fan_speed) { mode = ONLP_LED_MODE_RED; } diff --git a/packages/platforms/mellanox/x86-64/x86-64-mlnx-msn2700/onlp/builds/src/module/src/fani.c b/packages/platforms/mellanox/x86-64/x86-64-mlnx-msn2700/onlp/builds/src/module/src/fani.c index c5840918..e15f7184 100644 --- a/packages/platforms/mellanox/x86-64/x86-64-mlnx-msn2700/onlp/builds/src/module/src/fani.c +++ b/packages/platforms/mellanox/x86-64/x86-64-mlnx-msn2700/onlp/builds/src/module/src/fani.c @@ -533,3 +533,14 @@ onlp_fani_ioctl(onlp_oid_t id, va_list vargs) return ONLP_STATUS_E_UNSUPPORTED; } +int +onlp_fani_get_min_rpm(int id) +{ + int len = 0, nbytes = 10; + char r_data[10] = {0}; + char fullpath[65] = {0}; + + snprintf(fullpath, sizeof(fullpath), "%s%s", PREFIX_PATH, fan_path[id].min); + OPEN_READ_FILE(fullpath, r_data, nbytes, len); + return atoi(r_data); +} diff --git a/packages/platforms/mellanox/x86-64/x86-64-mlnx-msn2700/onlp/builds/src/module/src/ledi.c b/packages/platforms/mellanox/x86-64/x86-64-mlnx-msn2700/onlp/builds/src/module/src/ledi.c index 38e6fa52..dc96956a 100644 --- a/packages/platforms/mellanox/x86-64/x86-64-mlnx-msn2700/onlp/builds/src/module/src/ledi.c +++ b/packages/platforms/mellanox/x86-64/x86-64-mlnx-msn2700/onlp/builds/src/module/src/ledi.c @@ -50,6 +50,9 @@ } \ } while(0) +/* LED related data + */ + typedef struct led_light_mode_map { enum onlp_led_id id; char* driver_led_mode; diff --git a/packages/platforms/mellanox/x86-64/x86-64-mlnx-msn2700/onlp/builds/src/module/src/platform_lib.h b/packages/platforms/mellanox/x86-64/x86-64-mlnx-msn2700/onlp/builds/src/module/src/platform_lib.h index 43444b14..6aa8d164 100644 --- a/packages/platforms/mellanox/x86-64/x86-64-mlnx-msn2700/onlp/builds/src/module/src/platform_lib.h +++ b/packages/platforms/mellanox/x86-64/x86-64-mlnx-msn2700/onlp/builds/src/module/src/platform_lib.h @@ -44,9 +44,6 @@ #define PSU_POWER_PREFIX "/bsp/power/psu%d_%s" #define IDPROM_PATH "/bsp/eeprom/%s%d_info" -#define MIN_LIMIT_FRONT_FAN_RPM 21000 -#define MIN_LIMIT_REAR_FAN_RPM 21000 - /* LED related data */ enum onlp_led_id diff --git a/packages/platforms/mellanox/x86-64/x86-64-mlnx-msn2700/onlp/builds/src/module/src/sysi.c b/packages/platforms/mellanox/x86-64/x86-64-mlnx-msn2700/onlp/builds/src/module/src/sysi.c index 97407c63..a952b4de 100644 --- a/packages/platforms/mellanox/x86-64/x86-64-mlnx-msn2700/onlp/builds/src/module/src/sysi.c +++ b/packages/platforms/mellanox/x86-64/x86-64-mlnx-msn2700/onlp/builds/src/module/src/sysi.c @@ -139,6 +139,7 @@ onlp_sysi_platform_manage_leds(void) { int fan_number; onlp_led_mode_t mode; + int min_fan_speed; enum onlp_led_id fan_led_id[4] = { LED_FAN1, LED_FAN2, LED_FAN3, LED_FAN4 }; /* after reboot, status LED should blink green, SW set to solid green */ @@ -169,7 +170,8 @@ onlp_sysi_platform_manage_leds(void) } else { - if( fi.rpm < MIN_LIMIT_FRONT_FAN_RPM ) + min_fan_speed = onlp_fani_get_min_rpm(fan_number); + if( fi.rpm < min_fan_speed) { mode = ONLP_LED_MODE_RED; } @@ -187,7 +189,8 @@ onlp_sysi_platform_manage_leds(void) } else { - if( fi.rpm < MIN_LIMIT_REAR_FAN_RPM ) + min_fan_speed = onlp_fani_get_min_rpm(fan_number+1); + if( fi.rpm < min_fan_speed) { mode = ONLP_LED_MODE_RED; }