mirror of
https://github.com/ipmitool/ipmitool.git
synced 2025-05-10 18:47:22 +00:00
Improvements large packet command code
This commit is contained in:
parent
13bb060366
commit
94e47fb2c6
@ -69,6 +69,9 @@ static void ipmi_kontron_nextboot_help(void);
|
|||||||
static int ipmi_kontron_nextboot_set(struct ipmi_intf * intf,
|
static int ipmi_kontron_nextboot_set(struct ipmi_intf * intf,
|
||||||
int argc, char **argv);
|
int argc, char **argv);
|
||||||
|
|
||||||
|
static int ipmi_kontronoem_send_set_large_buffer(struct ipmi_intf * intf,
|
||||||
|
unsigned char channel,
|
||||||
|
unsigned char size);
|
||||||
|
|
||||||
int
|
int
|
||||||
ipmi_kontronoem_main(struct ipmi_intf * intf, int argc, char ** argv)
|
ipmi_kontronoem_main(struct ipmi_intf * intf, int argc, char ** argv)
|
||||||
@ -153,6 +156,67 @@ static void ipmi_kontron_help(void)
|
|||||||
|
|
||||||
|
|
||||||
int ipmi_kontronoem_set_large_buffer(struct ipmi_intf * intf, unsigned char size)
|
int ipmi_kontronoem_set_large_buffer(struct ipmi_intf * intf, unsigned char size)
|
||||||
|
{
|
||||||
|
uint8_t error_occurs = 0;
|
||||||
|
uint32_t prev_target_addr = intf->target_addr ;
|
||||||
|
|
||||||
|
if ( intf->target_addr > 0 && (intf->target_addr != intf->my_addr) )
|
||||||
|
{
|
||||||
|
intf->target_addr = intf->my_addr;
|
||||||
|
|
||||||
|
printf("Set local big buffer\r\n");
|
||||||
|
if(ipmi_kontronoem_send_set_large_buffer( intf, 0x0e, size ) == 0)
|
||||||
|
{
|
||||||
|
printf("Set local big buffer:success\r\n");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
error_occurs = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (error_occurs == 0)
|
||||||
|
{
|
||||||
|
if(ipmi_kontronoem_send_set_large_buffer( intf, 0x00, size ) == 0)
|
||||||
|
{
|
||||||
|
printf("IPMB was set\r\n");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Revert back the previous set large buffer */
|
||||||
|
error_occurs = 1;
|
||||||
|
ipmi_kontronoem_send_set_large_buffer( intf, 0x0e, 0 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Restore target address */
|
||||||
|
intf->target_addr = prev_target_addr;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (error_occurs == 0)
|
||||||
|
{
|
||||||
|
if(ipmi_kontronoem_send_set_large_buffer( intf, 0x0e, size ) == 0)
|
||||||
|
{
|
||||||
|
printf("Set remote big buffer\r\n");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( intf->target_addr > 0 && (intf->target_addr != intf->my_addr) )
|
||||||
|
{
|
||||||
|
/* Error occurs revert back the previous set large buffer*/
|
||||||
|
intf->target_addr = intf->my_addr;
|
||||||
|
|
||||||
|
ipmi_kontronoem_send_set_large_buffer( intf, 0x00, 0 );
|
||||||
|
ipmi_kontronoem_send_set_large_buffer( intf, 0x0e, 0 );
|
||||||
|
|
||||||
|
intf->target_addr = prev_target_addr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return error_occurs;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int ipmi_kontronoem_send_set_large_buffer(struct ipmi_intf * intf, unsigned char channel,unsigned char size)
|
||||||
{
|
{
|
||||||
struct ipmi_rs *rsp;
|
struct ipmi_rs *rsp;
|
||||||
struct ipmi_rq req;
|
struct ipmi_rq req;
|
||||||
@ -160,7 +224,7 @@ int ipmi_kontronoem_set_large_buffer(struct ipmi_intf * intf, unsigned char size
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
memset(msg_data, 0, sizeof(msg_data));
|
memset(msg_data, 0, sizeof(msg_data));
|
||||||
msg_data[0] = 0x0e; // Currently running interface
|
msg_data[0] = channel/*0x0e*/; // Currently running interface
|
||||||
msg_data[1] = size;
|
msg_data[1] = size;
|
||||||
|
|
||||||
memset(&req, 0, sizeof(req));
|
memset(&req, 0, sizeof(req));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user