151
154
printf("Kontron Commands: setsn setmfgdate nextboot\n");
158
int ipmi_kontronoem_set_large_buffer(struct ipmi_intf * intf, unsigned char size)
160
uint8_t error_occurs = 0;
161
uint32_t prev_target_addr = intf->target_addr ;
163
if ( intf->target_addr > 0 && (intf->target_addr != intf->my_addr) )
165
intf->target_addr = intf->my_addr;
167
printf("Set local big buffer\n");
168
if(ipmi_kontronoem_send_set_large_buffer( intf, 0x0e, size ) == 0)
170
printf("Set local big buffer:success\n");
177
if (error_occurs == 0)
179
if(ipmi_kontronoem_send_set_large_buffer( intf, 0x00, size ) == 0)
181
printf("IPMB was set\n");
185
/* Revert back the previous set large buffer */
187
ipmi_kontronoem_send_set_large_buffer( intf, 0x0e, 0 );
191
/* Restore target address */
192
intf->target_addr = prev_target_addr;
195
if (error_occurs == 0)
197
if(ipmi_kontronoem_send_set_large_buffer( intf, 0x0e, size ) == 0)
199
//printf("Set remote big buffer\n");
203
if ( intf->target_addr > 0 && (intf->target_addr != intf->my_addr) )
205
/* Error occurs revert back the previous set large buffer*/
206
intf->target_addr = intf->my_addr;
208
//ipmi_kontronoem_send_set_large_buffer( intf, 0x00, 0 );
209
ipmi_kontronoem_send_set_large_buffer( intf, 0x0e, 0 );
211
intf->target_addr = prev_target_addr;
219
int ipmi_kontronoem_send_set_large_buffer(struct ipmi_intf * intf, unsigned char channel,unsigned char size)
226
memset(msg_data, 0, sizeof(msg_data));
227
msg_data[0] = channel/*0x0e*/; // Currently running interface
230
memset(&req, 0, sizeof(req));
231
req.msg.netfn = 0x3E; /* OEM NetFn */
232
req.msg.cmd = 0x82; /* Set Channel Buffer Length - OEM */
233
req.msg.data = msg_data;
234
req.msg.data_len = 2;
238
rsp = intf->sendrecv(intf, &req);
241
printf("Cannot send large buffer command\n");
246
printf("Invalid length for the selected interface (%s) %d\n",
247
val2str(rsp->ccode, completion_code_vals), rsp->ccode);
154
254
/* ipmi_fru_set_serial_number - Set the Serial Number in FRU
156
256
* @intf: ipmi interface