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()
748 ipmi_user_t user = msg->user; in deliver_response()
749 user->handler->ipmi_recv_hndl(msg, user->handler_data); in deliver_response()
754 deliver_err_response(struct ipmi_recv_msg *msg, int err) in deliver_err_response() argument
756 msg->recv_type = IPMI_RESPONSE_RECV_TYPE; in deliver_err_response()
757 msg->msg_data[0] = err; in deliver_err_response()
758 msg->msg.netfn |= 1; /* Convert to a response. */ in deliver_err_response()
759 msg->msg.data_len = 1; in deliver_err_response()
760 msg->msg.data = msg->msg_data; in deliver_err_response()
761 deliver_response(msg); in deliver_err_response()
833 struct ipmi_recv_msg *msg = intf->seq_table[seq].recv_msg; in intf_find_seq() local
835 if ((msg->addr.channel == channel) && (msg->msg.cmd == cmd) in intf_find_seq()
836 && (msg->msg.netfn == netfn) in intf_find_seq()
837 && (ipmi_addr_equal(addr, &(msg->addr)))) { in intf_find_seq()
838 *recv_msg = msg; in intf_find_seq()
886 struct ipmi_recv_msg *msg = NULL; in intf_err_seq() local
901 msg = ent->recv_msg; in intf_err_seq()
906 if (msg) in intf_err_seq()
907 deliver_err_response(msg, err); in intf_err_seq()
1228 struct ipmi_recv_msg *msg, *msg2; in ipmi_set_gets_events() local
1255 list_for_each_entry_safe(msg, msg2, &intf->waiting_events, link) in ipmi_set_gets_events()
1256 list_move_tail(&msg->link, &msgs); in ipmi_set_gets_events()
1267 list_for_each_entry_safe(msg, msg2, &msgs, link) { in ipmi_set_gets_events()
1268 msg->user = user; in ipmi_set_gets_events()
1270 deliver_response(msg); in ipmi_set_gets_events()
1404 struct kernel_ipmi_msg *msg, in format_ipmb_msg() argument
1421 smi_msg->data[i+4] = (msg->netfn << 2) | (ipmb_addr->lun & 0x3); in format_ipmb_msg()
1425 smi_msg->data[i+8] = msg->cmd; in format_ipmb_msg()
1428 if (msg->data_len > 0) in format_ipmb_msg()
1429 memcpy(&(smi_msg->data[i+9]), msg->data, in format_ipmb_msg()
1430 msg->data_len); in format_ipmb_msg()
1431 smi_msg->data_size = msg->data_len + 9; in format_ipmb_msg()
1448 struct kernel_ipmi_msg *msg, in format_lan_msg() argument
1460 smi_msg->data[5] = (msg->netfn << 2) | (lan_addr->lun & 0x3); in format_lan_msg()
1464 smi_msg->data[9] = msg->cmd; in format_lan_msg()
1467 if (msg->data_len > 0) in format_lan_msg()
1468 memcpy(&(smi_msg->data[10]), msg->data, in format_lan_msg()
1469 msg->data_len); in format_lan_msg()
1470 smi_msg->data_size = msg->data_len + 10; in format_lan_msg()
1533 struct kernel_ipmi_msg *msg, in i_ipmi_request() argument
1582 recv_msg->msg = *msg; in i_ipmi_request()
1587 if (msg->netfn & 1) { in i_ipmi_request()
1602 if ((msg->netfn == IPMI_NETFN_APP_REQUEST) in i_ipmi_request()
1603 && ((msg->cmd == IPMI_SEND_MSG_CMD) in i_ipmi_request()
1604 || (msg->cmd == IPMI_GET_MSG_CMD) in i_ipmi_request()
1605 || (msg->cmd == IPMI_READ_EVENT_MSG_BUFFER_CMD))) { in i_ipmi_request()
1615 if (((msg->netfn == IPMI_NETFN_APP_REQUEST) in i_ipmi_request()
1616 && ((msg->cmd == IPMI_COLD_RESET_CMD) in i_ipmi_request()
1617 || (msg->cmd == IPMI_WARM_RESET_CMD))) in i_ipmi_request()
1618 || (msg->netfn == IPMI_NETFN_FIRMWARE_REQUEST)) { in i_ipmi_request()
1631 if ((msg->data_len + 2) > IPMI_MAX_MSG_LENGTH) { in i_ipmi_request()
1637 smi_msg->data[0] = (msg->netfn << 2) | (smi_addr->lun & 0x3); in i_ipmi_request()
1638 smi_msg->data[1] = msg->cmd; in i_ipmi_request()
1641 if (msg->data_len > 0) in i_ipmi_request()
1642 memcpy(&(smi_msg->data[2]), msg->data, msg->data_len); in i_ipmi_request()
1643 smi_msg->data_size = msg->data_len + 2; in i_ipmi_request()
1689 if ((msg->data_len + 10 + broadcast) > IPMI_MAX_MSG_LENGTH) { in i_ipmi_request()
1704 if (recv_msg->msg.netfn & 0x1) { in i_ipmi_request()
1710 format_ipmb_msg(smi_msg, msg, ipmb_addr, msgid, in i_ipmi_request()
1752 format_ipmb_msg(smi_msg, msg, ipmb_addr, in i_ipmi_request()
1763 recv_msg->msg.data = recv_msg->msg_data; in i_ipmi_request()
1764 recv_msg->msg.data_len = smi_msg->data_size; in i_ipmi_request()
1803 if ((msg->data_len + 12) > IPMI_MAX_MSG_LENGTH) { in i_ipmi_request()
1818 if (recv_msg->msg.netfn & 0x1) { in i_ipmi_request()
1824 format_lan_msg(smi_msg, msg, lan_addr, msgid, in i_ipmi_request()
1865 format_lan_msg(smi_msg, msg, lan_addr, in i_ipmi_request()
1875 recv_msg->msg.data = recv_msg->msg_data; in i_ipmi_request()
1876 recv_msg->msg.data_len = smi_msg->data_size; in i_ipmi_request()
1931 struct kernel_ipmi_msg *msg, in ipmi_request_settime() argument
1949 msg, in ipmi_request_settime()
1963 struct kernel_ipmi_msg *msg, in ipmi_request_supply_msgs() argument
1981 msg, in ipmi_request_supply_msgs()
2575 struct kernel_ipmi_msg msg; in send_guid_cmd() local
2582 msg.netfn = IPMI_NETFN_APP_REQUEST; in send_guid_cmd()
2583 msg.cmd = IPMI_GET_DEVICE_GUID_CMD; in send_guid_cmd()
2584 msg.data = NULL; in send_guid_cmd()
2585 msg.data_len = 0; in send_guid_cmd()
2590 &msg, in send_guid_cmd()
2601 guid_handler(ipmi_smi_t intf, struct ipmi_recv_msg *msg) in guid_handler() argument
2603 if ((msg->addr.addr_type != IPMI_SYSTEM_INTERFACE_ADDR_TYPE) in guid_handler()
2604 || (msg->msg.netfn != IPMI_NETFN_APP_RESPONSE) in guid_handler()
2605 || (msg->msg.cmd != IPMI_GET_DEVICE_GUID_CMD)) in guid_handler()
2609 if (msg->msg.data[0] != 0) { in guid_handler()
2615 if (msg->msg.data_len < 17) { in guid_handler()
2621 msg->msg.data_len); in guid_handler()
2625 memcpy(intf->bmc->guid, msg->msg.data, 16); in guid_handler()
2649 struct kernel_ipmi_msg msg; in send_channel_info_cmd() local
2657 msg.netfn = IPMI_NETFN_APP_REQUEST; in send_channel_info_cmd()
2658 msg.cmd = IPMI_GET_CHANNEL_INFO_CMD; in send_channel_info_cmd()
2659 msg.data = data; in send_channel_info_cmd()
2660 msg.data_len = 1; in send_channel_info_cmd()
2666 &msg, in send_channel_info_cmd()
2677 channel_handler(ipmi_smi_t intf, struct ipmi_recv_msg *msg) in channel_handler() argument
2682 if ((msg->addr.addr_type == IPMI_SYSTEM_INTERFACE_ADDR_TYPE) in channel_handler()
2683 && (msg->msg.netfn == IPMI_NETFN_APP_RESPONSE) in channel_handler()
2684 && (msg->msg.cmd == IPMI_GET_CHANNEL_INFO_CMD)) { in channel_handler()
2686 if (msg->msg.data[0] != 0) { in channel_handler()
2689 if (msg->msg.data[0] == IPMI_INVALID_COMMAND_ERR) { in channel_handler()
2707 if (msg->msg.data_len < 4) { in channel_handler()
2712 intf->channels[chan].medium = msg->msg.data[2] & 0x7f; in channel_handler()
2713 intf->channels[chan].protocol = msg->msg.data[3] & 0x1f; in channel_handler()
2921 struct ipmi_smi_msg *msg, in deliver_smi_err_response() argument
2924 msg->rsp[0] = msg->data[0] | 4; in deliver_smi_err_response()
2925 msg->rsp[1] = msg->data[1]; in deliver_smi_err_response()
2926 msg->rsp[2] = err; in deliver_smi_err_response()
2927 msg->rsp_size = 3; in deliver_smi_err_response()
2929 handle_one_recv_msg(intf, msg); in deliver_smi_err_response()
2936 struct ipmi_smi_msg *msg; in cleanup_smi_msgs() local
2960 msg = list_entry(entry, struct ipmi_smi_msg, link); in cleanup_smi_msgs()
2961 deliver_smi_err_response(intf, msg, IPMI_ERR_UNSPECIFIED); in cleanup_smi_msgs()
3018 struct ipmi_smi_msg *msg) in handle_ipmb_get_msg_rsp() argument
3027 if (msg->rsp_size < 11) { in handle_ipmb_get_msg_rsp()
3033 if (msg->rsp[2] != 0) { in handle_ipmb_get_msg_rsp()
3039 ipmb_addr.slave_addr = msg->rsp[6]; in handle_ipmb_get_msg_rsp()
3040 ipmb_addr.channel = msg->rsp[3] & 0x0f; in handle_ipmb_get_msg_rsp()
3041 ipmb_addr.lun = msg->rsp[7] & 3; in handle_ipmb_get_msg_rsp()
3048 msg->rsp[7] >> 2, in handle_ipmb_get_msg_rsp()
3049 msg->rsp[3] & 0x0f, in handle_ipmb_get_msg_rsp()
3050 msg->rsp[8], in handle_ipmb_get_msg_rsp()
3051 (msg->rsp[4] >> 2) & (~1), in handle_ipmb_get_msg_rsp()
3063 &(msg->rsp[9]), in handle_ipmb_get_msg_rsp()
3064 msg->rsp_size - 9); in handle_ipmb_get_msg_rsp()
3070 recv_msg->msg.netfn = msg->rsp[4] >> 2; in handle_ipmb_get_msg_rsp()
3071 recv_msg->msg.data = recv_msg->msg_data; in handle_ipmb_get_msg_rsp()
3072 recv_msg->msg.data_len = msg->rsp_size - 10; in handle_ipmb_get_msg_rsp()
3081 struct ipmi_smi_msg *msg) in handle_ipmb_get_msg_cmd() argument
3092 if (msg->rsp_size < 10) { in handle_ipmb_get_msg_cmd()
3098 if (msg->rsp[2] != 0) { in handle_ipmb_get_msg_cmd()
3103 netfn = msg->rsp[4] >> 2; in handle_ipmb_get_msg_cmd()
3104 cmd = msg->rsp[8]; in handle_ipmb_get_msg_cmd()
3105 chan = msg->rsp[3] & 0xf; in handle_ipmb_get_msg_cmd()
3120 msg->data[0] = (IPMI_NETFN_APP_REQUEST << 2); in handle_ipmb_get_msg_cmd()
3121 msg->data[1] = IPMI_SEND_MSG_CMD; in handle_ipmb_get_msg_cmd()
3122 msg->data[2] = msg->rsp[3]; in handle_ipmb_get_msg_cmd()
3123 msg->data[3] = msg->rsp[6]; in handle_ipmb_get_msg_cmd()
3124 msg->data[4] = ((netfn + 1) << 2) | (msg->rsp[7] & 0x3); in handle_ipmb_get_msg_cmd()
3125 msg->data[5] = ipmb_checksum(&(msg->data[3]), 2); in handle_ipmb_get_msg_cmd()
3126 msg->data[6] = intf->channels[msg->rsp[3] & 0xf].address; in handle_ipmb_get_msg_cmd()
3128 msg->data[7] = (msg->rsp[7] & 0xfc) | (msg->rsp[4] & 0x3); in handle_ipmb_get_msg_cmd()
3129 msg->data[8] = msg->rsp[8]; /* cmd */ in handle_ipmb_get_msg_cmd()
3130 msg->data[9] = IPMI_INVALID_CMD_COMPLETION_CODE; in handle_ipmb_get_msg_cmd()
3131 msg->data[10] = ipmb_checksum(&(msg->data[6]), 4); in handle_ipmb_get_msg_cmd()
3132 msg->data_size = 11; in handle_ipmb_get_msg_cmd()
3138 for (m = 0; m < msg->data_size; m++) in handle_ipmb_get_msg_cmd()
3139 printk(" %2.2x", msg->data[m]); in handle_ipmb_get_msg_cmd()
3145 smi_send(intf, intf->handlers, msg, 0); in handle_ipmb_get_msg_cmd()
3171 ipmb_addr->slave_addr = msg->rsp[6]; in handle_ipmb_get_msg_cmd()
3172 ipmb_addr->lun = msg->rsp[7] & 3; in handle_ipmb_get_msg_cmd()
3173 ipmb_addr->channel = msg->rsp[3] & 0xf; in handle_ipmb_get_msg_cmd()
3181 recv_msg->msgid = msg->rsp[7] >> 2; in handle_ipmb_get_msg_cmd()
3182 recv_msg->msg.netfn = msg->rsp[4] >> 2; in handle_ipmb_get_msg_cmd()
3183 recv_msg->msg.cmd = msg->rsp[8]; in handle_ipmb_get_msg_cmd()
3184 recv_msg->msg.data = recv_msg->msg_data; in handle_ipmb_get_msg_cmd()
3190 recv_msg->msg.data_len = msg->rsp_size - 10; in handle_ipmb_get_msg_cmd()
3192 &(msg->rsp[9]), in handle_ipmb_get_msg_cmd()
3193 msg->rsp_size - 10); in handle_ipmb_get_msg_cmd()
3202 struct ipmi_smi_msg *msg) in handle_lan_get_msg_rsp() argument
3212 if (msg->rsp_size < 13) { in handle_lan_get_msg_rsp()
3218 if (msg->rsp[2] != 0) { in handle_lan_get_msg_rsp()
3224 lan_addr.session_handle = msg->rsp[4]; in handle_lan_get_msg_rsp()
3225 lan_addr.remote_SWID = msg->rsp[8]; in handle_lan_get_msg_rsp()
3226 lan_addr.local_SWID = msg->rsp[5]; in handle_lan_get_msg_rsp()
3227 lan_addr.channel = msg->rsp[3] & 0x0f; in handle_lan_get_msg_rsp()
3228 lan_addr.privilege = msg->rsp[3] >> 4; in handle_lan_get_msg_rsp()
3229 lan_addr.lun = msg->rsp[9] & 3; in handle_lan_get_msg_rsp()
3236 msg->rsp[9] >> 2, in handle_lan_get_msg_rsp()
3237 msg->rsp[3] & 0x0f, in handle_lan_get_msg_rsp()
3238 msg->rsp[10], in handle_lan_get_msg_rsp()
3239 (msg->rsp[6] >> 2) & (~1), in handle_lan_get_msg_rsp()
3251 &(msg->rsp[11]), in handle_lan_get_msg_rsp()
3252 msg->rsp_size - 11); in handle_lan_get_msg_rsp()
3258 recv_msg->msg.netfn = msg->rsp[6] >> 2; in handle_lan_get_msg_rsp()
3259 recv_msg->msg.data = recv_msg->msg_data; in handle_lan_get_msg_rsp()
3260 recv_msg->msg.data_len = msg->rsp_size - 12; in handle_lan_get_msg_rsp()
3269 struct ipmi_smi_msg *msg) in handle_lan_get_msg_cmd() argument
3280 if (msg->rsp_size < 12) { in handle_lan_get_msg_cmd()
3286 if (msg->rsp[2] != 0) { in handle_lan_get_msg_cmd()
3291 netfn = msg->rsp[6] >> 2; in handle_lan_get_msg_cmd()
3292 cmd = msg->rsp[10]; in handle_lan_get_msg_cmd()
3293 chan = msg->rsp[3] & 0xf; in handle_lan_get_msg_cmd()
3329 lan_addr->session_handle = msg->rsp[4]; in handle_lan_get_msg_cmd()
3330 lan_addr->remote_SWID = msg->rsp[8]; in handle_lan_get_msg_cmd()
3331 lan_addr->local_SWID = msg->rsp[5]; in handle_lan_get_msg_cmd()
3332 lan_addr->lun = msg->rsp[9] & 3; in handle_lan_get_msg_cmd()
3333 lan_addr->channel = msg->rsp[3] & 0xf; in handle_lan_get_msg_cmd()
3334 lan_addr->privilege = msg->rsp[3] >> 4; in handle_lan_get_msg_cmd()
3342 recv_msg->msgid = msg->rsp[9] >> 2; in handle_lan_get_msg_cmd()
3343 recv_msg->msg.netfn = msg->rsp[6] >> 2; in handle_lan_get_msg_cmd()
3344 recv_msg->msg.cmd = msg->rsp[10]; in handle_lan_get_msg_cmd()
3345 recv_msg->msg.data = recv_msg->msg_data; in handle_lan_get_msg_cmd()
3351 recv_msg->msg.data_len = msg->rsp_size - 12; in handle_lan_get_msg_cmd()
3353 &(msg->rsp[11]), in handle_lan_get_msg_cmd()
3354 msg->rsp_size - 12); in handle_lan_get_msg_cmd()
3369 struct ipmi_smi_msg *msg) in handle_oem_get_msg_cmd() argument
3384 if (msg->rsp_size < 4) { in handle_oem_get_msg_cmd()
3390 if (msg->rsp[2] != 0) { in handle_oem_get_msg_cmd()
3399 netfn = msg->rsp[0] >> 2; in handle_oem_get_msg_cmd()
3400 cmd = msg->rsp[1]; in handle_oem_get_msg_cmd()
3401 chan = msg->rsp[3] & 0xf; in handle_oem_get_msg_cmd()
3446 smi_addr->lun = msg->rsp[0] & 3; in handle_oem_get_msg_cmd()
3451 recv_msg->msg.netfn = msg->rsp[0] >> 2; in handle_oem_get_msg_cmd()
3452 recv_msg->msg.cmd = msg->rsp[1]; in handle_oem_get_msg_cmd()
3453 recv_msg->msg.data = recv_msg->msg_data; in handle_oem_get_msg_cmd()
3459 recv_msg->msg.data_len = msg->rsp_size - 4; in handle_oem_get_msg_cmd()
3461 &(msg->rsp[4]), in handle_oem_get_msg_cmd()
3462 msg->rsp_size - 4); in handle_oem_get_msg_cmd()
3471 struct ipmi_smi_msg *msg) in copy_event_into_recv_msg() argument
3479 smi_addr->lun = msg->rsp[0] & 3; in copy_event_into_recv_msg()
3481 recv_msg->msg.netfn = msg->rsp[0] >> 2; in copy_event_into_recv_msg()
3482 recv_msg->msg.cmd = msg->rsp[1]; in copy_event_into_recv_msg()
3483 memcpy(recv_msg->msg_data, &(msg->rsp[3]), msg->rsp_size - 3); in copy_event_into_recv_msg()
3484 recv_msg->msg.data = recv_msg->msg_data; in copy_event_into_recv_msg()
3485 recv_msg->msg.data_len = msg->rsp_size - 3; in copy_event_into_recv_msg()
3489 struct ipmi_smi_msg *msg) in handle_read_event_rsp() argument
3498 if (msg->rsp_size < 19) { in handle_read_event_rsp()
3504 if (msg->rsp[2] != 0) { in handle_read_event_rsp()
3543 copy_event_into_recv_msg(recv_msg, msg); in handle_read_event_rsp()
3572 copy_event_into_recv_msg(recv_msg, msg); in handle_read_event_rsp()
3592 struct ipmi_smi_msg *msg) in handle_bmc_rsp() argument
3597 recv_msg = (struct ipmi_recv_msg *) msg->user_data; in handle_bmc_rsp()
3618 recv_msg->msgid = msg->msgid; in handle_bmc_rsp()
3623 smi_addr->lun = msg->rsp[0] & 3; in handle_bmc_rsp()
3624 recv_msg->msg.netfn = msg->rsp[0] >> 2; in handle_bmc_rsp()
3625 recv_msg->msg.cmd = msg->rsp[1]; in handle_bmc_rsp()
3627 &(msg->rsp[2]), in handle_bmc_rsp()
3628 msg->rsp_size - 2); in handle_bmc_rsp()
3629 recv_msg->msg.data = recv_msg->msg_data; in handle_bmc_rsp()
3630 recv_msg->msg.data_len = msg->rsp_size - 2; in handle_bmc_rsp()
3643 struct ipmi_smi_msg *msg) in handle_one_recv_msg() argument
3651 for (m = 0; m < msg->rsp_size; m++) in handle_one_recv_msg()
3652 printk(" %2.2x", msg->rsp[m]); in handle_one_recv_msg()
3655 if (msg->rsp_size < 2) { in handle_one_recv_msg()
3659 (msg->data[0] >> 2) | 1, msg->data[1], msg->rsp_size); in handle_one_recv_msg()
3662 msg->rsp[0] = msg->data[0] | (1 << 2); in handle_one_recv_msg()
3663 msg->rsp[1] = msg->data[1]; in handle_one_recv_msg()
3664 msg->rsp[2] = IPMI_ERR_UNSPECIFIED; in handle_one_recv_msg()
3665 msg->rsp_size = 3; in handle_one_recv_msg()
3666 } else if (((msg->rsp[0] >> 2) != ((msg->data[0] >> 2) | 1)) in handle_one_recv_msg()
3667 || (msg->rsp[1] != msg->data[1])) { in handle_one_recv_msg()
3674 (msg->data[0] >> 2) | 1, msg->data[1], in handle_one_recv_msg()
3675 msg->rsp[0] >> 2, msg->rsp[1]); in handle_one_recv_msg()
3678 msg->rsp[0] = msg->data[0] | (1 << 2); in handle_one_recv_msg()
3679 msg->rsp[1] = msg->data[1]; in handle_one_recv_msg()
3680 msg->rsp[2] = IPMI_ERR_UNSPECIFIED; in handle_one_recv_msg()
3681 msg->rsp_size = 3; in handle_one_recv_msg()
3684 if ((msg->rsp[0] == ((IPMI_NETFN_APP_REQUEST|1) << 2)) in handle_one_recv_msg()
3685 && (msg->rsp[1] == IPMI_SEND_MSG_CMD) in handle_one_recv_msg()
3686 && (msg->user_data != NULL)) { in handle_one_recv_msg()
3691 struct ipmi_recv_msg *recv_msg = msg->user_data; in handle_one_recv_msg()
3694 if (msg->rsp_size < 2) in handle_one_recv_msg()
3698 chan = msg->data[2] & 0x0f; in handle_one_recv_msg()
3711 recv_msg->msg.data = recv_msg->msg_data; in handle_one_recv_msg()
3712 recv_msg->msg.data_len = 1; in handle_one_recv_msg()
3713 recv_msg->msg_data[0] = msg->rsp[2]; in handle_one_recv_msg()
3715 } else if ((msg->rsp[0] == ((IPMI_NETFN_APP_REQUEST|1) << 2)) in handle_one_recv_msg()
3716 && (msg->rsp[1] == IPMI_GET_MSG_CMD)) { in handle_one_recv_msg()
3718 chan = msg->rsp[3] & 0xf; in handle_one_recv_msg()
3738 if (msg->rsp[4] & 0x04) { in handle_one_recv_msg()
3743 requeue = handle_ipmb_get_msg_rsp(intf, msg); in handle_one_recv_msg()
3749 requeue = handle_ipmb_get_msg_cmd(intf, msg); in handle_one_recv_msg()
3755 if (msg->rsp[6] & 0x04) { in handle_one_recv_msg()
3760 requeue = handle_lan_get_msg_rsp(intf, msg); in handle_one_recv_msg()
3766 requeue = handle_lan_get_msg_cmd(intf, msg); in handle_one_recv_msg()
3777 requeue = handle_oem_get_msg_cmd(intf, msg); in handle_one_recv_msg()
3787 } else if ((msg->rsp[0] == ((IPMI_NETFN_APP_REQUEST|1) << 2)) in handle_one_recv_msg()
3788 && (msg->rsp[1] == IPMI_READ_EVENT_MSG_BUFFER_CMD)) { in handle_one_recv_msg()
3790 requeue = handle_read_event_rsp(intf, msg); in handle_one_recv_msg()
3793 requeue = handle_bmc_rsp(intf, msg); in handle_one_recv_msg()
3897 struct ipmi_smi_msg *msg) in ipmi_smi_msg_received() argument
3902 if ((msg->data_size >= 2) in ipmi_smi_msg_received()
3903 && (msg->data[0] == (IPMI_NETFN_APP_REQUEST << 2)) in ipmi_smi_msg_received()
3904 && (msg->data[1] == IPMI_SEND_MSG_CMD) in ipmi_smi_msg_received()
3905 && (msg->user_data == NULL)) { in ipmi_smi_msg_received()
3923 if ((msg->rsp_size >= 3) && (msg->rsp[2] != 0) in ipmi_smi_msg_received()
3924 && (msg->rsp[2] != IPMI_NODE_BUSY_ERR) in ipmi_smi_msg_received()
3925 && (msg->rsp[2] != IPMI_LOST_ARBITRATION_ERR) in ipmi_smi_msg_received()
3926 && (msg->rsp[2] != IPMI_BUS_ERR) in ipmi_smi_msg_received()
3927 && (msg->rsp[2] != IPMI_NAK_ON_WRITE_ERR)) { in ipmi_smi_msg_received()
3928 int chan = msg->rsp[3] & 0xf; in ipmi_smi_msg_received()
3940 intf_err_seq(intf, msg->msgid, msg->rsp[2]); in ipmi_smi_msg_received()
3943 intf_start_seq_timer(intf, msg->msgid); in ipmi_smi_msg_received()
3946 ipmi_free_smi_msg(msg); in ipmi_smi_msg_received()
3954 list_add_tail(&msg->link, &intf->waiting_rcv_msgs); in ipmi_smi_msg_received()
3962 if (msg == intf->curr_msg) in ipmi_smi_msg_received()
3996 memcpy(smi_msg->data, recv_msg->msg.data, recv_msg->msg.data_len); in smi_from_recv_msg()
3997 smi_msg->data_size = recv_msg->msg.data_len; in smi_from_recv_msg()
4017 struct ipmi_recv_msg *msg; in check_msg_timeout() local
4035 msg = ent->recv_msg; in check_msg_timeout()
4036 list_add_tail(&msg->link, timeouts); in check_msg_timeout()
4096 struct ipmi_recv_msg *msg, *msg2; in ipmi_timeout_handler() local
4114 list_for_each_entry_safe(msg, msg2, &timeouts, link) in ipmi_timeout_handler()
4115 deliver_err_response(msg, IPMI_TIMEOUT_COMPLETION_CODE); in ipmi_timeout_handler()
4206 static void free_smi_msg(struct ipmi_smi_msg *msg) in free_smi_msg() argument
4209 kfree(msg); in free_smi_msg()
4225 static void free_recv_msg(struct ipmi_recv_msg *msg) in free_recv_msg() argument
4228 kfree(msg); in free_recv_msg()
4244 void ipmi_free_recv_msg(struct ipmi_recv_msg *msg) in ipmi_free_recv_msg() argument
4246 if (msg->user) in ipmi_free_recv_msg()
4247 kref_put(&msg->user->refcount, free_user); in ipmi_free_recv_msg()
4248 msg->done(msg); in ipmi_free_recv_msg()
4256 static void dummy_smi_done_handler(struct ipmi_smi_msg *msg) in dummy_smi_done_handler() argument
4261 static void dummy_recv_done_handler(struct ipmi_recv_msg *msg) in dummy_recv_done_handler() argument
4271 struct kernel_ipmi_msg *msg) in ipmi_panic_request_and_wait() argument
4284 msg, in ipmi_panic_request_and_wait()
4299 static void event_receiver_fetcher(ipmi_smi_t intf, struct ipmi_recv_msg *msg) in event_receiver_fetcher() argument
4301 if ((msg->addr.addr_type == IPMI_SYSTEM_INTERFACE_ADDR_TYPE) in event_receiver_fetcher()
4302 && (msg->msg.netfn == IPMI_NETFN_SENSOR_EVENT_RESPONSE) in event_receiver_fetcher()
4303 && (msg->msg.cmd == IPMI_GET_EVENT_RECEIVER_CMD) in event_receiver_fetcher()
4304 && (msg->msg.data[0] == IPMI_CC_NO_ERROR)) { in event_receiver_fetcher()
4306 intf->event_receiver = msg->msg.data[1]; in event_receiver_fetcher()
4307 intf->event_receiver_lun = msg->msg.data[2] & 0x3; in event_receiver_fetcher()
4311 static void device_id_fetcher(ipmi_smi_t intf, struct ipmi_recv_msg *msg) in device_id_fetcher() argument
4313 if ((msg->addr.addr_type == IPMI_SYSTEM_INTERFACE_ADDR_TYPE) in device_id_fetcher()
4314 && (msg->msg.netfn == IPMI_NETFN_APP_RESPONSE) in device_id_fetcher()
4315 && (msg->msg.cmd == IPMI_GET_DEVICE_ID_CMD) in device_id_fetcher()
4316 && (msg->msg.data[0] == IPMI_CC_NO_ERROR)) { in device_id_fetcher()
4321 intf->local_sel_device = (msg->msg.data[6] >> 2) & 1; in device_id_fetcher()
4322 intf->local_event_generator = (msg->msg.data[6] >> 5) & 1; in device_id_fetcher()
4329 struct kernel_ipmi_msg msg; in send_panic_events() local
4341 msg.netfn = 0x04; /* Sensor or Event. */ in send_panic_events()
4342 msg.cmd = 2; /* Platform event command. */ in send_panic_events()
4343 msg.data = data; in send_panic_events()
4344 msg.data_len = 8; in send_panic_events()
4370 ipmi_panic_request_and_wait(intf, &addr, &msg); in send_panic_events()
4413 msg.netfn = IPMI_NETFN_APP_REQUEST; in send_panic_events()
4414 msg.cmd = IPMI_GET_DEVICE_ID_CMD; in send_panic_events()
4415 msg.data = NULL; in send_panic_events()
4416 msg.data_len = 0; in send_panic_events()
4418 ipmi_panic_request_and_wait(intf, &addr, &msg); in send_panic_events()
4422 msg.netfn = IPMI_NETFN_SENSOR_EVENT_REQUEST; in send_panic_events()
4423 msg.cmd = IPMI_GET_EVENT_RECEIVER_CMD; in send_panic_events()
4424 msg.data = NULL; in send_panic_events()
4425 msg.data_len = 0; in send_panic_events()
4427 ipmi_panic_request_and_wait(intf, &addr, &msg); in send_panic_events()
4461 msg.netfn = IPMI_NETFN_STORAGE_REQUEST; /* Storage. */ in send_panic_events()
4462 msg.cmd = IPMI_ADD_SEL_ENTRY_CMD; in send_panic_events()
4463 msg.data = data; in send_panic_events()
4464 msg.data_len = 16; in send_panic_events()
4484 ipmi_panic_request_and_wait(intf, &addr, &msg); in send_panic_events()