ID: 46 - ipmi_fwum needs some re-work

Finish off formatting, remove useless comments

Commit finishes off formatting changes and removes useless, out-of-date,
comments.
This commit is contained in:
Zdenek Styblik 2013-10-26 19:18:01 +00:00
parent 5bf68a4769
commit 24923222f6

View File

@ -33,7 +33,6 @@
* EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*/ */
#include <string.h> #include <string.h>
#include <math.h> #include <math.h>
#include <time.h> #include <time.h>
@ -46,20 +45,9 @@
#include <ipmitool/ipmi_intf.h> #include <ipmitool/ipmi_intf.h>
#include <ipmitool/ipmi_mc.h> #include <ipmitool/ipmi_mc.h>
/******************************************************************************
* HISTORY
* ===========================================================================
* 2007-01-11 [FI]
* - Incremented to version 1.3
* - Added lan packet size reduction mechanism to workaround fact
* that lan iface will not return C7 on excessive length
*
*****************************************************************************/
#define VERSION_MAJ 1 #define VERSION_MAJ 1
#define VERSION_MIN 3 #define VERSION_MIN 3
typedef enum eKFWUM_Task typedef enum eKFWUM_Task
{ {
KFWUM_TASK_INFO, KFWUM_TASK_INFO,
@ -112,9 +100,10 @@ typedef struct sKFWUM_InFirmwareInfo
unsigned short checksum; unsigned short checksum;
unsigned short sumToRemoveFromChecksum; unsigned short sumToRemoveFromChecksum;
/* Since the checksum is added in the bin /* Since the checksum is added in the bin
after the checksum is calculated, we * after the checksum is calculated, we
need to remove the each byte value. This * need to remove the each byte value. This
byte will contain the addition of both bytes*/ * byte will contain the addition of both bytes
*/
tKFWUM_BoardList boardId; tKFWUM_BoardList boardId;
unsigned char deviceId; unsigned char deviceId;
unsigned char tableVers; unsigned char tableVers;
@ -133,11 +122,15 @@ typedef struct sKFWUM_SaveFirmwareInfo
unsigned char overheadSize; unsigned char overheadSize;
} tKFWUM_SaveFirmwareInfo; } tKFWUM_SaveFirmwareInfo;
#define KFWUM_SMALL_BUFFER 32 /* Minimum size (IPMB/IOL/old protocol) */ /* Minimum size (IPMB/IOL/old protocol) */
#define KFWUM_BIG_BUFFER 32 /* Maximum size on KCS interface */ #define KFWUM_SMALL_BUFFER 32
/* Maximum size on KCS interface */
#define KFWUM_BIG_BUFFER 32
#define KFWUM_OLD_CMD_OVERHEAD 6 /*3 address + 1 size + 1 checksum + 1 command*/ /* 3 address + 1 size + 1 checksum + 1 command */
#define KFWUM_NEW_CMD_OVERHEAD 4 /*1 sequence+ 1 size + 1 checksum + 1 command*/ #define KFWUM_OLD_CMD_OVERHEAD 6
/* 1 sequence + 1 size + 1 checksum + 1 command */
#define KFWUM_NEW_CMD_OVERHEAD 4
#define KFWUM_PAGE_SIZE 256 #define KFWUM_PAGE_SIZE 256
extern int verbose; extern int verbose;
@ -155,8 +148,6 @@ void KfwumShowProgress(const char *task, unsigned long current,
unsigned long total); unsigned long total);
static unsigned short KfwumCalculateChecksumPadding(unsigned char *pBuffer, static unsigned short KfwumCalculateChecksumPadding(unsigned char *pBuffer,
unsigned long totalSize); unsigned long totalSize);
static tKFWUM_Status KfwumGetInfo(struct ipmi_intf *intf, unsigned char output, static tKFWUM_Status KfwumGetInfo(struct ipmi_intf *intf, unsigned char output,
unsigned char *pNumBank); unsigned char *pNumBank);
static tKFWUM_Status KfwumGetDeviceInfo(struct ipmi_intf *intf, static tKFWUM_Status KfwumGetDeviceInfo(struct ipmi_intf *intf,
@ -173,19 +164,15 @@ static tKFWUM_Status KfwumFinishFirmwareImage(struct ipmi_intf * intf,
static tKFWUM_Status KfwumUploadFirmware(struct ipmi_intf *intf, static tKFWUM_Status KfwumUploadFirmware(struct ipmi_intf *intf,
unsigned char *pBuffer, unsigned long totalSize); unsigned char *pBuffer, unsigned long totalSize);
static tKFWUM_Status KfwumStartFirmwareUpgrade(struct ipmi_intf *intf); static tKFWUM_Status KfwumStartFirmwareUpgrade(struct ipmi_intf *intf);
static tKFWUM_Status KfwumGetInfoFromFirmware(unsigned char *pBuf, static tKFWUM_Status KfwumGetInfoFromFirmware(unsigned char *pBuf,
unsigned long bufSize, tKFWUM_InFirmwareInfo *pInfo); unsigned long bufSize, tKFWUM_InFirmwareInfo *pInfo);
static void KfwumFixTableVersionForOldFirmware(tKFWUM_InFirmwareInfo *pInfo); static void KfwumFixTableVersionForOldFirmware(tKFWUM_InFirmwareInfo *pInfo);
static tKFWUM_Status KfwumGetTraceLog(struct ipmi_intf *intf); static tKFWUM_Status KfwumGetTraceLog(struct ipmi_intf *intf);
tKFWUM_Status ipmi_kfwum_checkfwcompat(tKFWUM_BoardInfo boardInfo, tKFWUM_Status ipmi_kfwum_checkfwcompat(tKFWUM_BoardInfo boardInfo,
tKFWUM_InFirmwareInfo firmInfo); tKFWUM_InFirmwareInfo firmInfo);
void printf_kfwum_info(tKFWUM_BoardInfo boardInfo, void printf_kfwum_info(tKFWUM_BoardInfo boardInfo,
tKFWUM_InFirmwareInfo firmInfo); tKFWUM_InFirmwareInfo firmInfo);
/* ipmi_fwum_main - entry point for this ipmitool mode /* ipmi_fwum_main - entry point for this ipmitool mode
* *
* @intf: ipmi interface * @intf: ipmi interface
@ -195,7 +182,8 @@ void printf_kfwum_info(tKFWUM_BoardInfo boardInfo,
* returns 0 on success * returns 0 on success
* returns -1 on error * returns -1 on error
*/ */
int ipmi_fwum_main(struct ipmi_intf * intf, int argc, char ** argv) int
ipmi_fwum_main(struct ipmi_intf *intf, int argc, char **argv)
{ {
int rc = 0; int rc = 0;
printf("FWUM extension Version %d.%d\n", VERSION_MAJ, VERSION_MIN); printf("FWUM extension Version %d.%d\n", VERSION_MAJ, VERSION_MIN);
@ -252,17 +240,14 @@ int ipmi_fwum_main(struct ipmi_intf * intf, int argc, char ** argv)
return rc; return rc;
} }
void
void printf_kfwum_help(void) printf_kfwum_help(void)
{ {
lprintf(LOG_NOTICE, lprintf(LOG_NOTICE,
"KFWUM Commands: info status download upgrade rollback tracelog"); "KFWUM Commands: info status download upgrade rollback tracelog");
} }
/* private definitions and macros */
/****************************************/
/** private definitions and macros **/
/****************************************/
typedef enum eFWUM_CmdId typedef enum eFWUM_CmdId
{ {
KFWUM_CMD_ID_GET_FIRMWARE_INFO = 0, KFWUM_CMD_ID_GET_FIRMWARE_INFO = 0,
@ -282,36 +267,15 @@ typedef enum eFWUM_CmdId
KFWUM_CMD_ID_EXTENDED_CMD = 0xC0 KFWUM_CMD_ID_EXTENDED_CMD = 0xC0
} tKFWUM_CmdId; } tKFWUM_CmdId;
/* KfwumMain - function implements upload of the firmware data received as
* parameters
/****************************************/
/** global/static variables definition **/
/****************************************/
/****************************************/
/** functions definition **/
/****************************************/
/*******************************************************************************
* *
* Function Name: KfwumMain * @task: task to do
* *
* Description: This function implements the upload of the firware data * returns void
* received as parameters. */
* static void
* Restriction: Called only from main KfwumMain(struct ipmi_intf *intf, tKFWUM_Task task)
*
* Input: unsigned char * pBuffer[] : The buffers
* unsigned long bufSize : The size of the buffers
*
* Output: None
*
* Global: none
*
* Return: tIFWU_Status (success or failure)
*
*******************************************************************************/
static void KfwumMain(struct ipmi_intf * intf, tKFWUM_Task task)
{ {
tKFWUM_Status status = KFWUM_STATUS_OK; tKFWUM_Status status = KFWUM_STATUS_OK;
tKFWUM_BoardInfo boardInfo; tKFWUM_BoardInfo boardInfo;
@ -398,8 +362,8 @@ static void KfwumMain(struct ipmi_intf * intf, tKFWUM_Task task)
* *
* returns KFWUM_STATUS_OK or KFWUM_STATUS_ERROR * returns KFWUM_STATUS_OK or KFWUM_STATUS_ERROR
*/ */
static tKFWUM_Status KfwumGetFileSize(unsigned char *pFileName, static tKFWUM_Status
unsigned long *pFileSize) KfwumGetFileSize(unsigned char *pFileName, unsigned long *pFileSize)
{ {
FILE *pFileHandle = NULL; FILE *pFileHandle = NULL;
pFileHandle = fopen((const char *)pFileName, "rb"); pFileHandle = fopen((const char *)pFileName, "rb");
@ -424,8 +388,8 @@ static tKFWUM_Status KfwumGetFileSize(unsigned char *pFileName,
* returns KFWUM_STATUS_OK or KFWUM_STATUS_ERROR * returns KFWUM_STATUS_OK or KFWUM_STATUS_ERROR
*/ */
#define MAX_BUFFER_SIZE 1024*16 #define MAX_BUFFER_SIZE 1024*16
static tKFWUM_Status KfwumSetupBuffersFromFile(unsigned char * pFileName, static tKFWUM_Status
unsigned long fileSize) KfwumSetupBuffersFromFile(unsigned char * pFileName, unsigned long fileSize)
{ {
tKFWUM_Status status = KFWUM_STATUS_ERROR; tKFWUM_Status status = KFWUM_STATUS_ERROR;
FILE *pFileHandle = NULL; FILE *pFileHandle = NULL;
@ -505,38 +469,29 @@ KfwumShowProgress(const char *task, unsigned long current, unsigned long total)
fflush(stdout); fflush(stdout);
} }
/* KfwumCalculateChecksumPadding /* KfwumCalculateChecksumPadding - TBD
*
* TBD
*
*/ */
static unsigned short KfwumCalculateChecksumPadding(unsigned char * pBuffer, static unsigned short
unsigned long totalSize) KfwumCalculateChecksumPadding(unsigned char *pBuffer, unsigned long totalSize)
{ {
unsigned short sumOfBytes = 0; unsigned short sumOfBytes = 0;
unsigned short padding; unsigned short padding;
unsigned long counter; unsigned long counter;
for (counter = 0; counter < totalSize; counter ++) {
for(counter = 0; counter < totalSize; counter ++ )
{
sumOfBytes += pBuffer[counter]; sumOfBytes += pBuffer[counter];
} }
padding = 0 - sumOfBytes; padding = 0 - sumOfBytes;
return padding; return padding;
} }
/****************************************************************************** /* COMMANDS */
******************************* COMMANDS **************************************
******************************************************************************/
#ifdef HAVE_PRAGMA_PACK #ifdef HAVE_PRAGMA_PACK
#pragma pack(1) #pragma pack(1)
#endif #endif
struct KfwumGetInfoResp { struct KfwumGetInfoResp {
unsigned char protocolRevision; unsigned char protocolRevision;
unsigned char controllerDeviceId; unsigned char controllerDeviceId;
struct struct {
{
unsigned char mode:1; unsigned char mode:1;
unsigned char seqAdd:1; unsigned char seqAdd:1;
unsigned char res : 6; unsigned char res : 6;
@ -549,15 +504,14 @@ struct KfwumGetInfoResp {
#pragma pack(0) #pragma pack(0)
#endif #endif
/* KfwumGetInfo - Get Firmware Update Manager (FWUM) information /* KfwumGetInfo - Get Firmware Update Manager (FWUM) information
* *
* *intf : IPMI interface * *intf : IPMI interface
* output : when set to non zero, queried information is displayed * output : when set to non zero, queried information is displayed
* pNumBank: output ptr for number of banks * pNumBank: output ptr for number of banks
*/ */
static tKFWUM_Status KfwumGetInfo(struct ipmi_intf * intf, unsigned char output, static tKFWUM_Status
KfwumGetInfo(struct ipmi_intf *intf, unsigned char output,
unsigned char *pNumBank) unsigned char *pNumBank)
{ {
tKFWUM_Status status = KFWUM_STATUS_OK; tKFWUM_Status status = KFWUM_STATUS_OK;
@ -575,7 +529,7 @@ static tKFWUM_Status KfwumGetInfo(struct ipmi_intf * intf, unsigned char output,
lprintf(LOG_ERR, "Error in FWUM Firmware Get Info Command."); lprintf(LOG_ERR, "Error in FWUM Firmware Get Info Command.");
return KFWUM_STATUS_ERROR; return KFWUM_STATUS_ERROR;
} else if (rsp->ccode != 0) { } else if (rsp->ccode != 0) {
lprintf(LOG_ERR, "FWUM Firmware Get Info returned %x\n", lprintf(LOG_ERR, "FWUM Firmware Get Info returned %x",
rsp->ccode); rsp->ccode);
return KFWUM_STATUS_ERROR; return KFWUM_STATUS_ERROR;
} }
@ -655,8 +609,9 @@ static tKFWUM_Status KfwumGetInfo(struct ipmi_intf * intf, unsigned char output,
* *
* returns KFWUM_STATUS_OK on success, otherwise KFWUM_STATUS_ERROR * returns KFWUM_STATUS_OK on success, otherwise KFWUM_STATUS_ERROR
*/ */
static tKFWUM_Status KfwumGetDeviceInfo(struct ipmi_intf *intf, static tKFWUM_Status
unsigned char output, tKFWUM_BoardInfo *pBoardInfo) KfwumGetDeviceInfo(struct ipmi_intf *intf, unsigned char output,
tKFWUM_BoardInfo *pBoardInfo)
{ {
struct ipm_devid_rsp *pGetDevId; struct ipm_devid_rsp *pGetDevId;
struct ipmi_rs *rsp; struct ipmi_rs *rsp;
@ -698,7 +653,6 @@ static tKFWUM_Status KfwumGetDeviceInfo(struct ipmi_intf *intf,
return KFWUM_STATUS_OK; return KFWUM_STATUS_OK;
} }
#ifdef HAVE_PRAGMA_PACK #ifdef HAVE_PRAGMA_PACK
#pragma pack(1) #pragma pack(1)
#endif #endif
@ -715,7 +669,6 @@ struct KfwumGetStatusResp {
#pragma pack(0) #pragma pack(0)
#endif #endif
const struct valstr bankStateValS[] = { const struct valstr bankStateValS[] = {
{ 0x00, "Not programmed" }, { 0x00, "Not programmed" },
{ 0x01, "New firmware" }, { 0x01, "New firmware" },
@ -801,14 +754,14 @@ struct KfwumManualRollbackReq{
#pragma pack(0) #pragma pack(0)
#endif #endif
/* KfwumManualRollback - Ask IPMC to rollback to previous version /* KfwumManualRollback - Ask IPMC to rollback to previous version
* *
* *intf : IPMI interface * *intf : IPMI interface
* *
* returns KFWUM_STATUS_OK on success, otherwise KFWUM_STATUS_ERROR * returns KFWUM_STATUS_OK on success, otherwise KFWUM_STATUS_ERROR
*/ */
static tKFWUM_Status KfwumManualRollback(struct ipmi_intf * intf) static tKFWUM_Status
KfwumManualRollback(struct ipmi_intf *intf)
{ {
struct ipmi_rs *rsp; struct ipmi_rs *rsp;
struct ipmi_rq req; struct ipmi_rq req;
@ -860,8 +813,9 @@ struct KfwumStartFirmwareDownloadResp {
#pragma pack(0) #pragma pack(0)
#endif #endif
static tKFWUM_Status KfwumStartFirmwareImage(struct ipmi_intf * intf, static tKFWUM_Status
unsigned long length, unsigned short padding) KfwumStartFirmwareImage(struct ipmi_intf *intf, unsigned long length,
unsigned short padding)
{ {
struct ipmi_rs *rsp; struct ipmi_rs *rsp;
struct ipmi_rq req; struct ipmi_rq req;
@ -928,12 +882,12 @@ struct KfwumSaveFirmwareSequenceReq
#pragma pack(0) #pragma pack(0)
#endif #endif
# define FWUM_SAVE_FIRMWARE_NO_RESPONSE_LIMIT 6 # define FWUM_SAVE_FIRMWARE_NO_RESPONSE_LIMIT 6
static tKFWUM_Status KfwumSaveFirmwareImage(struct ipmi_intf * intf, static tKFWUM_Status
unsigned char sequenceNumber, unsigned long address, KfwumSaveFirmwareImage(struct ipmi_intf *intf, unsigned char sequenceNumber,
unsigned char *pFirmBuf, unsigned char *pInBufLength) unsigned long address, unsigned char *pFirmBuf,
unsigned char *pInBufLength)
{ {
tKFWUM_Status status = KFWUM_STATUS_OK; tKFWUM_Status status = KFWUM_STATUS_OK;
struct ipmi_rs *rsp; struct ipmi_rs *rsp;
@ -1035,8 +989,8 @@ struct KfwumFinishFirmwareDownloadReq{
#pragma pack(0) #pragma pack(0)
#endif #endif
static tKFWUM_Status KfwumFinishFirmwareImage(struct ipmi_intf * intf, static tKFWUM_Status
tKFWUM_InFirmwareInfo firmInfo) KfwumFinishFirmwareImage(struct ipmi_intf *intf, tKFWUM_InFirmwareInfo firmInfo)
{ {
struct ipmi_rs *rsp; struct ipmi_rs *rsp;
struct ipmi_rq req; struct ipmi_rq req;
@ -1070,10 +1024,10 @@ static tKFWUM_Status KfwumFinishFirmwareImage(struct ipmi_intf * intf,
return KFWUM_STATUS_OK; return KFWUM_STATUS_OK;
} }
#define FWUM_MAX_UPLOAD_RETRY 6 #define FWUM_MAX_UPLOAD_RETRY 6
static tKFWUM_Status KfwumUploadFirmware(struct ipmi_intf * intf, static tKFWUM_Status
unsigned char *pBuffer, unsigned long totalSize) KfwumUploadFirmware(struct ipmi_intf *intf, unsigned char *pBuffer,
unsigned long totalSize)
{ {
tKFWUM_Status status = KFWUM_STATUS_ERROR; tKFWUM_Status status = KFWUM_STATUS_ERROR;
unsigned long address = 0x0; unsigned long address = 0x0;
@ -1181,7 +1135,8 @@ static const char* CMD_ID_STRING[] = {
"FinishFwImage", "FinishFwImage",
"ReadFwImage", "ReadFwImage",
"ManualRollback", "ManualRollback",
"GetTraceLog" }; "GetTraceLog"
};
static const char* EXT_CMD_ID_STRING[] = { static const char* EXT_CMD_ID_STRING[] = {
"FwUpgradeLock", "FwUpgradeLock",
@ -1189,15 +1144,15 @@ static const char* EXT_CMD_ID_STRING[] = {
"ProcessFwRb", "ProcessFwRb",
"WaitHSAfterUpg", "WaitHSAfterUpg",
"WaitFirstHSUpg", "WaitFirstHSUpg",
"FwInfoStateChange" }; "FwInfoStateChange"
};
static const char* CMD_STATE_STRING[] = { static const char* CMD_STATE_STRING[] = {
"Invalid", "Invalid",
"Begin", "Begin",
"Progress", "Progress",
"Completed" }; "Completed"
};
static tKFWUM_Status static tKFWUM_Status
KfwumGetTraceLog(struct ipmi_intf *intf) KfwumGetTraceLog(struct ipmi_intf *intf)
@ -1255,30 +1210,6 @@ KfwumGetTraceLog(struct ipmi_intf *intf)
return status; return status;
} }
/*******************************************************************************
* Function Name: KfwumGetInfoFromFirmware
*
* Description: This function retreive from the firmare the following info :
*
* o Checksum
* o File size (expected)
* o Board Id
* o Device Id
*
* Restriction: None
*
* Input: char * fileName - File to get info from
*
* Output: pInfo - container that will hold all the informations gattered.
* see structure for all details
*
* Global: None
*
* Return: IFWU_SUCCESS - file ok
* IFWU_ERROR - file error
*
*******************************************************************************/
#define IN_FIRMWARE_INFO_OFFSET_LOCATION 0x5a0 #define IN_FIRMWARE_INFO_OFFSET_LOCATION 0x5a0
#define IN_FIRMWARE_INFO_SIZE 20 #define IN_FIRMWARE_INFO_SIZE 20
#define IN_FIRMWARE_INFO_OFFSET_FILE_SIZE 0 #define IN_FIRMWARE_INFO_OFFSET_FILE_SIZE 0
@ -1373,16 +1304,17 @@ KfwumGetInfoFromFirmware(unsigned char *pBuf, unsigned long bufSize,
return KFWUM_STATUS_OK; return KFWUM_STATUS_OK;
} }
void
void KfwumFixTableVersionForOldFirmware(tKFWUM_InFirmwareInfo * pInfo) KfwumFixTableVersionForOldFirmware(tKFWUM_InFirmwareInfo * pInfo)
{
switch(pInfo->boardId)
{ {
switch(pInfo->boardId) {
case KFWUM_BOARD_KONTRON_UNKNOWN: case KFWUM_BOARD_KONTRON_UNKNOWN:
pInfo->tableVers = 0xff; pInfo->tableVers = 0xff;
break; break;
default: default:
/* pInfo->tableVers is already set for the right version */ /* pInfo->tableVers is already set for
* the right version
*/
break; break;
} }
} }
@ -1395,7 +1327,8 @@ void KfwumFixTableVersionForOldFirmware(tKFWUM_InFirmwareInfo * pInfo)
* *
* returns KFWUM_STATUS_OK if compatible, otherwise KFWUM_STATUS_ERROR * returns KFWUM_STATUS_OK if compatible, otherwise KFWUM_STATUS_ERROR
*/ */
tKFWUM_Status ipmi_kfwum_checkfwcompat(tKFWUM_BoardInfo boardInfo, tKFWUM_Status
ipmi_kfwum_checkfwcompat(tKFWUM_BoardInfo boardInfo,
tKFWUM_InFirmwareInfo firmInfo) tKFWUM_InFirmwareInfo firmInfo)
{ {
tKFWUM_Status status = KFWUM_STATUS_OK; tKFWUM_Status status = KFWUM_STATUS_OK;
@ -1416,7 +1349,6 @@ tKFWUM_Status ipmi_kfwum_checkfwcompat(tKFWUM_BoardInfo boardInfo,
return status; return status;
} }
void void
printf_kfwum_info(tKFWUM_BoardInfo boardInfo, tKFWUM_InFirmwareInfo firmInfo) printf_kfwum_info(tKFWUM_BoardInfo boardInfo, tKFWUM_InFirmwareInfo firmInfo)
{ {