This is the patch that contains Dell specific updates and bug fixes
Thanks,
Srinivas.G
Dell
diff -Naurp 01-ipmitool_opensource_fix/include/ipmitool/ipmi_delloem.h
02-ipmitool_dell_updates/include/ipmitool/ipmi_delloem.h
--- 01-ipmitool_opensource_fix/include/ipmitool/ipmi_delloem.h 2011-08-04
16:48:42.000000000 +0530
+++ 02-ipmitool_dell_updates/include/ipmitool/ipmi_delloem.h 2011-08-04
16:48:43.000000000 +0530
@@ -70,7 +70,12 @@ POSSIBILITY OF SUCH DAMAGE.
#define IPMI_DELL_IDRAC_VALIDATOR 0xDD
#define IPMI_DELL_POWER_CAP_STATUS 0xBA
+#define IPMI_DELL_AVG_POWER_CONSMP_HST 0xEB
+#define IPMI_DELL_PEAK_POWER_CONSMP_HST 0xEC
+#define SYSTEM_BOARD_SYSTEM_LEVEL_SENSOR_NUM 0x98
+#define IDRAC_11G 1
+#define IDRAC_12G 2
#define btuphr 0x01
#define watt 0x00
#define IPMI_DELL_POWER_CAP 0xEA
@@ -176,6 +181,8 @@ typedef struct _lcd_mode
#define IMC_IDRAC_11G_MODULAR (uint8_t) (0x0B)
#define IMC_UNUSED (uint8_t) (0x0C)
#define IMC_MASER_LITE_BMC (uint8_t) (0x0D)
+#define IMC_IDRAC_12G_MONOLITHIC (uint8_t) (0x10)
+#define IMC_IDRAC_12G_MODULAR (uint8_t) (0x11)
@@ -216,9 +223,17 @@ typedef struct
#define TOTAL_N0_NICS_INDEX (uint8_t)(0x1)
+
+// 12g supported
+#define SET_NIC_SELECTION_12G_CMD (uint8_t)(0x28)
+#define GET_NIC_SELECTION_12G_CMD (uint8_t)(0x29)
+
+// 11g supported
#define SET_NIC_SELECTION_CMD (uint8_t)(0x24)
#define GET_NIC_SELECTION_CMD (uint8_t)(0x25)
#define GET_ACTIVE_NIC_CMD (uint8_t)(0xc1)
+#define POWER_EFFICENCY_CMD (uint8_t)(0xc0)
+#define SERVER_POWER_CONSUMPTION_CMD (uint8_t)(0x8F)
#define POWER_SUPPLY_INFO (uint8_t)(0xb0)
#define IPMI_ENTITY_ID_POWER_SUPPLY (uint8_t)(0x0a)
@@ -229,6 +244,8 @@ typedef struct
#define CLEAR_PWRMGMT_INFO_CMD (uint8_t)(0x9D)
#define GET_PWR_HEADROOM_CMD (uint8_t)(0xBB)
#define GET_PWR_CONSUMPTION_CMD (uint8_t)(0xB3)
+#define GET_FRONT_PANEL_INFO_CMD (uint8_t)0xb5
+
typedef struct _ipmi_power_monitor
{
@@ -242,6 +259,23 @@ typedef struct _ipmi_power_monitor
} __attribute__ ((packed)) IPMI_POWER_MONITOR;
+#define MAX_POWER_FW_VERSION 8
+
+typedef struct _ipmi_power_supply_infoo
+{
+ /*No param_rev it is not a System Information Command */
+ uint16_t ratedWatts;
+ uint16_t ratedAmps;
+ uint16_t ratedVolts;
+ uint32_t vendorid;
+ uint8_t FrimwareVersion[MAX_POWER_FW_VERSION];
+ uint8_t Powersupplytype;
+ uint16_t ratedDCWatts;
+ uint16_t Resv;
+
+} __attribute__ ((packed)) IPMI_POWER_SUPPLY_INFO;
+
+
typedef struct ipmi_power_consumption_data
{
uint16_t actualpowerconsumption;
@@ -312,7 +346,7 @@ typedef struct _SensorReadingType
uint8_t sensorFlags;
uint16_t sensorState;
}SensorReadingType;
-
+uint16_t compareinputwattage(IPMI_POWER_SUPPLY_INFO* powersupplyinfo, uint16_t
inputwattage);
int ipmi_delloem_main(struct ipmi_intf * intf, int argc, char ** argv);
#endif /*IPMI_DELLOEM_H*/
diff -Naurp 01-ipmitool_opensource_fix/lib/ipmi_delloem.c
02-ipmitool_dell_updates/lib/ipmi_delloem.c
--- 01-ipmitool_opensource_fix/lib/ipmi_delloem.c 2011-08-04
16:48:42.000000000 +0530
+++ 02-ipmitool_dell_updates/lib/ipmi_delloem.c 2011-08-04 16:48:43.000000000
+0530
@@ -31,6 +31,8 @@ POSSIBILITY OF SUCH DAMAGE.
* <deepaganesh_paul...@dell.com>
*
* This code implements a dell OEM proprietary commands.
+* This Code is edited and Implemented the License feature for Delloem
+* Author Harsha S <harsha...@dell.com>
*/
#include <stdlib.h>
@@ -68,13 +70,43 @@ POSSIBILITY OF SUCH DAMAGE.
/*--------------time header-----------------*/
#include <time.h>
-#define DELL_OEM_NETFN (uint8_t)(0x30)
+#define IPMI_DELL_OEM_NETFN (uint8_t)(0x30)
#define GET_IDRAC_VIRTUAL_MAC (uint8_t)(0xC9)
+// 11g Support Macros
#define INVALID -1
#define SHARED 0
#define SHARED_WITH_FAILOVER_LOM2 1
#define DEDICATED 2
#define SHARED_WITH_FAILOVER_ALL_LOMS 3
+char AciveLOM_String [5] [10] =
{"dedicated","LOM1","LOM2","LOM3","LOM4" };
+#define INVALID -1
+
+// 11g Support Strings for nic selection
+char NIC_Selection_Mode_String [4] [50] = { "shared",
+
"shared with failover lom2",
+
"dedicated",
+
"shared with Failover all loms"
+
};
+
+// 11g Support Macros
+#define SHARED 0
+#define SHARED_WITH_FAILOVER_LOM2 1
+#define DEDICATED 2
+#define SHARED_WITH_FAILOVER_ALL_LOMS 3
+
+// 12g Support Strings for nic selection
+char NIC_Selection_Mode_String_12g[] [50] = {
+
"dedicated",
+
"shared with lom1",
+
"shared with lom2",
+
"shared with lom3",
+
"shared with lom4",
+
"shared with failover lom1",
+
"shared with failover lom2",
+
"shared with failover lom3",
+
"shared with failover lom4",
+
"shared with failover all loms"
+
};
static int current_arg =0;
uint8_t iDRAC_FLAG=0;
@@ -92,6 +124,7 @@ uint8_t PowercapstatusFlag=0;
static void usage(void);
+/* LCD Function prototypes */
static int ipmi_delloem_lcd_main (struct ipmi_intf * intf, int argc, char **
argv);
static int ipmi_lcd_get_platform_model_name (struct ipmi_intf * intf,char*
lcdstring,
uint8_t max_length,uint8_t field_type);
@@ -120,6 +153,7 @@ static int ipmi_lcd_configure (struct ip
int8_t line_number, char * text);
static void ipmi_lcd_usage(void);
+/* MAC Function prototypes */
static int ipmi_delloem_mac_main (struct ipmi_intf * intf, int argc, char **
argv);
static int make_int(const char *str, int *value);
static void InitEmbeddedNICMacAddressValues ();
@@ -130,6 +164,7 @@ static int ipmi_macinfo_11g (struct ipmi
static int ipmi_macinfo (struct ipmi_intf* intf, uint8_t NicNum);
static void ipmi_mac_usage(void);
+/* LAN Function prototypes */
static int ipmi_delloem_lan_main (struct ipmi_intf * intf, int argc, char **
argv);
static int IsLANSupported ();
static int get_nic_selection_mode (int current_arg, char ** argv);
@@ -137,7 +172,9 @@ static int ipmi_lan_set_nic_selection (s
static int ipmi_lan_get_nic_selection (struct ipmi_intf* intf);
static int ipmi_lan_get_active_nic (struct ipmi_intf* intf);
static void ipmi_lan_usage(void);
+static int ipmi_lan_set_nic_selection_12g (struct ipmi_intf* intf, uint8_t*
nic_selection);
+/* POwer monitor Function prototypes */
static int ipmi_delloem_powermonitor_main (struct ipmi_intf * intf, int argc,
char ** argv);
static void ipmi_time_to_str(time_t rawTime, char* strTime);
static int ipmi_get_sensor_reading(struct ipmi_intf *intf ,
@@ -299,7 +336,7 @@ static int ipmi_delloem_lcd_main (struct
}
else if (strncmp(argv[current_arg], "info\0", 5) == 0)
{
- if(iDRAC_FLAG==1)
+ if((iDRAC_FLAG==IDRAC_11G) || (iDRAC_FLAG==IDRAC_12G) )
rc = ipmi_lcd_get_info_wh(intf);
else
rc = ipmi_lcd_get_info(intf);
@@ -326,7 +363,9 @@ static int ipmi_delloem_lcd_main (struct
current_arg++;
if (argc <= current_arg) {usage();return -1;}
}
- if ((strncmp(argv[current_arg], "mode\0", 5) == 0)&&(iDRAC_FLAG==1))
+
+
+ if ((strncmp(argv[current_arg], "mode\0", 5) ==
0)&&((iDRAC_FLAG==IDRAC_11G) || (iDRAC_FLAG==IDRAC_12G) ))
{
current_arg++;
if (argc <= current_arg)
@@ -400,7 +439,7 @@ static int ipmi_delloem_lcd_main (struct
ipmi_lcd_usage();
}
}
- else if ((strncmp(argv[current_arg], "lcdqualifier\0", 13)== 0)
&&(iDRAC_FLAG==1) )
+ else if ((strncmp(argv[current_arg], "lcdqualifier\0", 13)== 0)
&&((iDRAC_FLAG==IDRAC_11G) || (iDRAC_FLAG==IDRAC_12G) ) )
{
current_arg++;
@@ -435,7 +474,7 @@ static int ipmi_delloem_lcd_main (struct
ipmi_lcd_usage();
}
}
- else if( (strncmp(argv[current_arg], "errordisplay\0", 13) ==
0)&&(iDRAC_FLAG==1))
+ else if( (strncmp(argv[current_arg], "errordisplay\0", 13) ==
0)&&((iDRAC_FLAG==IDRAC_11G) || (iDRAC_FLAG==IDRAC_12G) ))
{
current_arg++;
@@ -600,7 +639,7 @@ ipmi_lcd_get_platform_model_name (struct
for (ii = 0; ii < 4; ii++)
{
int bytes_to_copy;
-
+ memset (&req,0,sizeof(req));
req.msg.netfn = IPMI_NETFN_APP;
req.msg.lun = 0;
req.msg.cmd = IPMI_GET_SYS_INFO;
@@ -669,6 +708,7 @@ ipmi_idracvalidator_command (struct ipmi
struct ipmi_rq req = {0};
uint8_t data[4];
+ memset (&req,0,sizeof(req));
req.msg.netfn = IPMI_NETFN_APP;
req.msg.lun = 0;
req.msg.cmd = IPMI_GET_SYS_INFO;
@@ -687,10 +727,14 @@ ipmi_idracvalidator_command (struct ipmi
/*lprintf(LOG_ERR, " Error getting IMC type: %s",
val2str(rsp->ccode, completion_code_vals)); */
return -1;
+ }
+ if( (IMC_IDRAC_11G_MONOLITHIC == rsp->data[10]) ||
(IMC_IDRAC_11G_MODULAR ==rsp->data[10]) )
+ {
+ iDRAC_FLAG=IDRAC_11G;
}
- if( (0x0A == rsp->data[10]) || (0x0D ==rsp->data[10]) )
+ else if( (IMC_IDRAC_12G_MONOLITHIC == rsp->data[10]) ||
(IMC_IDRAC_12G_MODULAR==rsp->data[10]) )
{
- iDRAC_FLAG=1;
+ iDRAC_FLAG=IDRAC_12G;
}
else
{
@@ -1773,17 +1817,21 @@ ipmi_lcd_usage(void)
lprintf(LOG_NOTICE, " lcd set {none}|{default}|{custom <text>}");
lprintf(LOG_NOTICE, " Set LCD text displayed during non-fault
conditions");
}
- else if(iDRAC_FLAG==1)
+ else if( (iDRAC_FLAG==IDRAC_11G) || (iDRAC_FLAG==IDRAC_12G) )
{
lprintf(LOG_NOTICE, " lcd set {mode}|{lcdqualifier}|{errordisplay}");
+ lprintf(LOG_NOTICE, " Allows you to set the LCD mode and
user-defined string.");
lprintf(LOG_NOTICE, "");
lprintf(LOG_NOTICE, " lcd set mode
{none}|{modelname}|{ipv4address}|{macaddress}|");
lprintf(LOG_NOTICE, "
{systemname}|{servicetag}|{ipv6address}|{ambienttemp}");
lprintf(LOG_NOTICE, " {systemwatt }|{assettag}|{userdefined}<text>");
- lprintf(LOG_NOTICE, "");
+ lprintf(LOG_NOTICE, " Allows you to set the LCD display
mode to any of the preceding parameters");
+ lprintf(LOG_NOTICE, "");
lprintf(LOG_NOTICE, " lcd set lcdqualifier
{watt}|{btuphr}|{celsius}|{fahrenheit}");
+ lprintf(LOG_NOTICE, " Allows you to set the unit for the
system ambient temperature mode.");
lprintf(LOG_NOTICE, "");
lprintf(LOG_NOTICE, " lcd set errordisplay {sel}|{simple}");
+ lprintf(LOG_NOTICE, " Allows you to set the error
display.");
}
lprintf(LOG_NOTICE, "");
lprintf(LOG_NOTICE, " lcd info");
@@ -1928,7 +1976,7 @@ static int ipmi_macinfo_drac_idrac_virtu
input_length = 0;
msg_data[input_length++] = 1; /*Get*/
- req.msg.netfn = DELL_OEM_NETFN;
+ req.msg.netfn = IPMI_DELL_OEM_NETFN;
req.msg.lun = 0;
req.msg.cmd = GET_IDRAC_VIRTUAL_MAC;
req.msg.data = msg_data;
@@ -2026,6 +2074,10 @@ static int ipmi_macinfo_drac_idrac_mac(s
if (IMC_IDRAC_10G == IMC_Type)
printf ("\n\rDRAC MAC Address ");
+ else if ((IMC_IDRAC_11G_MODULAR == IMC_Type) ||
(IMC_IDRAC_11G_MONOLITHIC== IMC_Type))
+ printf ("\n\riDRAC6 MAC Address ");
+ else if ((IMC_IDRAC_12G_MODULAR == IMC_Type) ||
(IMC_IDRAC_12G_MONOLITHIC== IMC_Type))
+ printf ("\n\riDRAC7 MAC Address ");
else
printf ("\n\riDRAC6 MAC Address ");
@@ -2293,7 +2345,8 @@ static int ipmi_macinfo (struct ipmi_int
{
return ipmi_macinfo_10g (intf,NicNum);
}
- else if (IMC_IDRAC_11G_MODULAR == IMC_Type || IMC_IDRAC_11G_MONOLITHIC==
IMC_Type )
+ else if ((IMC_IDRAC_11G_MODULAR == IMC_Type ||
IMC_IDRAC_11G_MONOLITHIC== IMC_Type ) ||
+ (IMC_IDRAC_12G_MODULAR == IMC_Type ||
IMC_IDRAC_12G_MONOLITHIC== IMC_Type ) )
{
return ipmi_macinfo_11g (intf,NicNum);
}
@@ -2347,6 +2400,7 @@ static int ipmi_delloem_lan_main (struct
int rc = 0;
int nic_selection = 0;
+ char nic_set[2] = {0};
current_arg++;
if (argv[current_arg] == NULL)
{
@@ -2361,6 +2415,18 @@ static int ipmi_delloem_lan_main (struct
ipmi_lan_usage();
return -1;
}
+ if(iDRAC_FLAG == IDRAC_12G) {
+ nic_selection =
get_nic_selection_mode_12g(intf,current_arg,argv,nic_set);
+ if (INVALID == nic_selection)
+ {
+ ipmi_lan_usage();
+ return -1;
+ }
+
+ rc = ipmi_lan_set_nic_selection_12g(intf,nic_set);
+ }
+ else
+ {
nic_selection = get_nic_selection_mode(current_arg,argv);
@@ -2370,6 +2436,7 @@ static int ipmi_delloem_lan_main (struct
return -1;
}
rc = ipmi_lan_set_nic_selection(intf,nic_selection);
+ }
return 0;
}
else if (strncmp(argv[current_arg], "get\0", 4) == 0)
@@ -2405,16 +2472,135 @@ static int IsLANSupported ()
return 1;
}
-char NIC_Selection_Mode_String [4] [50] = { "shared",
-"shared with failover lom2",
-"dedicated",
-"shared with Failover all loms"
-};
+int get_nic_selection_mode_12g (struct ipmi_intf* intf,int current_arg, char
** argv, char *nic_set)
+{
+ int nic_selection_mode = 0;
+ int failover = 0;
-char AciveLOM_String [5] [10] = {"dedicated","LOM1","LOM2","LOM3","LOM4"
};
+ // First get the current settings.
+ struct ipmi_rs * rsp;
+ struct ipmi_rq req;
+ uint8_t msg_data[30];
+ uint8_t input_length=0;
+
+ input_length = 0;
+
+ req.msg.netfn = IPMI_DELL_OEM_NETFN;
+ req.msg.lun = 0;
+
+ req.msg.cmd = GET_NIC_SELECTION_12G_CMD;
+ req.msg.data = msg_data;
+ req.msg.data_len = input_length;
+
+ rsp = intf->sendrecv(intf, &req);
+ if (rsp == NULL)
+ {
+ lprintf(LOG_ERR, " Error in getting nic selection");
+ return -1;
+ }
+ else if (rsp->ccode > 0)
+ {
+ lprintf(LOG_ERR, " Error in getting nic selection (%s) \n",
+ val2str(rsp->ccode, completion_code_vals) );
+ return -1;
+ }
+
+ nic_set[0] = rsp->data[0];
+ nic_set[1] = rsp->data[1];
+
+
+ if (NULL!= argv[current_arg] && 0 == strncmp(argv[current_arg],
"dedicated\0", 10))
+ {
+ nic_set[0] = 1;
+ return 0;
+ }
+ if (NULL!= argv[current_arg] && 0 == strncmp(argv[current_arg],
"shared\0", 7))
+ {
+
+ }
+ else
+ return INVALID;
+
+ current_arg++;
+ if (NULL!= argv[current_arg] && 0 == strncmp(argv[current_arg],
"with\0", 5))
+ {
+ }
+ else
+ return INVALID;
+
+ current_arg++;
+ if (NULL!= argv[current_arg] && 0 == strncmp(argv[current_arg],
"failover\0", 9))
+ {
+ failover = 1;
+ }
+ if(failover)
+ current_arg++;
+ if (NULL!= argv[current_arg] && 0 == strncmp(argv[current_arg],
"lom1\0", 5))
+ {
+ if(failover) {
+ nic_set[1] = 2;
+ }
+ else {
+ nic_set[0] = 2;
+ }
+ return 0;
+ }
+ else if (NULL!= argv[current_arg] && 0 == strncmp(argv[current_arg],
"lom2\0", 5))
+ {
+ if(failover) {
+ nic_set[1] = 3;
+ }
+ else {
+ nic_set[0] = 3;
+ }
+ return 0;
+ }
+ else if (NULL!= argv[current_arg] && 0 == strncmp(argv[current_arg],
"lom3\0", 5))
+ {
+ if(failover) {
+ nic_set[1] = 4;
+ }
+ else {
+ nic_set[0] = 4;
+ }
+ return 0;
+ }
+ else if (NULL!= argv[current_arg] && 0 == strncmp(argv[current_arg],
"lom4\0", 5))
+ {
+ if(failover) {
+ nic_set[1] = 5;
+ }
+ else {
+ nic_set[0] = 5;
+ }
+ return 0;
+ }
+ else if (failover && NULL!= argv[current_arg] && 0 ==
strncmp(argv[current_arg], "none\0", 5))
+ {
+ if(failover) {
+ nic_set[1] = 0;
+ }
+ return 0;
+ }
+ else if (failover && NULL!= argv[current_arg] && 0 ==
strncmp(argv[current_arg], "all\0", 4))
+ {
+ }
+ else
+ return INVALID;
+
+ current_arg++;
+ if (failover && NULL!= argv[current_arg] && 0 ==
strncmp(argv[current_arg], "loms\0", 5))
+ {
+ nic_set[1] = 6;
+ return 0;
+ }
+
+ return INVALID;
+
+}
static int get_nic_selection_mode (int current_arg, char ** argv)
@@ -2461,7 +2647,44 @@ static int get_nic_selection_mode (int c
}
return INVALID;
+
+}
+
+
+static int ipmi_lan_set_nic_selection_12g (struct ipmi_intf* intf, uint8_t*
nic_selection)
+{
+ struct ipmi_rs * rsp;
+ struct ipmi_rq req;
+
+ uint8_t msg_data[30];
+ uint8_t input_length=0;
+ input_length = 0;
+
+ msg_data[input_length++] = nic_selection[0];
+ msg_data[input_length++] = nic_selection[1];
+
+ req.msg.netfn = IPMI_DELL_OEM_NETFN;
+ req.msg.lun = 0;
+ req.msg.cmd = SET_NIC_SELECTION_12G_CMD;
+ req.msg.data = msg_data;
+ req.msg.data_len = input_length;
+
+ rsp = intf->sendrecv(intf, &req);
+ if (rsp == NULL)
+ {
+ lprintf(LOG_ERR, " Error in setting nic selection");
+ return -1;
+ }
+ else if (rsp->ccode > 0)
+ {
+ lprintf(LOG_ERR, " Error in setting nic selection (%s) \n",
+ val2str(rsp->ccode, completion_code_vals) );
+ return -1;
+ }
+ printf("configured successfully");
+
+ return 0;
}
@@ -2478,7 +2701,7 @@ static int ipmi_lan_set_nic_selection (s
msg_data[input_length++] = nic_selection;
- req.msg.netfn = DELL_OEM_NETFN;
+ req.msg.netfn = IPMI_DELL_OEM_NETFN;
req.msg.lun = 0;
req.msg.cmd = SET_NIC_SELECTION_CMD;
req.msg.data = msg_data;
@@ -2504,6 +2727,7 @@ static int ipmi_lan_set_nic_selection (s
static int ipmi_lan_get_nic_selection (struct ipmi_intf* intf)
{
uint8_t nic_selection=-1;
+ uint8_t nic_selection_failover = 0;
struct ipmi_rs * rsp;
struct ipmi_rq req;
@@ -2514,8 +2738,11 @@ static int ipmi_lan_get_nic_selection (s
input_length = 0;
- req.msg.netfn = DELL_OEM_NETFN;
+ req.msg.netfn = IPMI_DELL_OEM_NETFN;
req.msg.lun = 0;
+ if(iDRAC_FLAG == IDRAC_12G)
+ req.msg.cmd = GET_NIC_SELECTION_12G_CMD;
+ else
req.msg.cmd = GET_NIC_SELECTION_CMD;
req.msg.data = msg_data;
req.msg.data_len = input_length;
@@ -2534,7 +2761,33 @@ static int ipmi_lan_get_nic_selection (s
}
nic_selection = rsp->data[0];
+ if(iDRAC_FLAG == IDRAC_12G)
+ {
+
+ nic_selection_failover = rsp->data[1];
+ if ((nic_selection < 6) && (nic_selection > 0) &&
(nic_selection_failover < 7))
+ {
+ if(nic_selection == 1) {
+ printf
("\n%s",NIC_Selection_Mode_String_12g[nic_selection-1]);
+ } else if(nic_selection) {
+ printf ("\nShared LOM :
%s",NIC_Selection_Mode_String_12g[nic_selection-1]);
+ if(nic_selection_failover == 0)
+ printf ("\nFailover LOM : None");
+ else if(nic_selection_failover >= 2 &&
nic_selection_failover <= 6)
+ printf ("\nFailover LOM :
%s",NIC_Selection_Mode_String_12g[nic_selection_failover + 3]);
+ }
+
+ }
+ else
+ {
+ lprintf(LOG_ERR, " Error Outof bond Value received (%d)
(%d) \n",nic_selection,nic_selection_failover);
+ return -1;
+ }
+ }
+ else
+ {
printf ("\n%s",NIC_Selection_Mode_String[nic_selection]);
+ }
return 0;
}
@@ -2556,7 +2809,7 @@ static int ipmi_lan_get_active_nic (stru
msg_data[input_length++] = 0; /*Reserved*/
msg_data[input_length++] = 0; /*Reserved*/
- req.msg.netfn = DELL_OEM_NETFN;
+ req.msg.netfn = IPMI_DELL_OEM_NETFN;
req.msg.lun = 0;
req.msg.cmd = GET_ACTIVE_NIC_CMD;
req.msg.data = msg_data;
@@ -2587,10 +2840,27 @@ ipmi_lan_usage(void)
{
lprintf(LOG_NOTICE, "");
lprintf(LOG_NOTICE, " lan set <Mode> ");
- lprintf(LOG_NOTICE, " sets the NIC Selection Mode (dedicated, shared,
shared with failover lom2, shared with Failover all loms).");
+ if(iDRAC_FLAG == IDRAC_12G) {
+ lprintf(LOG_NOTICE, " sets the NIC Selection Mode :");
+ lprintf(LOG_NOTICE, " dedicated, shared with lom1,
shared with lom2,shared with lom3,shared ");
+ lprintf(LOG_NOTICE, " with lom4,shared with failover
lom1,shared with failover lom2,shared ");
+ lprintf(LOG_NOTICE, " with failover lom3,shared with
failover lom4,shared with Failover all ");
+ lprintf(LOG_NOTICE, " loms, shared with Failover
None).");
+ } else {
+ lprintf(LOG_NOTICE, " sets the NIC Selection Mode (dedicated,
shared, shared with failover lom2, ");
+ lprintf(LOG_NOTICE, " shared with Failover
all loms).");
+ }
lprintf(LOG_NOTICE, "");
lprintf(LOG_NOTICE, " lan get ");
- lprintf(LOG_NOTICE, " returns the current NIC Selection Mode
(dedicated, shared, shared with failover lom2, shared with Failover all
loms).");
+ if(iDRAC_FLAG == IDRAC_12G) {
+ lprintf(LOG_NOTICE, " returns the current NIC Selection
Mode (dedicated, shared with lom1, shared ");
+ lprintf(LOG_NOTICE, " with lom2, shared with lom3,
shared with lom4,shared with failover lom1,");
+ lprintf(LOG_NOTICE, " shared with failover
lom2,shared with failover lom3,shared with failover ");
+ lprintf(LOG_NOTICE, " lom4,shared with Failover all
loms,shared with Failover None).");
+ }else {
+ lprintf(LOG_NOTICE, " returns the current NIC Selection
Mode (dedicated, shared, shared with failover");
+ lprintf(LOG_NOTICE, " lom2, shared
with Failover all loms).");
+ }
lprintf(LOG_NOTICE, "");
lprintf(LOG_NOTICE, " lan get active");
lprintf(LOG_NOTICE, " returns the current active NIC (dedicated,
LOM1, LOM2, LOM3, LOM4).");
@@ -2733,6 +3003,11 @@ static int ipmi_delloem_powermonitor_mai
ipmi_powermonitor_usage();
return -1;
}
+ if (strchr(argv[current_arg], '.'))
+ {
+ lprintf(LOG_ERR, " Cap value in Watts, Btu/hr or
percent should be whole number");
+ return -1;
+ }
make_int(argv[current_arg],&val);
current_arg++;
if (argv[current_arg] == NULL)
@@ -2872,7 +3147,7 @@ ipmi_get_power_capstatus_command (struct
struct ipmi_rq req = {0};
uint8_t data[2];
- req.msg.netfn = DELL_OEM_NETFN;
+ req.msg.netfn = IPMI_DELL_OEM_NETFN;
req.msg.lun = 0;
req.msg.cmd = IPMI_DELL_POWER_CAP_STATUS;
req.msg.data_len = 2;
@@ -2914,14 +3189,15 @@ ipmi_set_power_capstatus_command (struct
struct ipmi_rs * rsp = NULL;
struct ipmi_rq req = {0};
uint8_t data[2];
- ipmi_get_power_capstatus_command(intf);
+ if(ipmi_get_power_capstatus_command(intf) < 0)
+ return -1;
if (PowercapSetable_flag!=1)
{
lprintf(LOG_ERR, " Can not set powercap on this system");
return -1;
}
- req.msg.netfn = DELL_OEM_NETFN;
+ req.msg.netfn = IPMI_DELL_OEM_NETFN;
req.msg.lun = 0;
req.msg.cmd = IPMI_DELL_POWER_CAP_STATUS;
req.msg.data_len = 2;
@@ -3010,7 +3286,7 @@ static int ipmi_powermgmt(struct ipmi_in
bmctimeconv=*bmctimeconvval;
/* get powermanagement info*/
- req.msg.netfn = DELL_OEM_NETFN;
+ req.msg.netfn = IPMI_DELL_OEM_NETFN;
req.msg.lun = 0x0;
req.msg.cmd = GET_PWRMGMT_INFO_CMD;
req.msg.data = msg_data;
@@ -3117,7 +3393,7 @@ ipmi_powermgmt_clear(struct ipmi_intf* i
}
/* clear powermanagement info*/
- req.msg.netfn = DELL_OEM_NETFN;
+ req.msg.netfn = IPMI_DELL_OEM_NETFN;
req.msg.lun = 0;
req.msg.cmd = CLEAR_PWRMGMT_INFO_CMD;
req.msg.data = msg_data;
@@ -3143,6 +3419,7 @@ ipmi_powermgmt_clear(struct ipmi_intf* i
val2str(rsp->ccode, completion_code_vals));
return -1;
}
+ return 0;
}
@@ -3204,7 +3481,7 @@ static int ipmi_get_power_headroom_comma
uint64_t peakpowerheadroombtuphr;
uint64_t instantpowerhearoom;
- req.msg.netfn = DELL_OEM_NETFN;
+ req.msg.netfn = IPMI_DELL_OEM_NETFN;
req.msg.lun = 0;
req.msg.cmd = GET_PWR_HEADROOM_CMD;
req.msg.data_len = 0;
@@ -3234,14 +3511,14 @@ static int ipmi_get_power_headroom_comma
peakpowerheadroombtuphr=watt_to_btuphr_conversion(powerheadroom.peakheadroom);
instantpowerhearoom=
watt_to_btuphr_conversion(powerheadroom.instheadroom);
- printf ("System Instantaneous Headroom : %d
BTU/hr\n",instantpowerhearoom);
- printf ("System Peak Headroom : %d
BTU/hr\n",peakpowerheadroombtuphr);
- }
- else
- {
- printf ("System Instantaneous Headroom : %d
W\n",powerheadroom.instheadroom);
- printf ("System Peak Headroom : %d
W\n",powerheadroom.peakheadroom);
- }
+ printf ("System Instantaneous Headroom : %ld
BTU/hr\n",instantpowerhearoom);
+ printf ("System Peak Headroom : %ld
BTU/hr\n",peakpowerheadroombtuphr);
+ }
+ else
+ {
+ printf ("System Instantaneous Headroom : %ld
W\n",powerheadroom.instheadroom);
+ printf ("System Peak Headroom : %ld
W\n",powerheadroom.peakheadroom);
+ }
return 0;
}
@@ -3350,7 +3627,7 @@ static int ipmi_get_instan_power_consmpt
/*get instantaneous power consumption command*/
- req.msg.netfn = DELL_OEM_NETFN;
+ req.msg.netfn = IPMI_DELL_OEM_NETFN;
req.msg.lun = 0;
req.msg.cmd = GET_PWR_CONSUMPTION_CMD;
@@ -3733,35 +4010,35 @@ static int ipmi_print_power_consmpt_hist
printf ("Average Power Consumption ");
tempbtuphrconv=(avgpower.lastminutepower);
- printf ("%4d W ",tempbtuphrconv);
- tempbtuphrconv=(avgpower.lasthourpower);
- printf ("%4d W ",tempbtuphrconv);
- tempbtuphrconv=(avgpower.lastdaypower);
- printf ("%4d W ",tempbtuphrconv);
- tempbtuphrconv=(avgpower.lastweakpower);
- printf ("%4d W \n\r",tempbtuphrconv);
-
- printf ("Max Power Consumption ");
- tempbtuphrconv=(stPeakpower.lastminutepower);
- printf ("%4d W ",tempbtuphrconv);
- tempbtuphrconv=(stPeakpower.lasthourpower);
- printf ("%4d W ",tempbtuphrconv);
- tempbtuphrconv=(stPeakpower.lastdaypower);
- printf ("%4d W ",tempbtuphrconv);
- tempbtuphrconv=(stPeakpower.lastweakpower);
- printf ("%4d W \n\r",tempbtuphrconv);
-
- printf ("Min Power Consumption ");
- tempbtuphrconv=(stMinpower.lastminutepower);
- printf ("%4d W ",tempbtuphrconv);
- tempbtuphrconv=(stMinpower.lasthourpower);
- printf ("%4d W ",tempbtuphrconv);
- tempbtuphrconv=(stMinpower.lastdaypower);
- printf ("%4d W ",tempbtuphrconv);
- tempbtuphrconv=(stMinpower.lastweakpower);
- printf ("%4d W \n\r\n\r",tempbtuphrconv);
- }
-
+ printf ("%4ld W ",tempbtuphrconv);
+ tempbtuphrconv=(avgpower.lasthourpower);
+ printf ("%4ld W ",tempbtuphrconv);
+ tempbtuphrconv=(avgpower.lastdaypower);
+ printf ("%4ld W ",tempbtuphrconv);
+ tempbtuphrconv=(avgpower.lastweakpower);
+ printf ("%4ld W \n\r",tempbtuphrconv);
+
+ printf ("Max Power Consumption ");
+ tempbtuphrconv=(stPeakpower.lastminutepower);
+ printf ("%4ld W ",tempbtuphrconv);
+ tempbtuphrconv=(stPeakpower.lasthourpower);
+ printf ("%4ld W ",tempbtuphrconv);
+ tempbtuphrconv=(stPeakpower.lastdaypower);
+ printf ("%4ld W ",tempbtuphrconv);
+ tempbtuphrconv=(stPeakpower.lastweakpower);
+ printf ("%4ld W \n\r",tempbtuphrconv);
+
+ printf ("Min Power Consumption ");
+ tempbtuphrconv=(stMinpower.lastminutepower);
+ printf ("%4ld W ",tempbtuphrconv);
+ tempbtuphrconv=(stMinpower.lasthourpower);
+ printf ("%4ld W ",tempbtuphrconv);
+ tempbtuphrconv=(stMinpower.lastdaypower);
+ printf ("%4ld W ",tempbtuphrconv);
+ tempbtuphrconv=(stMinpower.lastweakpower);
+ printf ("%4ld W \n\r\n\r",tempbtuphrconv);
+ }
+
lastminutepeakpower=stPeakpower.lastminutepowertime;
lasthourpeakpower=stPeakpower.lasthourpowertime;
lastdaypeakpower=stPeakpower.lastdaypowertime;
@@ -3794,6 +4071,7 @@ static int ipmi_print_power_consmpt_hist
printf ("Last Week : %s",timestr);
}
+ return rc;
}
@@ -3893,6 +4171,7 @@ static int ipmi_print_power_cap(struct i
int rc;
IPMI_POWER_CAP ipmipowercap;
+ memset(&ipmipowercap,0,sizeof(ipmipowercap));
rc=ipmi_get_power_cap(intf,&ipmipowercap);
@@ -3900,16 +4179,16 @@ static int ipmi_print_power_cap(struct i
{
if (unit ==btuphr){
tempbtuphrconv=watt_to_btuphr_conversion(ipmipowercap.MaximumPowerConsmp);
- printf ("Maximum power: %d BTU/hr\n",tempbtuphrconv);
-
tempbtuphrconv=watt_to_btuphr_conversion(ipmipowercap.MinimumPowerConsmp);
- printf ("Minimum power: %d BTU/hr\n",tempbtuphrconv);
- tempbtuphrconv=watt_to_btuphr_conversion(ipmipowercap.PowerCap);
- printf ("Power cap : %d BTU/hr\n",tempbtuphrconv);
- }else{
-
- printf ("Maximum power: %d
Watt\n",ipmipowercap.MaximumPowerConsmp);
- printf ("Minimum power: %d
Watt\n",ipmipowercap.MinimumPowerConsmp);
- printf ("Power cap : %d Watt\n",ipmipowercap.PowerCap);
+ printf ("Maximum power: %ld BTU/hr\n",tempbtuphrconv);
+
tempbtuphrconv=watt_to_btuphr_conversion(ipmipowercap.MinimumPowerConsmp);
+ printf ("Minimum power: %ld BTU/hr\n",tempbtuphrconv);
+
tempbtuphrconv=watt_to_btuphr_conversion(ipmipowercap.PowerCap);
+ printf ("Power cap : %ld BTU/hr\n",tempbtuphrconv);
+ }else{
+
+ printf ("Maximum power: %ld
Watt\n",ipmipowercap.MaximumPowerConsmp);
+ printf ("Minimum power: %ld
Watt\n",ipmipowercap.MinimumPowerConsmp);
+ printf ("Power cap : %ld
Watt\n",ipmipowercap.PowerCap);
}
}
return rc;
@@ -3936,10 +4215,11 @@ static int ipmi_set_power_cap(struct ipm
uint64_t maxpowerbtuphr;
uint64_t maxpowerbtuphr1;
uint64_t minpowerbtuphr;
- int rc;
- IPMI_POWER_CAP ipmipowercap;
+ IPMI_POWER_CAP ipmipowercap;
+
+ if(ipmi_get_power_capstatus_command(intf) < 0)
+ return -1; // Adding the failed condition check
- ipmi_get_power_capstatus_command(intf);
if (PowercapSetable_flag!=1)
{
lprintf(LOG_ERR, " Can not set powercap on this system");
@@ -4051,7 +4331,7 @@ static int ipmi_set_power_cap(struct ipm
}
else if(unit ==percent)
{
- if((val <1)||(val>100))
+ if((val <0)||(val>100))
{
lprintf(LOG_ERR, " Cap value is out of boundary conditon it should
be between 0 - 100");
return -1;
@@ -4187,6 +4467,7 @@ static int getpowersupplyfruinfo(struct
memcpy(&header, rsp->data + 1, 8);
+ return 0;
}
@@ -4271,7 +4552,7 @@ CheckSetLEDSupport(struct ipmi_intf * in
uint8_t data[4];
SetLEDSupported = 0;
- req.msg.netfn = DELL_OEM_NETFN;
+ req.msg.netfn = IPMI_DELL_OEM_NETFN;
req.msg.lun = 0;
req.msg.cmd = 0xD5; /* Storage */
req.msg.data_len = 10;
@@ -4318,7 +4599,7 @@ ipmi_getdrivemap(struct ipmi_intf * intf
uint8_t data[8];
/* Get mapping of BDF to bay:slot */
- req.msg.netfn = DELL_OEM_NETFN;
+ req.msg.netfn = IPMI_DELL_OEM_NETFN;
req.msg.lun = 0;
req.msg.cmd = 0xD5;
req.msg.data_len = 8;
@@ -4378,7 +4659,7 @@ ipmi_setled_state (struct ipmi_intf * in
uint8_t data[20];
/* Issue Drive Status Update to bay:slot */
- req.msg.netfn = DELL_OEM_NETFN;
+ req.msg.netfn = IPMI_DELL_OEM_NETFN;
req.msg.lun = 0;
req.msg.cmd = 0xD5;
req.msg.data_len = 20;
------------------------------------------------------------------------------
Get a FREE DOWNLOAD! and learn more about uberSVN rich system,
user administration capabilities and model configuration. Take
the hassle out of deploying and managing Subversion and the
tools developers use with it.
http://p.sf.net/sfu/wandisco-dev2dev
_______________________________________________
Ipmitool-devel mailing list
Ipmitool-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ipmitool-devel