Lines Matching refs:msg
60 struct ipmi_smi_msg *msg);
424 void (*null_user_handler)(ipmi_smi_t intf, struct ipmi_recv_msg *msg);
504 struct ipmi_recv_msg *msg, *msg2; in free_recv_msg_list() local
506 list_for_each_entry_safe(msg, msg2, q, link) { in free_recv_msg_list()
507 list_del(&msg->link); in free_recv_msg_list()
508 ipmi_free_recv_msg(msg); in free_recv_msg_list()
514 struct ipmi_smi_msg *msg, *msg2; in free_smi_msg_list() local
516 list_for_each_entry_safe(msg, msg2, q, link) { in free_smi_msg_list()
517 list_del(&msg->link); in free_smi_msg_list()
518 ipmi_free_smi_msg(msg); in free_smi_msg_list()
733 static void deliver_response(struct ipmi_recv_msg *msg) in deliver_response() argument
735 if (!msg->user) { in deliver_response()
736 ipmi_smi_t intf = msg->user_msg_data; in deliver_response()
740 intf->null_user_handler(intf, msg); in deliver_response()
746 ipmi_free_recv_msg(msg); in deliver_response()
754 ipmi_user_t user = msg->user; in deliver_response()
755 user->handler->ipmi_recv_hndl(msg, user->handler_data); in deliver_response()
760 deliver_err_response(struct ipmi_recv_msg *msg, int err) in deliver_err_response() argument
762 msg->recv_type = IPMI_RESPONSE_RECV_TYPE; in deliver_err_response()
763 msg->msg_data[0] = err; in deliver_err_response()
764 msg->msg.netfn |= 1; /* Convert to a response. */ in deliver_err_response()
765 msg->msg.data_len = 1; in deliver_err_response()
766 msg->msg.data = msg->msg_data; in deliver_err_response()
767 deliver_response(msg); in deliver_err_response()
839 struct ipmi_recv_msg *msg = intf->seq_table[seq].recv_msg; in intf_find_seq() local
841 if ((msg->addr.channel == channel) && (msg->msg.cmd == cmd) in intf_find_seq()
842 && (msg->msg.netfn == netfn) in intf_find_seq()
843 && (ipmi_addr_equal(addr, &(msg->addr)))) { in intf_find_seq()
844 *recv_msg = msg; in intf_find_seq()
892 struct ipmi_recv_msg *msg = NULL; in intf_err_seq() local
907 msg = ent->recv_msg; in intf_err_seq()
912 if (msg) in intf_err_seq()
913 deliver_err_response(msg, err); in intf_err_seq()
1234 struct ipmi_recv_msg *msg, *msg2; in ipmi_set_gets_events() local
1261 list_for_each_entry_safe(msg, msg2, &intf->waiting_events, link) in ipmi_set_gets_events()
1262 list_move_tail(&msg->link, &msgs); in ipmi_set_gets_events()
1273 list_for_each_entry_safe(msg, msg2, &msgs, link) { in ipmi_set_gets_events()
1274 msg->user = user; in ipmi_set_gets_events()
1276 deliver_response(msg); in ipmi_set_gets_events()
1410 struct kernel_ipmi_msg *msg, in format_ipmb_msg() argument
1427 smi_msg->data[i+4] = (msg->netfn << 2) | (ipmb_addr->lun & 0x3); in format_ipmb_msg()
1431 smi_msg->data[i+8] = msg->cmd; in format_ipmb_msg()
1434 if (msg->data_len > 0) in format_ipmb_msg()
1435 memcpy(&(smi_msg->data[i+9]), msg->data, in format_ipmb_msg()
1436 msg->data_len); in format_ipmb_msg()
1437 smi_msg->data_size = msg->data_len + 9; in format_ipmb_msg()
1454 struct kernel_ipmi_msg *msg, in format_lan_msg() argument
1466 smi_msg->data[5] = (msg->netfn << 2) | (lan_addr->lun & 0x3); in format_lan_msg()
1470 smi_msg->data[9] = msg->cmd; in format_lan_msg()
1473 if (msg->data_len > 0) in format_lan_msg()
1474 memcpy(&(smi_msg->data[10]), msg->data, in format_lan_msg()
1475 msg->data_len); in format_lan_msg()
1476 smi_msg->data_size = msg->data_len + 10; in format_lan_msg()
1539 struct kernel_ipmi_msg *msg, in i_ipmi_request() argument
1588 recv_msg->msg = *msg; in i_ipmi_request()
1593 if (msg->netfn & 1) { in i_ipmi_request()
1608 if ((msg->netfn == IPMI_NETFN_APP_REQUEST) in i_ipmi_request()
1609 && ((msg->cmd == IPMI_SEND_MSG_CMD) in i_ipmi_request()
1610 || (msg->cmd == IPMI_GET_MSG_CMD) in i_ipmi_request()
1611 || (msg->cmd == IPMI_READ_EVENT_MSG_BUFFER_CMD))) { in i_ipmi_request()
1621 if (((msg->netfn == IPMI_NETFN_APP_REQUEST) in i_ipmi_request()
1622 && ((msg->cmd == IPMI_COLD_RESET_CMD) in i_ipmi_request()
1623 || (msg->cmd == IPMI_WARM_RESET_CMD))) in i_ipmi_request()
1624 || (msg->netfn == IPMI_NETFN_FIRMWARE_REQUEST)) { in i_ipmi_request()
1637 if ((msg->data_len + 2) > IPMI_MAX_MSG_LENGTH) { in i_ipmi_request()
1643 smi_msg->data[0] = (msg->netfn << 2) | (smi_addr->lun & 0x3); in i_ipmi_request()
1644 smi_msg->data[1] = msg->cmd; in i_ipmi_request()
1647 if (msg->data_len > 0) in i_ipmi_request()
1648 memcpy(&(smi_msg->data[2]), msg->data, msg->data_len); in i_ipmi_request()
1649 smi_msg->data_size = msg->data_len + 2; in i_ipmi_request()
1695 if ((msg->data_len + 10 + broadcast) > IPMI_MAX_MSG_LENGTH) { in i_ipmi_request()
1710 if (recv_msg->msg.netfn & 0x1) { in i_ipmi_request()
1716 format_ipmb_msg(smi_msg, msg, ipmb_addr, msgid, in i_ipmi_request()
1758 format_ipmb_msg(smi_msg, msg, ipmb_addr, in i_ipmi_request()
1769 recv_msg->msg.data = recv_msg->msg_data; in i_ipmi_request()
1770 recv_msg->msg.data_len = smi_msg->data_size; in i_ipmi_request()
1809 if ((msg->data_len + 12) > IPMI_MAX_MSG_LENGTH) { in i_ipmi_request()
1824 if (recv_msg->msg.netfn & 0x1) { in i_ipmi_request()
1830 format_lan_msg(smi_msg, msg, lan_addr, msgid, in i_ipmi_request()
1871 format_lan_msg(smi_msg, msg, lan_addr, in i_ipmi_request()
1881 recv_msg->msg.data = recv_msg->msg_data; in i_ipmi_request()
1882 recv_msg->msg.data_len = smi_msg->data_size; in i_ipmi_request()
1937 struct kernel_ipmi_msg *msg, in ipmi_request_settime() argument
1955 msg, in ipmi_request_settime()
1969 struct kernel_ipmi_msg *msg, in ipmi_request_supply_msgs() argument
1987 msg, in ipmi_request_supply_msgs()
2581 struct kernel_ipmi_msg msg; in send_guid_cmd() local
2588 msg.netfn = IPMI_NETFN_APP_REQUEST; in send_guid_cmd()
2589 msg.cmd = IPMI_GET_DEVICE_GUID_CMD; in send_guid_cmd()
2590 msg.data = NULL; in send_guid_cmd()
2591 msg.data_len = 0; in send_guid_cmd()
2596 &msg, in send_guid_cmd()
2607 guid_handler(ipmi_smi_t intf, struct ipmi_recv_msg *msg) in guid_handler() argument
2609 if ((msg->addr.addr_type != IPMI_SYSTEM_INTERFACE_ADDR_TYPE) in guid_handler()
2610 || (msg->msg.netfn != IPMI_NETFN_APP_RESPONSE) in guid_handler()
2611 || (msg->msg.cmd != IPMI_GET_DEVICE_GUID_CMD)) in guid_handler()
2615 if (msg->msg.data[0] != 0) { in guid_handler()
2621 if (msg->msg.data_len < 17) { in guid_handler()
2627 msg->msg.data_len); in guid_handler()
2631 memcpy(intf->bmc->guid, msg->msg.data, 16); in guid_handler()
2655 struct kernel_ipmi_msg msg; in send_channel_info_cmd() local
2663 msg.netfn = IPMI_NETFN_APP_REQUEST; in send_channel_info_cmd()
2664 msg.cmd = IPMI_GET_CHANNEL_INFO_CMD; in send_channel_info_cmd()
2665 msg.data = data; in send_channel_info_cmd()
2666 msg.data_len = 1; in send_channel_info_cmd()
2672 &msg, in send_channel_info_cmd()
2683 channel_handler(ipmi_smi_t intf, struct ipmi_recv_msg *msg) in channel_handler() argument
2688 if ((msg->addr.addr_type == IPMI_SYSTEM_INTERFACE_ADDR_TYPE) in channel_handler()
2689 && (msg->msg.netfn == IPMI_NETFN_APP_RESPONSE) in channel_handler()
2690 && (msg->msg.cmd == IPMI_GET_CHANNEL_INFO_CMD)) { in channel_handler()
2692 if (msg->msg.data[0] != 0) { in channel_handler()
2695 if (msg->msg.data[0] == IPMI_INVALID_COMMAND_ERR) { in channel_handler()
2713 if (msg->msg.data_len < 4) { in channel_handler()
2718 intf->channels[chan].medium = msg->msg.data[2] & 0x7f; in channel_handler()
2719 intf->channels[chan].protocol = msg->msg.data[3] & 0x1f; in channel_handler()
2927 struct ipmi_smi_msg *msg, in deliver_smi_err_response() argument
2930 msg->rsp[0] = msg->data[0] | 4; in deliver_smi_err_response()
2931 msg->rsp[1] = msg->data[1]; in deliver_smi_err_response()
2932 msg->rsp[2] = err; in deliver_smi_err_response()
2933 msg->rsp_size = 3; in deliver_smi_err_response()
2935 handle_one_recv_msg(intf, msg); in deliver_smi_err_response()
2942 struct ipmi_smi_msg *msg; in cleanup_smi_msgs() local
2966 msg = list_entry(entry, struct ipmi_smi_msg, link); in cleanup_smi_msgs()
2967 deliver_smi_err_response(intf, msg, IPMI_ERR_UNSPECIFIED); in cleanup_smi_msgs()
3024 struct ipmi_smi_msg *msg) in handle_ipmb_get_msg_rsp() argument
3033 if (msg->rsp_size < 11) { in handle_ipmb_get_msg_rsp()
3039 if (msg->rsp[2] != 0) { in handle_ipmb_get_msg_rsp()
3045 ipmb_addr.slave_addr = msg->rsp[6]; in handle_ipmb_get_msg_rsp()
3046 ipmb_addr.channel = msg->rsp[3] & 0x0f; in handle_ipmb_get_msg_rsp()
3047 ipmb_addr.lun = msg->rsp[7] & 3; in handle_ipmb_get_msg_rsp()
3054 msg->rsp[7] >> 2, in handle_ipmb_get_msg_rsp()
3055 msg->rsp[3] & 0x0f, in handle_ipmb_get_msg_rsp()
3056 msg->rsp[8], in handle_ipmb_get_msg_rsp()
3057 (msg->rsp[4] >> 2) & (~1), in handle_ipmb_get_msg_rsp()
3069 &(msg->rsp[9]), in handle_ipmb_get_msg_rsp()
3070 msg->rsp_size - 9); in handle_ipmb_get_msg_rsp()
3076 recv_msg->msg.netfn = msg->rsp[4] >> 2; in handle_ipmb_get_msg_rsp()
3077 recv_msg->msg.data = recv_msg->msg_data; in handle_ipmb_get_msg_rsp()
3078 recv_msg->msg.data_len = msg->rsp_size - 10; in handle_ipmb_get_msg_rsp()
3087 struct ipmi_smi_msg *msg) in handle_ipmb_get_msg_cmd() argument
3098 if (msg->rsp_size < 10) { in handle_ipmb_get_msg_cmd()
3104 if (msg->rsp[2] != 0) { in handle_ipmb_get_msg_cmd()
3109 netfn = msg->rsp[4] >> 2; in handle_ipmb_get_msg_cmd()
3110 cmd = msg->rsp[8]; in handle_ipmb_get_msg_cmd()
3111 chan = msg->rsp[3] & 0xf; in handle_ipmb_get_msg_cmd()
3126 msg->data[0] = (IPMI_NETFN_APP_REQUEST << 2); in handle_ipmb_get_msg_cmd()
3127 msg->data[1] = IPMI_SEND_MSG_CMD; in handle_ipmb_get_msg_cmd()
3128 msg->data[2] = msg->rsp[3]; in handle_ipmb_get_msg_cmd()
3129 msg->data[3] = msg->rsp[6]; in handle_ipmb_get_msg_cmd()
3130 msg->data[4] = ((netfn + 1) << 2) | (msg->rsp[7] & 0x3); in handle_ipmb_get_msg_cmd()
3131 msg->data[5] = ipmb_checksum(&(msg->data[3]), 2); in handle_ipmb_get_msg_cmd()
3132 msg->data[6] = intf->channels[msg->rsp[3] & 0xf].address; in handle_ipmb_get_msg_cmd()
3134 msg->data[7] = (msg->rsp[7] & 0xfc) | (msg->rsp[4] & 0x3); in handle_ipmb_get_msg_cmd()
3135 msg->data[8] = msg->rsp[8]; /* cmd */ in handle_ipmb_get_msg_cmd()
3136 msg->data[9] = IPMI_INVALID_CMD_COMPLETION_CODE; in handle_ipmb_get_msg_cmd()
3137 msg->data[10] = ipmb_checksum(&(msg->data[6]), 4); in handle_ipmb_get_msg_cmd()
3138 msg->data_size = 11; in handle_ipmb_get_msg_cmd()
3144 for (m = 0; m < msg->data_size; m++) in handle_ipmb_get_msg_cmd()
3145 printk(" %2.2x", msg->data[m]); in handle_ipmb_get_msg_cmd()
3151 smi_send(intf, intf->handlers, msg, 0); in handle_ipmb_get_msg_cmd()
3177 ipmb_addr->slave_addr = msg->rsp[6]; in handle_ipmb_get_msg_cmd()
3178 ipmb_addr->lun = msg->rsp[7] & 3; in handle_ipmb_get_msg_cmd()
3179 ipmb_addr->channel = msg->rsp[3] & 0xf; in handle_ipmb_get_msg_cmd()
3187 recv_msg->msgid = msg->rsp[7] >> 2; in handle_ipmb_get_msg_cmd()
3188 recv_msg->msg.netfn = msg->rsp[4] >> 2; in handle_ipmb_get_msg_cmd()
3189 recv_msg->msg.cmd = msg->rsp[8]; in handle_ipmb_get_msg_cmd()
3190 recv_msg->msg.data = recv_msg->msg_data; in handle_ipmb_get_msg_cmd()
3196 recv_msg->msg.data_len = msg->rsp_size - 10; in handle_ipmb_get_msg_cmd()
3198 &(msg->rsp[9]), in handle_ipmb_get_msg_cmd()
3199 msg->rsp_size - 10); in handle_ipmb_get_msg_cmd()
3208 struct ipmi_smi_msg *msg) in handle_lan_get_msg_rsp() argument
3218 if (msg->rsp_size < 13) { in handle_lan_get_msg_rsp()
3224 if (msg->rsp[2] != 0) { in handle_lan_get_msg_rsp()
3230 lan_addr.session_handle = msg->rsp[4]; in handle_lan_get_msg_rsp()
3231 lan_addr.remote_SWID = msg->rsp[8]; in handle_lan_get_msg_rsp()
3232 lan_addr.local_SWID = msg->rsp[5]; in handle_lan_get_msg_rsp()
3233 lan_addr.channel = msg->rsp[3] & 0x0f; in handle_lan_get_msg_rsp()
3234 lan_addr.privilege = msg->rsp[3] >> 4; in handle_lan_get_msg_rsp()
3235 lan_addr.lun = msg->rsp[9] & 3; in handle_lan_get_msg_rsp()
3242 msg->rsp[9] >> 2, in handle_lan_get_msg_rsp()
3243 msg->rsp[3] & 0x0f, in handle_lan_get_msg_rsp()
3244 msg->rsp[10], in handle_lan_get_msg_rsp()
3245 (msg->rsp[6] >> 2) & (~1), in handle_lan_get_msg_rsp()
3257 &(msg->rsp[11]), in handle_lan_get_msg_rsp()
3258 msg->rsp_size - 11); in handle_lan_get_msg_rsp()
3264 recv_msg->msg.netfn = msg->rsp[6] >> 2; in handle_lan_get_msg_rsp()
3265 recv_msg->msg.data = recv_msg->msg_data; in handle_lan_get_msg_rsp()
3266 recv_msg->msg.data_len = msg->rsp_size - 12; in handle_lan_get_msg_rsp()
3275 struct ipmi_smi_msg *msg) in handle_lan_get_msg_cmd() argument
3286 if (msg->rsp_size < 12) { in handle_lan_get_msg_cmd()
3292 if (msg->rsp[2] != 0) { in handle_lan_get_msg_cmd()
3297 netfn = msg->rsp[6] >> 2; in handle_lan_get_msg_cmd()
3298 cmd = msg->rsp[10]; in handle_lan_get_msg_cmd()
3299 chan = msg->rsp[3] & 0xf; in handle_lan_get_msg_cmd()
3335 lan_addr->session_handle = msg->rsp[4]; in handle_lan_get_msg_cmd()
3336 lan_addr->remote_SWID = msg->rsp[8]; in handle_lan_get_msg_cmd()
3337 lan_addr->local_SWID = msg->rsp[5]; in handle_lan_get_msg_cmd()
3338 lan_addr->lun = msg->rsp[9] & 3; in handle_lan_get_msg_cmd()
3339 lan_addr->channel = msg->rsp[3] & 0xf; in handle_lan_get_msg_cmd()
3340 lan_addr->privilege = msg->rsp[3] >> 4; in handle_lan_get_msg_cmd()
3348 recv_msg->msgid = msg->rsp[9] >> 2; in handle_lan_get_msg_cmd()
3349 recv_msg->msg.netfn = msg->rsp[6] >> 2; in handle_lan_get_msg_cmd()
3350 recv_msg->msg.cmd = msg->rsp[10]; in handle_lan_get_msg_cmd()
3351 recv_msg->msg.data = recv_msg->msg_data; in handle_lan_get_msg_cmd()
3357 recv_msg->msg.data_len = msg->rsp_size - 12; in handle_lan_get_msg_cmd()
3359 &(msg->rsp[11]), in handle_lan_get_msg_cmd()
3360 msg->rsp_size - 12); in handle_lan_get_msg_cmd()
3375 struct ipmi_smi_msg *msg) in handle_oem_get_msg_cmd() argument
3390 if (msg->rsp_size < 4) { in handle_oem_get_msg_cmd()
3396 if (msg->rsp[2] != 0) { in handle_oem_get_msg_cmd()
3405 netfn = msg->rsp[0] >> 2; in handle_oem_get_msg_cmd()
3406 cmd = msg->rsp[1]; in handle_oem_get_msg_cmd()
3407 chan = msg->rsp[3] & 0xf; in handle_oem_get_msg_cmd()
3452 smi_addr->lun = msg->rsp[0] & 3; in handle_oem_get_msg_cmd()
3457 recv_msg->msg.netfn = msg->rsp[0] >> 2; in handle_oem_get_msg_cmd()
3458 recv_msg->msg.cmd = msg->rsp[1]; in handle_oem_get_msg_cmd()
3459 recv_msg->msg.data = recv_msg->msg_data; in handle_oem_get_msg_cmd()
3465 recv_msg->msg.data_len = msg->rsp_size - 4; in handle_oem_get_msg_cmd()
3467 &(msg->rsp[4]), in handle_oem_get_msg_cmd()
3468 msg->rsp_size - 4); in handle_oem_get_msg_cmd()
3477 struct ipmi_smi_msg *msg) in copy_event_into_recv_msg() argument
3485 smi_addr->lun = msg->rsp[0] & 3; in copy_event_into_recv_msg()
3487 recv_msg->msg.netfn = msg->rsp[0] >> 2; in copy_event_into_recv_msg()
3488 recv_msg->msg.cmd = msg->rsp[1]; in copy_event_into_recv_msg()
3489 memcpy(recv_msg->msg_data, &(msg->rsp[3]), msg->rsp_size - 3); in copy_event_into_recv_msg()
3490 recv_msg->msg.data = recv_msg->msg_data; in copy_event_into_recv_msg()
3491 recv_msg->msg.data_len = msg->rsp_size - 3; in copy_event_into_recv_msg()
3495 struct ipmi_smi_msg *msg) in handle_read_event_rsp() argument
3504 if (msg->rsp_size < 19) { in handle_read_event_rsp()
3510 if (msg->rsp[2] != 0) { in handle_read_event_rsp()
3549 copy_event_into_recv_msg(recv_msg, msg); in handle_read_event_rsp()
3578 copy_event_into_recv_msg(recv_msg, msg); in handle_read_event_rsp()
3598 struct ipmi_smi_msg *msg) in handle_bmc_rsp() argument
3603 recv_msg = (struct ipmi_recv_msg *) msg->user_data; in handle_bmc_rsp()
3624 recv_msg->msgid = msg->msgid; in handle_bmc_rsp()
3629 smi_addr->lun = msg->rsp[0] & 3; in handle_bmc_rsp()
3630 recv_msg->msg.netfn = msg->rsp[0] >> 2; in handle_bmc_rsp()
3631 recv_msg->msg.cmd = msg->rsp[1]; in handle_bmc_rsp()
3633 &(msg->rsp[2]), in handle_bmc_rsp()
3634 msg->rsp_size - 2); in handle_bmc_rsp()
3635 recv_msg->msg.data = recv_msg->msg_data; in handle_bmc_rsp()
3636 recv_msg->msg.data_len = msg->rsp_size - 2; in handle_bmc_rsp()
3649 struct ipmi_smi_msg *msg) in handle_one_recv_msg() argument
3657 for (m = 0; m < msg->rsp_size; m++) in handle_one_recv_msg()
3658 printk(" %2.2x", msg->rsp[m]); in handle_one_recv_msg()
3661 if (msg->rsp_size < 2) { in handle_one_recv_msg()
3665 (msg->data[0] >> 2) | 1, msg->data[1], msg->rsp_size); in handle_one_recv_msg()
3668 msg->rsp[0] = msg->data[0] | (1 << 2); in handle_one_recv_msg()
3669 msg->rsp[1] = msg->data[1]; in handle_one_recv_msg()
3670 msg->rsp[2] = IPMI_ERR_UNSPECIFIED; in handle_one_recv_msg()
3671 msg->rsp_size = 3; in handle_one_recv_msg()
3672 } else if (((msg->rsp[0] >> 2) != ((msg->data[0] >> 2) | 1)) in handle_one_recv_msg()
3673 || (msg->rsp[1] != msg->data[1])) { in handle_one_recv_msg()
3680 (msg->data[0] >> 2) | 1, msg->data[1], in handle_one_recv_msg()
3681 msg->rsp[0] >> 2, msg->rsp[1]); in handle_one_recv_msg()
3684 msg->rsp[0] = msg->data[0] | (1 << 2); in handle_one_recv_msg()
3685 msg->rsp[1] = msg->data[1]; in handle_one_recv_msg()
3686 msg->rsp[2] = IPMI_ERR_UNSPECIFIED; in handle_one_recv_msg()
3687 msg->rsp_size = 3; in handle_one_recv_msg()
3690 if ((msg->rsp[0] == ((IPMI_NETFN_APP_REQUEST|1) << 2)) in handle_one_recv_msg()
3691 && (msg->rsp[1] == IPMI_SEND_MSG_CMD) in handle_one_recv_msg()
3692 && (msg->user_data != NULL)) { in handle_one_recv_msg()
3697 struct ipmi_recv_msg *recv_msg = msg->user_data; in handle_one_recv_msg()
3700 if (msg->rsp_size < 2) in handle_one_recv_msg()
3704 chan = msg->data[2] & 0x0f; in handle_one_recv_msg()
3717 recv_msg->msg.data = recv_msg->msg_data; in handle_one_recv_msg()
3718 recv_msg->msg.data_len = 1; in handle_one_recv_msg()
3719 recv_msg->msg_data[0] = msg->rsp[2]; in handle_one_recv_msg()
3721 } else if ((msg->rsp[0] == ((IPMI_NETFN_APP_REQUEST|1) << 2)) in handle_one_recv_msg()
3722 && (msg->rsp[1] == IPMI_GET_MSG_CMD)) { in handle_one_recv_msg()
3724 chan = msg->rsp[3] & 0xf; in handle_one_recv_msg()
3744 if (msg->rsp[4] & 0x04) { in handle_one_recv_msg()
3749 requeue = handle_ipmb_get_msg_rsp(intf, msg); in handle_one_recv_msg()
3755 requeue = handle_ipmb_get_msg_cmd(intf, msg); in handle_one_recv_msg()
3761 if (msg->rsp[6] & 0x04) { in handle_one_recv_msg()
3766 requeue = handle_lan_get_msg_rsp(intf, msg); in handle_one_recv_msg()
3772 requeue = handle_lan_get_msg_cmd(intf, msg); in handle_one_recv_msg()
3783 requeue = handle_oem_get_msg_cmd(intf, msg); in handle_one_recv_msg()
3793 } else if ((msg->rsp[0] == ((IPMI_NETFN_APP_REQUEST|1) << 2)) in handle_one_recv_msg()
3794 && (msg->rsp[1] == IPMI_READ_EVENT_MSG_BUFFER_CMD)) { in handle_one_recv_msg()
3796 requeue = handle_read_event_rsp(intf, msg); in handle_one_recv_msg()
3799 requeue = handle_bmc_rsp(intf, msg); in handle_one_recv_msg()
3903 struct ipmi_smi_msg *msg) in ipmi_smi_msg_received() argument
3908 if ((msg->data_size >= 2) in ipmi_smi_msg_received()
3909 && (msg->data[0] == (IPMI_NETFN_APP_REQUEST << 2)) in ipmi_smi_msg_received()
3910 && (msg->data[1] == IPMI_SEND_MSG_CMD) in ipmi_smi_msg_received()
3911 && (msg->user_data == NULL)) { in ipmi_smi_msg_received()
3929 if ((msg->rsp_size >= 3) && (msg->rsp[2] != 0) in ipmi_smi_msg_received()
3930 && (msg->rsp[2] != IPMI_NODE_BUSY_ERR) in ipmi_smi_msg_received()
3931 && (msg->rsp[2] != IPMI_LOST_ARBITRATION_ERR) in ipmi_smi_msg_received()
3932 && (msg->rsp[2] != IPMI_BUS_ERR) in ipmi_smi_msg_received()
3933 && (msg->rsp[2] != IPMI_NAK_ON_WRITE_ERR)) { in ipmi_smi_msg_received()
3934 int chan = msg->rsp[3] & 0xf; in ipmi_smi_msg_received()
3946 intf_err_seq(intf, msg->msgid, msg->rsp[2]); in ipmi_smi_msg_received()
3949 intf_start_seq_timer(intf, msg->msgid); in ipmi_smi_msg_received()
3952 ipmi_free_smi_msg(msg); in ipmi_smi_msg_received()
3960 list_add_tail(&msg->link, &intf->waiting_rcv_msgs); in ipmi_smi_msg_received()
3972 if (msg == intf->curr_msg) in ipmi_smi_msg_received()
4006 memcpy(smi_msg->data, recv_msg->msg.data, recv_msg->msg.data_len); in smi_from_recv_msg()
4007 smi_msg->data_size = recv_msg->msg.data_len; in smi_from_recv_msg()
4027 struct ipmi_recv_msg *msg; in check_msg_timeout() local
4045 msg = ent->recv_msg; in check_msg_timeout()
4046 list_add_tail(&msg->link, timeouts); in check_msg_timeout()
4106 struct ipmi_recv_msg *msg, *msg2; in ipmi_timeout_handler() local
4124 list_for_each_entry_safe(msg, msg2, &timeouts, link) in ipmi_timeout_handler()
4125 deliver_err_response(msg, IPMI_TIMEOUT_COMPLETION_CODE); in ipmi_timeout_handler()
4216 static void free_smi_msg(struct ipmi_smi_msg *msg) in free_smi_msg() argument
4219 kfree(msg); in free_smi_msg()
4235 static void free_recv_msg(struct ipmi_recv_msg *msg) in free_recv_msg() argument
4238 kfree(msg); in free_recv_msg()
4254 void ipmi_free_recv_msg(struct ipmi_recv_msg *msg) in ipmi_free_recv_msg() argument
4256 if (msg->user) in ipmi_free_recv_msg()
4257 kref_put(&msg->user->refcount, free_user); in ipmi_free_recv_msg()
4258 msg->done(msg); in ipmi_free_recv_msg()
4266 static void dummy_smi_done_handler(struct ipmi_smi_msg *msg) in dummy_smi_done_handler() argument
4271 static void dummy_recv_done_handler(struct ipmi_recv_msg *msg) in dummy_recv_done_handler() argument
4281 struct kernel_ipmi_msg *msg) in ipmi_panic_request_and_wait() argument
4294 msg, in ipmi_panic_request_and_wait()
4312 static void event_receiver_fetcher(ipmi_smi_t intf, struct ipmi_recv_msg *msg) in event_receiver_fetcher() argument
4314 if ((msg->addr.addr_type == IPMI_SYSTEM_INTERFACE_ADDR_TYPE) in event_receiver_fetcher()
4315 && (msg->msg.netfn == IPMI_NETFN_SENSOR_EVENT_RESPONSE) in event_receiver_fetcher()
4316 && (msg->msg.cmd == IPMI_GET_EVENT_RECEIVER_CMD) in event_receiver_fetcher()
4317 && (msg->msg.data[0] == IPMI_CC_NO_ERROR)) { in event_receiver_fetcher()
4319 intf->event_receiver = msg->msg.data[1]; in event_receiver_fetcher()
4320 intf->event_receiver_lun = msg->msg.data[2] & 0x3; in event_receiver_fetcher()
4324 static void device_id_fetcher(ipmi_smi_t intf, struct ipmi_recv_msg *msg) in device_id_fetcher() argument
4326 if ((msg->addr.addr_type == IPMI_SYSTEM_INTERFACE_ADDR_TYPE) in device_id_fetcher()
4327 && (msg->msg.netfn == IPMI_NETFN_APP_RESPONSE) in device_id_fetcher()
4328 && (msg->msg.cmd == IPMI_GET_DEVICE_ID_CMD) in device_id_fetcher()
4329 && (msg->msg.data[0] == IPMI_CC_NO_ERROR)) { in device_id_fetcher()
4334 intf->local_sel_device = (msg->msg.data[6] >> 2) & 1; in device_id_fetcher()
4335 intf->local_event_generator = (msg->msg.data[6] >> 5) & 1; in device_id_fetcher()
4342 struct kernel_ipmi_msg msg; in send_panic_events() local
4354 msg.netfn = 0x04; /* Sensor or Event. */ in send_panic_events()
4355 msg.cmd = 2; /* Platform event command. */ in send_panic_events()
4356 msg.data = data; in send_panic_events()
4357 msg.data_len = 8; in send_panic_events()
4381 ipmi_panic_request_and_wait(intf, &addr, &msg); in send_panic_events()
4424 msg.netfn = IPMI_NETFN_APP_REQUEST; in send_panic_events()
4425 msg.cmd = IPMI_GET_DEVICE_ID_CMD; in send_panic_events()
4426 msg.data = NULL; in send_panic_events()
4427 msg.data_len = 0; in send_panic_events()
4429 ipmi_panic_request_and_wait(intf, &addr, &msg); in send_panic_events()
4433 msg.netfn = IPMI_NETFN_SENSOR_EVENT_REQUEST; in send_panic_events()
4434 msg.cmd = IPMI_GET_EVENT_RECEIVER_CMD; in send_panic_events()
4435 msg.data = NULL; in send_panic_events()
4436 msg.data_len = 0; in send_panic_events()
4438 ipmi_panic_request_and_wait(intf, &addr, &msg); in send_panic_events()
4472 msg.netfn = IPMI_NETFN_STORAGE_REQUEST; /* Storage. */ in send_panic_events()
4473 msg.cmd = IPMI_ADD_SEL_ENTRY_CMD; in send_panic_events()
4474 msg.data = data; in send_panic_events()
4475 msg.data_len = 16; in send_panic_events()
4495 ipmi_panic_request_and_wait(intf, &addr, &msg); in send_panic_events()