Lines Matching refs:tx_msg
212 static void ipmi_msg_release(struct acpi_ipmi_msg *tx_msg)
214 acpi_ipmi_dev_put(tx_msg->device);
215 kfree(tx_msg);
220 struct acpi_ipmi_msg *tx_msg =
223 ipmi_msg_release(tx_msg);
226 static struct acpi_ipmi_msg *acpi_ipmi_msg_get(struct acpi_ipmi_msg *tx_msg)
228 kref_get(&tx_msg->kref);
230 return tx_msg;
233 static void acpi_ipmi_msg_put(struct acpi_ipmi_msg *tx_msg)
235 kref_put(&tx_msg->kref, ipmi_msg_release_kref);
240 static int acpi_format_ipmi_request(struct acpi_ipmi_msg *tx_msg,
249 msg = &tx_msg->tx_message;
257 msg->data = tx_msg->data;
267 dev_WARN_ONCE(tx_msg->device->dev, true,
273 memcpy(tx_msg->data, buffer->data, msg->data_len);
282 tx_msg->addr.addr_type = IPMI_SYSTEM_INTERFACE_ADDR_TYPE;
283 tx_msg->addr.channel = IPMI_BMC_CHANNEL;
284 tx_msg->addr.data[0] = 0;
287 device = tx_msg->device;
291 tx_msg->tx_msgid = device->curr_msgid;
326 struct acpi_ipmi_msg *tx_msg;
339 tx_msg = list_first_entry(&ipmi->tx_msg_list,
342 list_del(&tx_msg->head);
346 complete(&tx_msg->tx_complete);
347 acpi_ipmi_msg_put(tx_msg);
356 struct acpi_ipmi_msg *tx_msg, *temp;
361 list_for_each_entry_safe(tx_msg, temp, &ipmi->tx_msg_list, head) {
362 if (msg == tx_msg) {
364 list_del(&tx_msg->head);
371 acpi_ipmi_msg_put(tx_msg);
378 struct acpi_ipmi_msg *tx_msg, *temp;
390 list_for_each_entry_safe(tx_msg, temp, &ipmi_device->tx_msg_list, head) {
391 if (msg->msgid == tx_msg->tx_msgid) {
393 list_del(&tx_msg->head);
420 tx_msg->msg_done = ACPI_IPMI_TIMEOUT;
425 tx_msg->rx_len = msg->msg.data_len;
426 memcpy(tx_msg->data, msg->msg.data, tx_msg->rx_len);
427 tx_msg->msg_done = ACPI_IPMI_OK;
430 complete(&tx_msg->tx_complete);
431 acpi_ipmi_msg_put(tx_msg);
527 struct acpi_ipmi_msg *tx_msg;
542 tx_msg = ipmi_msg_alloc();
543 if (!tx_msg)
545 ipmi_device = tx_msg->device;
547 if (acpi_format_ipmi_request(tx_msg, address, value) != 0) {
548 ipmi_msg_release(tx_msg);
552 acpi_ipmi_msg_get(tx_msg);
554 /* Do not add a tx_msg that can not be flushed. */
557 ipmi_msg_release(tx_msg);
561 list_add_tail(&tx_msg->head, &ipmi_device->tx_msg_list);
566 &tx_msg->addr,
567 tx_msg->tx_msgid,
568 &tx_msg->tx_message,
574 wait_for_completion(&tx_msg->tx_complete);
576 acpi_format_ipmi_response(tx_msg, value);
580 ipmi_cancel_tx_msg(ipmi_device, tx_msg);
581 acpi_ipmi_msg_put(tx_msg);