Lines Matching +full:x +full:- +full:rc
20 * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED.
32 * Functions to program the SDR repository, from built-in sensors or
72 message fits into the recommended 32-byte limit */
81 rsp = intf->sendrecv(intf, req); in partial_send()
83 return -1; in partial_send()
86 if (rsp->ccode || rsp->data_len < 2) { in partial_send()
87 return -1; in partial_send()
90 *id = rsp->data[0] + (rsp->data[1] << 8); in partial_send()
102 int len = sdrr->length; in ipmi_sdr_add_record()
103 int rc = 0; in ipmi_sdr_add_record() local
106 if (len < 1 || !sdrr->raw) { in ipmi_sdr_add_record()
113 return -1; in ipmi_sdr_add_record()
119 return -1; in ipmi_sdr_add_record()
121 sdr_rq->reserve_id = reserve_id; in ipmi_sdr_add_record()
122 sdr_rq->in_progress = PARTIAL_ADD; in ipmi_sdr_add_record()
130 sdr_rq->id = 0; in ipmi_sdr_add_record()
131 sdr_rq->offset = 0; in ipmi_sdr_add_record()
132 sdr_rq->data[0] = sdrr->id & 0xFF; in ipmi_sdr_add_record()
133 sdr_rq->data[1] = (sdrr->id >> 8) & 0xFF; in ipmi_sdr_add_record()
134 sdr_rq->data[2] = sdrr->version; in ipmi_sdr_add_record()
135 sdr_rq->data[3] = sdrr->type; in ipmi_sdr_add_record()
136 sdr_rq->data[4] = sdrr->length; in ipmi_sdr_add_record()
137 req.msg.data_len = 5 + sizeof(*sdr_rq) - 1; in ipmi_sdr_add_record()
143 return -1; in ipmi_sdr_add_record()
151 if ( (len - i) <= sdr_max_write_len) { in ipmi_sdr_add_record()
153 data_len = len - i; in ipmi_sdr_add_record()
154 sdr_rq->in_progress = LAST_RECORD; in ipmi_sdr_add_record()
159 sdr_rq->id = id; in ipmi_sdr_add_record()
160 sdr_rq->offset = i + 5; in ipmi_sdr_add_record()
161 memcpy(sdr_rq->data, sdrr->raw + i, data_len); in ipmi_sdr_add_record()
162 req.msg.data_len = data_len + sizeof(*sdr_rq) - 1; in ipmi_sdr_add_record()
164 if ((rc = partial_send(intf, &req, &id)) != 0) { in ipmi_sdr_add_record()
174 return rc; in ipmi_sdr_add_record()
187 return -1; in ipmi_sdr_repo_clear()
203 rsp = intf->sendrecv(intf, &req); in ipmi_sdr_repo_clear()
206 return -1; in ipmi_sdr_repo_clear()
208 if (rsp->ccode > 0) { in ipmi_sdr_repo_clear()
210 val2str(rsp->ccode, completion_code_vals)); in ipmi_sdr_repo_clear()
211 return -1; in ipmi_sdr_repo_clear()
213 if ((rsp->data[0] & 1) == 1) { in ipmi_sdr_repo_clear()
223 return -1; in ipmi_sdr_repo_clear()
234 * Fill the SDR repository from built-in sensors
247 queue->head = NULL; in sdrr_get_records()
248 queue->tail = NULL; in sdrr_get_records()
256 return -1; in sdrr_get_records()
260 sdrr->id = header->id; in sdrr_get_records()
261 sdrr->version = header->version; in sdrr_get_records()
262 sdrr->type = header->type; in sdrr_get_records()
263 sdrr->length = header->length; in sdrr_get_records()
264 sdrr->raw = ipmi_sdr_get_record(intf, header, itr); in sdrr_get_records()
265 (void)ipmi_sdr_print_name_from_rawentry(intf, sdrr->id, sdrr->type,sdrr->raw); in sdrr_get_records()
268 if (queue->head == NULL) in sdrr_get_records()
269 queue->head = sdrr; in sdrr_get_records()
271 queue->tail->next = sdrr; in sdrr_get_records()
272 queue->tail = sdrr; in sdrr_get_records()
281 int rc; in sdr_copy_to_sdrr() local
288 intf->target_addr = from_addr; in sdr_copy_to_sdrr()
295 printf("Load SDRs from 0x%x\n", from_addr); in sdr_copy_to_sdrr()
296 rc = sdrr_get_records(intf, itr, &sdrr_queue); in sdr_copy_to_sdrr()
301 intf->target_addr = to_addr; in sdr_copy_to_sdrr()
303 sdrr_next = sdrr->next; in sdr_copy_to_sdrr()
304 rc = ipmi_sdr_add_record(intf, sdrr); in sdr_copy_to_sdrr()
305 if(rc < 0){ in sdr_copy_to_sdrr()
306 lprintf(LOG_ERR, "Cannot add SDR ID 0x%04x to repository...", sdrr->id); in sdr_copy_to_sdrr()
311 return rc; in sdr_copy_to_sdrr()
318 int rc = 0; in ipmi_sdr_add_from_sensors() local
320 int myaddr = intf->target_addr; in ipmi_sdr_add_from_sensors()
324 return -1; in ipmi_sdr_add_from_sensors()
327 /* First fill the SDRR from local built-in sensors */ in ipmi_sdr_add_from_sensors()
328 rc = sdr_copy_to_sdrr(intf, 1, myaddr, myaddr); in ipmi_sdr_add_from_sensors()
337 rc = -1; in ipmi_sdr_add_from_sensors()
341 return rc; in ipmi_sdr_add_from_sensors()
346 int rc = -1; in ipmi_hex_to_dec() local
354 (strchar[1] == 'x') in ipmi_hex_to_dec()
357 rc = 0; in ipmi_hex_to_dec()
361 retValue += ((strchar[2]-'0') * 16); in ipmi_hex_to_dec()
365 retValue += (((strchar[2]-'a') + 10) * 16); in ipmi_hex_to_dec()
369 retValue += (((strchar[2]-'A') + 10) * 16); in ipmi_hex_to_dec()
373 rc = -1; in ipmi_hex_to_dec()
378 retValue += ((strchar[3]-'0')); in ipmi_hex_to_dec()
382 retValue += (((strchar[3]-'a') + 10)); in ipmi_hex_to_dec()
386 retValue += (((strchar[3]-'A') + 10)); in ipmi_hex_to_dec()
390 rc = -1; in ipmi_hex_to_dec()
394 if(rc == 0) in ipmi_hex_to_dec()
403 return rc; in ipmi_hex_to_dec()
411 int rc = -1; in ipmi_parse_range_list() local
421 return rc; in ipmi_parse_range_list()
431 rc = 0; in ipmi_parse_range_list()
447 rangeString = strstr( inProcessString, "-" ); in ipmi_parse_range_list()
453 rc = ipmi_hex_to_dec( inProcessString, &decValue); in ipmi_parse_range_list()
455 if(rc == 0) in ipmi_parse_range_list()
477 rc = ipmi_hex_to_dec( inProcessString, &startValue); in ipmi_parse_range_list()
478 if(rc == 0) in ipmi_parse_range_list()
479 rc = ipmi_hex_to_dec( rangeString, &endValue); in ipmi_parse_range_list()
481 if(rc == 0) in ipmi_parse_range_list()
506 }while ((isLast == 0) && (rc == 0)); in ipmi_parse_range_list()
509 return rc; in ipmi_parse_range_list()
515 int rc = 0; in ipmi_sdr_add_from_list() local
517 int myaddr = intf->target_addr; in ipmi_sdr_add_from_list()
525 lprintf(LOG_ERR, "Range - List invalid, cannot be parsed."); in ipmi_sdr_add_from_list()
526 return -1; in ipmi_sdr_add_from_list()
531 printf("List to scan: (Built-in) "); in ipmi_sdr_add_from_list()
534 printf("%02x ", listValue[counter]); in ipmi_sdr_add_from_list()
543 return -1; in ipmi_sdr_add_from_list()
546 /* First fill the SDRR from local built-in sensors */ in ipmi_sdr_add_from_list()
547 printf("Sanning built-in sensors..\n"); in ipmi_sdr_add_from_list()
548 rc = sdr_copy_to_sdrr(intf, 1, myaddr, myaddr); in ipmi_sdr_add_from_list()
553 while((rc == 0) && (listValue[counter] != 0)) in ipmi_sdr_add_from_list()
559 rc = -1; in ipmi_sdr_add_from_list()
565 return rc; in ipmi_sdr_add_from_list()
577 int rc = 0; in ipmi_sdr_read_records() local
581 queue->head = NULL; in ipmi_sdr_read_records()
582 queue->tail = NULL; in ipmi_sdr_read_records()
585 return -1; in ipmi_sdr_read_records()
592 lprintf(LOG_DEBUG, "binHdr[0] (id[MSB]) = 0x%02x", binHdr[0]); in ipmi_sdr_read_records()
593 lprintf(LOG_DEBUG, "binHdr[1] (id[LSB]) = 0x%02x", binHdr[1]); in ipmi_sdr_read_records()
594 lprintf(LOG_DEBUG, "binHdr[2] (version) = 0x%02x", binHdr[2]); in ipmi_sdr_read_records()
595 lprintf(LOG_DEBUG, "binHdr[3] (type) = 0x%02x", binHdr[3]); in ipmi_sdr_read_records()
596 lprintf(LOG_DEBUG, "binHdr[4] (length) = 0x%02x", binHdr[4]); in ipmi_sdr_read_records()
601 rc = -1; in ipmi_sdr_read_records()
604 sdrr->id = (binHdr[1] << 8) | binHdr[0]; // LS Byte first in ipmi_sdr_read_records()
605 sdrr->version = binHdr[2]; in ipmi_sdr_read_records()
606 sdrr->type = binHdr[3]; in ipmi_sdr_read_records()
607 sdrr->length = binHdr[4]; in ipmi_sdr_read_records()
609 if ((sdrr->raw = malloc(sdrr->length)) == NULL) { in ipmi_sdr_read_records()
613 rc = -1; in ipmi_sdr_read_records()
617 if (read(fd, sdrr->raw, sdrr->length) != sdrr->length) { in ipmi_sdr_read_records()
619 free(sdrr->raw); in ipmi_sdr_read_records()
620 sdrr->raw = NULL; in ipmi_sdr_read_records()
623 rc = -1; in ipmi_sdr_read_records()
628 if (queue->head == NULL) in ipmi_sdr_read_records()
629 queue->head = sdrr; in ipmi_sdr_read_records()
631 queue->tail->next = sdrr; in ipmi_sdr_read_records()
632 queue->tail = sdrr; in ipmi_sdr_read_records()
635 return rc; in ipmi_sdr_read_records()
641 int rc; in ipmi_sdr_add_from_file() local
647 rc = ipmi_sdr_read_records(ifile, &sdrr_queue); in ipmi_sdr_add_from_file()
652 return -1; in ipmi_sdr_add_from_file()
657 sdrr_next = sdrr->next; in ipmi_sdr_add_from_file()
658 rc = ipmi_sdr_add_record(intf, sdrr); in ipmi_sdr_add_from_file()
659 if(rc < 0){ in ipmi_sdr_add_from_file()
660 lprintf(LOG_ERR, "Cannot add SDR ID 0x%04x to repository...", sdrr->id); in ipmi_sdr_add_from_file()
665 return rc; in ipmi_sdr_add_from_file()