SOLConfig.c 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619
  1. // /*****************************************************************
  2. // *****************************************************************
  3. // *** **
  4. // *** (C)Copyright 2005-2006, American Megatrends Inc. **
  5. // *** **
  6. // *** All Rights Reserved. **
  7. // *** **
  8. // *** 6145-F, Northbelt Parkway, Norcross, **
  9. // *** **
  10. // *** Georgia - 30071, USA. Phone-(770)-246-8600. **
  11. // *** **
  12. // *****************************************************************
  13. // ****************************************************************
  14. // *
  15. // * SOLConfig.c
  16. // * SOL configuration
  17. // *
  18. // * Author: Govind kothandapani <govindk@ami.com>
  19. // ****************************************************************/
  20. // #define ENABLE_DEBUG_MACROS 0
  21. // #include "Types.h"
  22. // #include "Debug.h"
  23. // #include "MsgHndlr.h"
  24. // #include "Support.h"
  25. // #include "IPMIDefs.h"
  26. // #include "SharedMem.h"
  27. // #include "PMConfig.h"
  28. // #include "IPMI_SOLConfig.h"
  29. // #include "NVRAccess.h"
  30. // #include "PDKDefs.h"
  31. // #include "PDKAccess.h"
  32. // #include"Ethaddr.h"
  33. // #include "IPMIConf.h"
  34. // /*** Local Definitions ***/
  35. // #define SOL_SET_IN_PROGRESS 0
  36. // #define SOL_ENABLE_PARAM 1
  37. // #define SOL_AUTHENTICATION_PARAM 2
  38. // #define SOL_ACCUM_THRESHOLD_PARAM 3
  39. // #define SOL_RETRY_PARAM 4
  40. // #define SOL_NVOL_BIT_RATE_PARAM 5
  41. // #define SOL_VOL_BIT_RATE_PARAM 6
  42. // #define SOL_PAYLD_CHANNEL_PARAM 7
  43. // #define SOL_PAYLD_PORT_NUM_PARAM 8
  44. // #define SET_IN_PROGRESS 0x01
  45. // #define SET_COMPLETE 0x00
  46. // #define PARAM_REVISION 0x11
  47. // #define GET_PARAM_REV_ONLY_MASK 0x80
  48. // #define BAUD_RATE_9600 6
  49. // #define BAUD_RATE_19200 7
  50. // #define BAUD_RATE_38400 8
  51. // #define BAUD_RATE_57600 9
  52. // #define BAUD_RATE_115200 10
  53. // /* Reserved Bits table */
  54. // #define MAX_SOL_PARAMS_DATA 9
  55. // #define RESERVED_VALUE_70 0x70
  56. // #define RESERVED_VALUE_F0 0xF0
  57. // typedef struct
  58. // {
  59. // INT8U Params;
  60. // INT8U ReservedBits [MAX_SOL_PARAMS_DATA];
  61. // INT8U DataLen;
  62. // } SOLCfgRsvdBits_T;
  63. // static SOLCfgRsvdBits_T m_RsvdBitsCheck [] = {
  64. // /* Param Reserved Bits Data Size */
  65. // { 0, { 0xFC }, 0x1 },
  66. // { 1, { 0xFE }, 0x1 },
  67. // { 2, { 0x30 }, 0x1 },
  68. // { 4, { 0xF8 }, 0x1 },
  69. // { 5, { 0xF0 }, 0x1 }
  70. // };
  71. // /*** Module Variables ***/
  72. // /**
  73. // * @brief SOL Configuration Parameter Lengths
  74. // **/
  75. // static const INT8U SOLConfigParamLengths [] = { 1,1,1,2,2,1,1,1,2 };
  76. // /**
  77. // * IsBaudRateValid
  78. // **/
  79. // static int IsBaudRateValid (INT8U BaudRate);
  80. // // Function to check if valid privileges
  81. // static int IsValidPrivilege(INT8U authtype);
  82. // #if SOL_ACTIVATING_COMMAND != UNIMPLEMENTED
  83. // /*---------------------------------------
  84. // * SOLActivating
  85. // *---------------------------------------*/
  86. // int
  87. // SOLActivating (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst)
  88. // {
  89. // /**
  90. // * Send SOL activating Message to Remote Application connected to
  91. // * Connected to Serial port
  92. // **/
  93. // *pRes = CC_NORMAL;
  94. // return sizeof (*pRes);
  95. // }
  96. // #endif /* SOL_ACTIVATING_COMMAND */
  97. // #if GET_SOL_CONFIGURATION != UNIMPLEMENTED
  98. // /*---------------------------------------
  99. // * GetSOLConfig
  100. // *---------------------------------------*/
  101. // int
  102. // GetSOLConfig (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst)
  103. // {
  104. // _NEAR_ GetSOLConfigReq_T* GetReq = (_NEAR_ GetSOLConfigReq_T*) pReq;
  105. // _NEAR_ GetSOLConfigRes_T* GetRes = (_NEAR_ GetSOLConfigRes_T*) pRes;
  106. // _NEAR_ GetSOLConfigOEMRes_T* GetOEMRes = (_NEAR_ GetSOLConfigOEMRes_T*) pRes;
  107. // _FAR_ BMCSharedMem_T* pSharedMem = BMC_GET_SHARED_MEM (BMCInst);
  108. // BMCInfo_t *pBMCInfo = &g_BMCInfo[BMCInst];
  109. // INT8U Size,*curchannel;
  110. // INT8U ChannelNum, EthIndex;
  111. // INT8U oem_len;
  112. // unsigned long oem_addr;
  113. // ChannelNum = GetReq->ChannelNum & 0x0F;
  114. // if(GetReq->ChannelNum & RESERVED_VALUE_70)
  115. // {
  116. // /* Alarm !!! Somebody is trying to set Reseved Bits */
  117. // *pRes = CC_INV_DATA_FIELD;
  118. // return sizeof (*pRes);
  119. // }
  120. // if (ChannelNum > 0x0F)
  121. // {
  122. // *pRes =CC_INV_DATA_FIELD;
  123. // return sizeof(*pRes);
  124. // }
  125. // if (0x0E == ChannelNum)
  126. // {
  127. // OS_THREAD_TLS_GET(g_tls.CurChannel,curchannel);
  128. // EthIndex = GetEthIndex (*curchannel & 0xF, BMCInst);
  129. // }
  130. // else
  131. // {
  132. // EthIndex = GetEthIndex (ChannelNum, BMCInst);
  133. // }
  134. // if (0xFF == EthIndex)
  135. // {
  136. // *pRes = CC_INV_DATA_FIELD;
  137. // return sizeof (*pRes);
  138. // }
  139. // if((GetReq->SetSel != 0x00) ||(GetReq->BlkSEl != 0x00))
  140. // {
  141. // *pRes =CC_INV_DATA_FIELD;
  142. // return sizeof(*pRes);
  143. // }
  144. // GetRes->CompletionCode = CC_NORMAL;
  145. // GetRes->ParamRev = PARAM_REVISION;
  146. // /* Check if only parameter revision is required */
  147. // if (0 != (GetReq->ChannelNum & GET_PARAM_REV_ONLY_MASK))
  148. // {
  149. // if((MAX_SOL_CONF_PARAM >= GetReq->ParamSel))
  150. // {
  151. // return sizeof(GetSOLConfigRes_T);
  152. // }
  153. // else if(( NULL != g_PDKHandle[PDK_GETSOLOEMPARAM]) &&
  154. // ((MIN_SOL_OEM_CONF_PARAM <= GetReq->ParamSel) && (MAX_SOL_OEM_CONF_PARAM >= GetReq->ParamSel)))
  155. // {
  156. // oem_len = ((int(*)(INT8U, unsigned long*,int))(g_PDKHandle[PDK_GETSOLOEMPARAM]))(GetReq->ParamSel, &oem_addr ,BMCInst);
  157. // if( oem_len == 0)
  158. // {
  159. // GetRes->CompletionCode = CC_PARAM_NOT_SUPPORTED;
  160. // return sizeof(INT8U);
  161. // }
  162. // else
  163. // return sizeof(GetSOLConfigRes_T);
  164. // }
  165. // else
  166. // {
  167. // *pRes = CC_PARAM_NOT_SUPPORTED;
  168. // return sizeof (*pRes);
  169. // }
  170. // }
  171. // Size = sizeof (GetSOLConfigRes_T);
  172. // /* Load individual configurations */
  173. // switch (GetReq->ParamSel)
  174. // {
  175. // case SOL_SET_IN_PROGRESS:
  176. // LOCK_BMC_SHARED_MEM(BMCInst);
  177. // (*(_NEAR_ INT8U*)(GetRes + 1)) = BMC_GET_SHARED_MEM(BMCInst)->m_SOL_SetInProgress;
  178. // UNLOCK_BMC_SHARED_MEM(BMCInst);
  179. // Size = Size + sizeof (INT8U);
  180. // break;
  181. // case SOL_ENABLE_PARAM:
  182. // (*(_NEAR_ INT8U*)(GetRes + 1)) = pBMCInfo->SOLCfg[EthIndex].SOLEnable;
  183. // Size = Size + sizeof (INT8U);
  184. // break;
  185. // case SOL_AUTHENTICATION_PARAM:
  186. // (*(_NEAR_ INT8U*)(GetRes + 1)) = pBMCInfo->SOLCfg[EthIndex].SOLAuth;
  187. // Size = Size + sizeof (INT8U);
  188. // break;
  189. // case SOL_ACCUM_THRESHOLD_PARAM:
  190. // _fmemcpy((INT8U *)(GetRes+1),(INT8U *)&pBMCInfo->SOLCfg[EthIndex].CharAccThresh,sizeof(INT16U));
  191. // Size = Size + sizeof (INT16U);
  192. // break;
  193. // case SOL_RETRY_PARAM:
  194. // (*((_NEAR_ INT8U*)(GetRes + 1))) = pBMCInfo->SOLCfg[EthIndex].SOLRetryCount;
  195. // (*((_NEAR_ INT8U*)(GetRes + 1) + 1)) = pBMCInfo->SOLCfg[EthIndex].SOLRetryInterval;
  196. // Size = Size + sizeof (INT16U);
  197. // break;
  198. // case SOL_NVOL_BIT_RATE_PARAM:
  199. // (*(_NEAR_ INT8U*)(GetRes + 1)) = pBMCInfo->SOLCfg[EthIndex].NVBitRate;
  200. // Size = Size + sizeof (INT8U);
  201. // break;
  202. // case SOL_VOL_BIT_RATE_PARAM:
  203. // (*(_NEAR_ INT8U*)(GetRes + 1)) = pSharedMem->SOLBitRate[EthIndex];
  204. // Size = Size + sizeof (INT8U);
  205. // break;
  206. // case SOL_PAYLD_CHANNEL_PARAM:
  207. // (*(_NEAR_ INT8U*)(GetRes + 1)) = pBMCInfo->SOLCfg[EthIndex].PayldChannel;
  208. // Size = Size + sizeof (INT8U);
  209. // break;
  210. // case SOL_PAYLD_PORT_NUM_PARAM:
  211. // _fmemcpy((INT8U *)(GetRes+1),(INT8U *)&pBMCInfo->SOLCfg[EthIndex].PayldPortNum,sizeof(INT16U));
  212. // Size = Size + sizeof (INT16U);
  213. // break;
  214. // default:
  215. // if(g_PDKHandle[PDK_GETSOLOEMPARAM] != NULL &&
  216. // (GetReq->ParamSel >= 192 && GetReq->ParamSel <= 255))
  217. // {
  218. // oem_len = ((int(*)(INT8U, unsigned long*,int))(g_PDKHandle[PDK_GETSOLOEMPARAM]))(GetReq->ParamSel, &oem_addr ,BMCInst);
  219. // if( oem_len == 0)
  220. // {
  221. // GetRes->CompletionCode = CC_PARAM_NOT_SUPPORTED;
  222. // return sizeof(INT8U);
  223. // }
  224. // else
  225. // {
  226. // //Acquire the OEM parameters
  227. // if( oem_len < MSG_PAYLOAD_SIZE - sizeof(GetSOLConfigOEMRes_T))
  228. // {
  229. // memcpy((char*)GetOEMRes + sizeof(GetSOLConfigOEMRes_T) ,\
  230. // (unsigned int*)oem_addr , oem_len);
  231. // }
  232. // else
  233. // {
  234. // GetRes->CompletionCode = CC_PARAM_NOT_SUPPORTED;
  235. // return sizeof(INT8U);
  236. // }
  237. // return sizeof(GetSystemInfoParamOEMRes_T) + oem_len;
  238. // }
  239. // }
  240. // else
  241. // {
  242. // GetRes->CompletionCode = CC_PARAM_NOT_SUPPORTED;
  243. // Size = sizeof (INT8U);
  244. // }
  245. // }
  246. // return Size;
  247. // }
  248. // #endif /* GET_SOL_CONFIGURATION */
  249. // #if SET_SOL_CONFIGURATION != UNIMPLEMENTED
  250. // /*---------------------------------------
  251. // * SetSOLConfig
  252. // *---------------------------------------*/
  253. // int
  254. // SetSOLConfig (_NEAR_ INT8U* pReq, INT8U ReqLen, _NEAR_ INT8U* pRes,_NEAR_ int BMCInst)
  255. // {
  256. // _NEAR_ SetSOLConfigReq_T* SetReq = (_NEAR_ SetSOLConfigReq_T*) pReq;
  257. // _NEAR_ SetSOLConfigOEMReq_T* pSetOEMReq = (_NEAR_ SetSOLConfigOEMReq_T*) pReq;
  258. // _FAR_ BMCSharedMem_T* pSharedMem = BMC_GET_SHARED_MEM (BMCInst);
  259. // BMCInfo_t *pBMCInfo = &g_BMCInfo[BMCInst];
  260. // int i=0, j=0;
  261. // INT8U ChannelNum, EthIndex,*curchannel;
  262. // unsigned long oem_addr;
  263. // int size;
  264. // INT8U m_SOL_SetInProgress; /**< Contains setting SOL configuration status */
  265. // ChannelNum = SetReq->ChannelNum & 0x0F;
  266. // if (ChannelNum > 0x0F)
  267. // {
  268. // *pRes =CC_INV_DATA_FIELD;
  269. // return sizeof(*pRes);
  270. // }
  271. // if (0x0E == ChannelNum)
  272. // {
  273. // OS_THREAD_TLS_GET(g_tls.CurChannel,curchannel);
  274. // EthIndex = GetEthIndex (*curchannel & 0xF, BMCInst);
  275. // }
  276. // else
  277. // {
  278. // EthIndex = GetEthIndex (ChannelNum, BMCInst);
  279. // }
  280. // if (0xFF == EthIndex)
  281. // {
  282. // *pRes = CC_INV_DATA_FIELD;
  283. // return sizeof (*pRes);
  284. // }
  285. // if (SetReq->ParamSel >= sizeof (SOLConfigParamLengths))
  286. // {
  287. // *pRes = CC_PARAM_NOT_SUPPORTED;
  288. // return sizeof (*pRes);
  289. // }
  290. // /* Validate Req Lengths */
  291. // if (ReqLen != (sizeof (SetSOLConfigReq_T) +
  292. // SOLConfigParamLengths [SetReq->ParamSel]))
  293. // {
  294. // *pRes = CC_REQ_INV_LEN;
  295. // return sizeof (*pRes);
  296. // }
  297. // if(SetReq->ChannelNum & RESERVED_VALUE_F0)
  298. // {
  299. // /* Alarm !!! Somebody is trying to set Reseved Bits */
  300. // *pRes = CC_INV_DATA_FIELD;
  301. // return sizeof (*pRes);
  302. // }
  303. // /* Check for Reserved Bits */
  304. // for (i = 0; i < sizeof (m_RsvdBitsCheck)/ sizeof (m_RsvdBitsCheck[0]); i++)
  305. // {
  306. // /* Check if this Parameter Selector needs Reserved bit checking !! */
  307. // if (m_RsvdBitsCheck[i].Params == SetReq->ParamSel )
  308. // {
  309. // for (j = 0; j < m_RsvdBitsCheck[i].DataLen; j++)
  310. // {
  311. // if ( 0 != (pReq[2+j] & m_RsvdBitsCheck[i].ReservedBits[j]))
  312. // {
  313. // /* Alarm !!! Somebody is trying to set Reseved Bits */
  314. // *pRes = CC_INV_DATA_FIELD;
  315. // return sizeof (*pRes);
  316. // }
  317. // }
  318. // }
  319. // }
  320. // *pRes = CC_NORMAL;
  321. // switch (SetReq->ParamSel)
  322. // {
  323. // case SOL_SET_IN_PROGRESS:
  324. // LOCK_BMC_SHARED_MEM(BMCInst);
  325. // m_SOL_SetInProgress = BMC_GET_SHARED_MEM(BMCInst)->m_SOL_SetInProgress;
  326. // UNLOCK_BMC_SHARED_MEM(BMCInst);
  327. // /* Commit Write is optional and supported
  328. // * only if rollback is supported */
  329. // if ((SET_COMPLETE != (*(_NEAR_ INT8U*)(SetReq + 1))) &&
  330. // (SET_IN_PROGRESS != (*(_NEAR_ INT8U*)(SetReq + 1))))
  331. // {
  332. // *pRes = CC_PARAM_NOT_SUPPORTED;
  333. // return sizeof (*pRes);
  334. // }
  335. // else if ((SET_IN_PROGRESS == m_SOL_SetInProgress) &&
  336. // (SET_IN_PROGRESS == (*(_NEAR_ INT8U*)(SetReq + 1))))
  337. // {
  338. // /*Set In Progress already Set */
  339. // *pRes = CC_SET_IN_PROGRESS;
  340. // return sizeof (*pRes);
  341. // }
  342. // LOCK_BMC_SHARED_MEM(BMCInst);
  343. // BMC_GET_SHARED_MEM(BMCInst)->m_SOL_SetInProgress = (*(_NEAR_ INT8U*)(SetReq + 1));
  344. // UNLOCK_BMC_SHARED_MEM(BMCInst);
  345. // break;
  346. // case SOL_ENABLE_PARAM:
  347. // pBMCInfo->SOLCfg[EthIndex].SOLEnable = (*(_NEAR_ INT8U*)(SetReq + 1));
  348. // break;
  349. // case SOL_AUTHENTICATION_PARAM:
  350. // /*
  351. // #34323: Check if user is setting reserved bits. This cannot be handled at main logic
  352. // of reserve bit checking.
  353. // */
  354. // if (0 != IsValidPrivilege((0x3F & (*(_NEAR_ INT8U*)(SetReq + 1)))))
  355. // {
  356. // *pRes = CC_INV_DATA_FIELD;
  357. // return sizeof (*pRes);
  358. // }
  359. // pBMCInfo->SOLCfg[EthIndex].SOLAuth = (*(_NEAR_ INT8U*)(SetReq + 1));
  360. // break;
  361. // case SOL_ACCUM_THRESHOLD_PARAM:
  362. // if(((*(_NEAR_ INT8U*)(SetReq + 1)) == 0) || ((*((_NEAR_ INT8U*)(SetReq +1)+1)) == 0))
  363. // {
  364. // *pRes = CC_INV_DATA_FIELD;
  365. // return sizeof (*pRes);
  366. // }
  367. // pBMCInfo->SOLCfg[EthIndex].CharAccThresh = (*(_NEAR_ INT16U*)(SetReq + 1));
  368. // break;
  369. // case SOL_RETRY_PARAM:
  370. // pBMCInfo->SOLCfg[EthIndex].SOLRetryCount = (*((_NEAR_ INT8U*)(SetReq +1) ) );
  371. // pBMCInfo->SOLCfg[EthIndex].SOLRetryInterval = (*((_NEAR_ INT8U*)(SetReq +1)+1));
  372. // break;
  373. // case SOL_NVOL_BIT_RATE_PARAM:
  374. // if ( 0 != IsBaudRateValid (*(_NEAR_ INT8U*)(SetReq + 1)))
  375. // {
  376. // /*Invalid baud rate setting */
  377. // *pRes = CC_INV_DATA_FIELD;
  378. // return sizeof (*pRes);
  379. // }
  380. // if((*(_NEAR_ INT8U*)(SetReq+1)) == 0)
  381. // *(_NEAR_ INT8U*)(SetReq+1) = BAUD_RATE_9600;
  382. // pBMCInfo->SOLCfg[EthIndex].NVBitRate = *(_NEAR_ INT8U*)(SetReq + 1);
  383. // break;
  384. // case SOL_VOL_BIT_RATE_PARAM:
  385. // if ( 0 != IsBaudRateValid (*(_NEAR_ INT8U*)(SetReq + 1)))
  386. // {
  387. // /*Invalid baud rate setting */
  388. // *pRes = CC_INV_DATA_FIELD;
  389. // return sizeof (*pRes);
  390. // }
  391. // if((*(_NEAR_ INT8U*)(SetReq+1)) == 0)
  392. // *(_NEAR_ INT8U*)(SetReq+1) = BAUD_RATE_9600;
  393. // pSharedMem->SOLBitRate[EthIndex] = *(_NEAR_ INT8U*)(SetReq + 1);
  394. // break;
  395. // case SOL_PAYLD_CHANNEL_PARAM:
  396. // *pRes = CC_ATTEMPT_TO_SET_RO_PARAM;
  397. // return sizeof (*pRes);
  398. // break;
  399. // case SOL_PAYLD_PORT_NUM_PARAM:
  400. // *pRes = CC_ATTEMPT_TO_SET_RO_PARAM;
  401. // return sizeof (*pRes);
  402. // break;
  403. // default:
  404. // if(g_PDKHandle[PDK_SETSOLOEMPARAM] != NULL &&
  405. // (SetReq->ParamSel >= 192 && SetReq->ParamSel <= 255))
  406. // {
  407. // oem_addr = (unsigned long)((char*)pSetOEMReq + sizeof(SetSOLConfigOEMReq_T));
  408. // size = ((int(*)(INT8U, unsigned long*,int))(g_PDKHandle[PDK_SETSOLOEMPARAM]))(SetReq->ParamSel, &oem_addr ,BMCInst);
  409. // if(size <= 0)
  410. // {
  411. // *pRes = CC_PARAM_NOT_SUPPORTED;
  412. // return sizeof(*pRes);
  413. // }
  414. // else
  415. // {
  416. // *pRes = CC_PARAM_NOT_SUPPORTED;
  417. // return sizeof(*pRes);
  418. // }
  419. // }
  420. // }
  421. // FlushIPMI((INT8U*)&pBMCInfo->SOLCfg[0],(INT8U*)&pBMCInfo->SOLCfg[EthIndex],pBMCInfo->IPMIConfLoc.SOLCfgAddr,
  422. // sizeof(SOLConfig_T),BMCInst);
  423. // return sizeof (*pRes);
  424. // }
  425. // #endif /* SET_SOL_CONFIGURATION */
  426. // /**
  427. // * IsBaudRateValid
  428. // **/
  429. // int
  430. // IsBaudRateValid (INT8U BaudRate)
  431. // {
  432. // /* Check against supported Baud Rates */
  433. // if ((BaudRate == 0) ||
  434. // (BaudRate == BAUD_RATE_9600) ||
  435. // (BaudRate == BAUD_RATE_19200) ||
  436. // (BaudRate == BAUD_RATE_38400) ||
  437. // (BaudRate == BAUD_RATE_57600) ||
  438. // (BaudRate == BAUD_RATE_115200))
  439. // {
  440. // //Baud rate is valid
  441. // return 0;
  442. // }
  443. // //Baud rate is invvalid
  444. // return -1;
  445. // }
  446. // /*
  447. // Check if user entered Auth type is valid
  448. // */
  449. // int IsValidPrivilege(INT8U priv_lvl)
  450. // {
  451. // if ((priv_lvl == 02) ||
  452. // (priv_lvl == 03) ||
  453. // (priv_lvl == 04) ||
  454. // (priv_lvl == 05))
  455. // return 0;
  456. // else
  457. // return -1; //// Invalid privilege
  458. // }
  459. // #if 0
  460. // /**
  461. // * InitSOLPort
  462. // **/
  463. // int
  464. // InitSOLPort (INT8U BaudRate)
  465. // {
  466. // int status;
  467. // int fd;
  468. // struct termios tty_struct;
  469. // if ((fd = open(SOL_IFC_PORT,O_RDONLY)) < 0)
  470. // {
  471. // IPMI_WARNING ("Can't open serial port..%s\n",strerror(errno));
  472. // return -1;
  473. // }
  474. // status = tcgetattr(fd,&tty_struct); /* get termios structure */
  475. // switch (BaudRate) {
  476. // case BAUD_RATE_9600:
  477. // cfsetospeed(&tty_struct, B9600);
  478. // cfsetispeed(&tty_struct, B9600);
  479. // break;
  480. // case BAUD_RATE_19200:
  481. // cfsetospeed(&tty_struct, B19200);
  482. // cfsetispeed(&tty_struct, B19200);
  483. // break;
  484. // case BAUD_RATE_38400:
  485. // cfsetospeed(&tty_struct, B38400);
  486. // cfsetispeed(&tty_struct, B38400);
  487. // break;
  488. // case BAUD_RATE_57600:
  489. // cfsetospeed(&tty_struct, B57600);
  490. // cfsetispeed(&tty_struct, B57600);
  491. // break;
  492. // case BAUD_RATE_115200:
  493. // cfsetospeed(&tty_struct, B115200);
  494. // cfsetispeed(&tty_struct, B115200);
  495. // break;
  496. // default:
  497. // IPMI_ERROR ("SOLConfig.c : Invalid baud rate = %x\n", BaudRate);
  498. // }
  499. // tty_struct.c_cflag |= CS8; /* Set 8bits/charecter */
  500. // tty_struct.c_cflag &= ~CSTOPB; /* set framing to 1 stop bits */
  501. // tty_struct.c_cflag &= ~(PARENB); /* set parity to NONE */
  502. // tty_struct.c_iflag &= ~(INPCK);
  503. // /* Set Hardware flow control */
  504. // tty_struct.c_cflag |= CRTSCTS;
  505. // tty_struct.c_lflag &= ~(ICANON|ECHO|ECHOE|ISIG); /* Raw input mode */
  506. // tty_struct.c_oflag &= ~(OCRNL | ONOCR | ONLRET);
  507. // tty_struct.c_iflag &= ~(IXON | IXOFF); /* no sw flow ctrl */
  508. // tty_struct.c_iflag &= ~INLCR;
  509. // tty_struct.c_iflag &= ~ICRNL;
  510. // tty_struct.c_iflag &= ~IGNCR;
  511. // PDK_InitSOLPort (&tty_struct); /* OEM specific SOL initialization */
  512. // /* set the new attributes in the tty driver */
  513. // status = tcsetattr(fd, TCSANOW, &tty_struct);
  514. // close (fd);
  515. // return 0;
  516. // }
  517. // #endif /* #if 0 */