Lines Matching +full:ipmi +full:- +full:smic

22  * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED.
45 #include <ipmitool/ipmi.h>
62 # include <linux/ipmi.h>
64 /* FreeBSD OpenIPMI-compatible header */
65 # include <sys/ipmi.h>
71 * Maximum input message size for KCS/SMIC is 40 with 2 utility bytes and
79 * Maximum output message size for KCS/SMIC is 38 with 2 utility bytes, a byte
98 devnum = intf->devnum; in ipmi_openipmi_open()
100 sprintf(ipmi_dev, "/dev/ipmi%d", devnum); in ipmi_openipmi_open()
101 sprintf(ipmi_devfs, "/dev/ipmi/%d", devnum); in ipmi_openipmi_open()
103 lprintf(LOG_DEBUG, "Using ipmi device %d", devnum); in ipmi_openipmi_open()
105 intf->fd = open(ipmi_dev, O_RDWR); in ipmi_openipmi_open()
107 if (intf->fd < 0) { in ipmi_openipmi_open()
108 intf->fd = open(ipmi_devfs, O_RDWR); in ipmi_openipmi_open()
109 if (intf->fd < 0) { in ipmi_openipmi_open()
110 intf->fd = open(ipmi_devfs2, O_RDWR); in ipmi_openipmi_open()
112 if (intf->fd < 0) { in ipmi_openipmi_open()
115 return -1; in ipmi_openipmi_open()
119 if (ioctl(intf->fd, IPMICTL_SET_GETS_EVENTS_CMD, &i) < 0) { in ipmi_openipmi_open()
121 return -1; in ipmi_openipmi_open()
124 intf->opened = 1; in ipmi_openipmi_open()
127 if (intf->my_addr != 0) { in ipmi_openipmi_open()
128 if (intf->set_my_addr(intf, intf->my_addr) < 0) { in ipmi_openipmi_open()
130 return -1; in ipmi_openipmi_open()
133 intf->my_addr ); in ipmi_openipmi_open()
136 intf->manufacturer_id = ipmi_get_oem(intf); in ipmi_openipmi_open()
137 return intf->fd; in ipmi_openipmi_open()
143 if (ioctl(intf->fd, IPMICTL_SET_MY_ADDRESS_CMD, &a) < 0) { in ipmi_openipmi_set_my_addr()
145 return -1; in ipmi_openipmi_set_my_addr()
147 intf->my_addr = addr; in ipmi_openipmi_set_my_addr()
154 if (intf->fd >= 0) { in ipmi_openipmi_close()
155 close(intf->fd); in ipmi_openipmi_close()
156 intf->fd = -1; in ipmi_openipmi_close()
159 intf->opened = 0; in ipmi_openipmi_close()
160 intf->manufacturer_id = IPMI_OEM_UNKNOWN; in ipmi_openipmi_close()
187 ipmb_addr.channel = intf->target_channel & 0x0f; in ipmi_openipmi_send_cmd()
189 if (intf->opened == 0 && intf->open != NULL) in ipmi_openipmi_send_cmd()
190 if (intf->open(intf) < 0) in ipmi_openipmi_send_cmd()
195 fprintf(stderr, " netfn = 0x%x\n", req->msg.netfn ); in ipmi_openipmi_send_cmd()
196 fprintf(stderr, " cmd = 0x%x\n", req->msg.cmd); in ipmi_openipmi_send_cmd()
197 printbuf(req->msg.data, req->msg.data_len, "OpenIPMI Request Message Data"); in ipmi_openipmi_send_cmd()
208 if (intf->target_addr != 0 && in ipmi_openipmi_send_cmd()
209 intf->target_addr != intf->my_addr) { in ipmi_openipmi_send_cmd()
211 ipmb_addr.slave_addr = intf->target_addr; in ipmi_openipmi_send_cmd()
212 ipmb_addr.lun = req->msg.lun; in ipmi_openipmi_send_cmd()
215 req->msg.cmd, in ipmi_openipmi_send_cmd()
216 intf->target_addr,intf->target_channel, intf->my_addr); in ipmi_openipmi_send_cmd()
218 if(intf->transit_addr != 0 && intf->transit_addr != intf->my_addr) { in ipmi_openipmi_send_cmd()
223 (0x40 | intf->target_channel), in ipmi_openipmi_send_cmd()
224 intf->target_addr, in ipmi_openipmi_send_cmd()
225 intf->transit_channel, in ipmi_openipmi_send_cmd()
226 intf->transit_addr, in ipmi_openipmi_send_cmd()
227 intf->my_addr in ipmi_openipmi_send_cmd()
235 fprintf(stderr, " netfn = 0x%x\n", req->msg.netfn ); in ipmi_openipmi_send_cmd()
236 fprintf(stderr, " cmd = 0x%x\n", req->msg.cmd); in ipmi_openipmi_send_cmd()
237 if (req->msg.data && req->msg.data_len) { in ipmi_openipmi_send_cmd()
238 fprintf(stderr, " data_len = %d\n", req->msg.data_len); in ipmi_openipmi_send_cmd()
240 buf2str(req->msg.data,req->msg.data_len)); in ipmi_openipmi_send_cmd()
245 ipmb_addr.slave_addr = intf->transit_addr; in ipmi_openipmi_send_cmd()
246 ipmb_addr.channel = intf->transit_channel; in ipmi_openipmi_send_cmd()
249 data_len = req->msg.data_len + 8; in ipmi_openipmi_send_cmd()
258 data[index++] = (0x40|intf->target_channel); in ipmi_openipmi_send_cmd()
259 data[index++] = intf->target_addr; in ipmi_openipmi_send_cmd()
260 data[index++] = ( req->msg.netfn << 2 ) | req->msg.lun ; in ipmi_openipmi_send_cmd()
264 data[index++] = req->msg.cmd; in ipmi_openipmi_send_cmd()
265 memcpy( (data+index) , req->msg.data, req->msg.data_len); in ipmi_openipmi_send_cmd()
266 index += req->msg.data_len; in ipmi_openipmi_send_cmd()
267 data[index++] = ipmi_csum( (data+4),(req->msg.data_len + 3) ); in ipmi_openipmi_send_cmd()
285 "System Interface", req->msg.cmd); in ipmi_openipmi_send_cmd()
286 bmc_addr.lun = req->msg.lun; in ipmi_openipmi_send_cmd()
301 _req.msg.data = req->msg.data; in ipmi_openipmi_send_cmd()
302 _req.msg.data_len = req->msg.data_len; in ipmi_openipmi_send_cmd()
303 _req.msg.netfn = req->msg.netfn; in ipmi_openipmi_send_cmd()
304 _req.msg.cmd = req->msg.cmd; in ipmi_openipmi_send_cmd()
307 if (ioctl(intf->fd, IPMICTL_SEND_COMMAND, &_req) < 0) { in ipmi_openipmi_send_cmd()
320 if (intf->noanswer) { in ipmi_openipmi_send_cmd()
329 FD_SET(intf->fd, &rset); in ipmi_openipmi_send_cmd()
331 if (select(intf->fd+1, &rset, NULL, NULL, NULL) < 0) { in ipmi_openipmi_send_cmd()
339 if (FD_ISSET(intf->fd, &rset) == 0) { in ipmi_openipmi_send_cmd()
354 if (ioctl(intf->fd, IPMICTL_RECEIVE_MSG_TRUNC, &recv) < 0) { in ipmi_openipmi_send_cmd()
379 if(intf->transit_addr != 0 && intf->transit_addr != intf->my_addr) { in ipmi_openipmi_send_cmd()
380 /* ipmb_addr.transit_slave_addr = intf->transit_addr; */ in ipmi_openipmi_send_cmd()
382 "IPMB target @ 0x%x", intf->transit_addr); in ipmi_openipmi_send_cmd()
391 recv.msg.data = memmove(recv.msg.data ,recv.msg.data+7 , recv.msg.data_len - 7); in ipmi_openipmi_send_cmd()
392 recv.msg.data_len -=8; in ipmi_openipmi_send_cmd()
409 rsp.data_len = recv.msg.data_len - 1; in ipmi_openipmi_send_cmd()
428 intf->max_request_data_size = IPMI_OPENIPMI_MAX_RQ_DATA_SIZE; in ipmi_openipmi_setup()
429 intf->max_response_data_size = IPMI_OPENIPMI_MAX_RS_DATA_SIZE; in ipmi_openipmi_setup()
443 .target_addr = 0, /* init so -m local_addr does not cause bridging */