From 730c32f58ba81b3a4fe6d19c7d9e9829dd96d363 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristian=20H=C3=B8gsberg?= Date: Tue, 6 Feb 2007 14:49:32 -0500 Subject: firewire: Implement proper transaction cancelation. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Drivers such as fw-sbp2 had no way to properly cancel in-progress transactions, which could leave a pending transaction or an unset packet in the low-level queues after kfree'ing the containing structure. fw_cancel_transaction() lets drivers cancel a submitted transaction. Signed-off-by: Kristian Høgsberg Signed-off-by: Stefan Richter --- drivers/firewire/fw-transaction.h | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'drivers/firewire/fw-transaction.h') diff --git a/drivers/firewire/fw-transaction.h b/drivers/firewire/fw-transaction.h index 50ec2c683a3..8f0283cf1a7 100644 --- a/drivers/firewire/fw-transaction.h +++ b/drivers/firewire/fw-transaction.h @@ -391,6 +391,8 @@ struct fw_card_driver { void (*send_request) (struct fw_card *card, struct fw_packet *packet); void (*send_response) (struct fw_card *card, struct fw_packet *packet); + /* Calling cancel is valid once a packet has been submitted. */ + int (*cancel_packet) (struct fw_card *card, struct fw_packet *packet); /* Allow the specified node ID to do direct DMA out and in of * host memory. The card will disable this for all node when @@ -421,6 +423,9 @@ fw_send_request(struct fw_card *card, struct fw_transaction *t, void *data, size_t length, fw_transaction_callback_t callback, void *callback_data); +int fw_cancel_transaction(struct fw_card *card, + struct fw_transaction *transaction); + void fw_flush_transactions(struct fw_card *card); void fw_send_phy_config(struct fw_card *card, -- cgit v1.2.3