Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1448570

[char-misc-next 02/12] mei: add file pointer to the host client structure

From Tomas Winkler <tomas.winkler@intel.com>
Newsgroups linux.kernel
Subject [char-misc-next 02/12] mei: add file pointer to the host client structure
Date 2016-07-22 15:00 +0200
Message-ID <rXIdA-5YC-11@gated-at.bofh.it> (permalink)
References <rXIdz-5YC-3@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


From: Alexander Usyskin <alexander.usyskin@intel.com>

Store the file associated with a client in the host client structure,
this enables dropping the special amthif client file pointer from struct
mei_device, and this is also a preparation for changing the way rx
packet allocation for fixed_address clients

Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
---
 drivers/misc/mei/amthif.c    | 13 +++++++------
 drivers/misc/mei/interrupt.c |  1 -
 drivers/misc/mei/main.c      |  1 +
 drivers/misc/mei/mei_dev.h   |  5 ++---
 4 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/drivers/misc/mei/amthif.c b/drivers/misc/mei/amthif.c
index 3cf54ca051ea..e346af17d9f4 100644
--- a/drivers/misc/mei/amthif.c
+++ b/drivers/misc/mei/amthif.c
@@ -204,7 +204,7 @@ static int mei_amthif_read_start(struct mei_cl *cl, const struct file *file)
 	list_add_tail(&cb->list, &dev->ctrl_wr_list.list);
 
 	dev->iamthif_state = MEI_IAMTHIF_READING;
-	dev->iamthif_fp = cb->fp;
+	cl->fp = cb->fp;
 
 	return 0;
 }
@@ -230,13 +230,13 @@ int mei_amthif_run_next_cmd(struct mei_device *dev)
 					typeof(*cb), list);
 	if (!cb) {
 		dev->iamthif_state = MEI_IAMTHIF_IDLE;
-		dev->iamthif_fp = NULL;
+		cl->fp = NULL;
 		return 0;
 	}
 
 	list_del_init(&cb->list);
 	dev->iamthif_state = MEI_IAMTHIF_WRITING;
-	dev->iamthif_fp = cb->fp;
+	cl->fp = cb->fp;
 
 	ret = mei_cl_write(cl, cb, false);
 	if (ret < 0)
@@ -375,7 +375,7 @@ void mei_amthif_complete(struct mei_cl *cl, struct mei_cl_cb *cb)
 			return;
 		}
 		dev->iamthif_state = MEI_IAMTHIF_IDLE;
-		dev->iamthif_fp = NULL;
+		cl->fp = NULL;
 		if (!dev->iamthif_canceled) {
 			/*
 			 * in case of error enqueue the write cb to complete
@@ -453,11 +453,12 @@ static void mei_clear_lists(struct mei_device *dev, const struct file *file)
 */
 int mei_amthif_release(struct mei_device *dev, struct file *file)
 {
+	struct mei_cl *cl = file->private_data;
+
 	if (dev->iamthif_open_count > 0)
 		dev->iamthif_open_count--;
 
-	if (dev->iamthif_fp == file &&
-	    dev->iamthif_state != MEI_IAMTHIF_IDLE) {
+	if (cl->fp == file && dev->iamthif_state != MEI_IAMTHIF_IDLE) {
 
 		dev_dbg(dev->dev, "amthif canceled iamthif state %d\n",
 		    dev->iamthif_state);
diff --git a/drivers/misc/mei/interrupt.c b/drivers/misc/mei/interrupt.c
index 412229e7bb7c..8b5e4b4c4c15 100644
--- a/drivers/misc/mei/interrupt.c
+++ b/drivers/misc/mei/interrupt.c
@@ -516,7 +516,6 @@ void mei_timer(struct work_struct *work)
 			dev_err(dev->dev, "timer: amthif  hanged.\n");
 			mei_reset(dev);
 
-			dev->iamthif_fp = NULL;
 			mei_amthif_run_next_cmd(dev);
 		}
 	}
diff --git a/drivers/misc/mei/main.c b/drivers/misc/mei/main.c
index d62e89c80beb..d7ef5edf044a 100644
--- a/drivers/misc/mei/main.c
+++ b/drivers/misc/mei/main.c
@@ -71,6 +71,7 @@ static int mei_open(struct inode *inode, struct file *file)
 		goto err_unlock;
 	}
 
+	cl->fp = file;
 	file->private_data = cl;
 
 	mutex_unlock(&dev->device_lock);
diff --git a/drivers/misc/mei/mei_dev.h b/drivers/misc/mei/mei_dev.h
index d7b68063ace1..aaefbc87c2fc 100644
--- a/drivers/misc/mei/mei_dev.h
+++ b/drivers/misc/mei/mei_dev.h
@@ -200,6 +200,7 @@ struct mei_cl_cb {
  * @ev_async: event async notification
  * @status: connection status
  * @me_cl: fw client connected
+ * @fp: file associated with client
  * @host_client_id: host id
  * @mei_flow_ctrl_creds: transmit flow credentials
  * @timer_count:  watchdog timer for operation completion
@@ -223,6 +224,7 @@ struct mei_cl {
 	struct fasync_struct *ev_async;
 	int status;
 	struct mei_me_client *me_cl;
+	const struct file *fp;
 	u8 host_client_id;
 	u8 mei_flow_ctrl_creds;
 	u8 timer_count;
@@ -398,7 +400,6 @@ const char *mei_pg_state_str(enum mei_pg_state state);
  * @override_fixed_address: force allow fixed address behavior
  *
  * @amthif_cmd_list : amthif list for cmd waiting
- * @iamthif_fp : file for current amthif operation
  * @iamthif_cl  : amthif host client
  * @iamthif_open_count : number of opened amthif connections
  * @iamthif_stall_timer : timer to detect amthif hang
@@ -481,8 +482,6 @@ struct mei_device {
 
 	/* amthif list for cmd waiting */
 	struct mei_cl_cb amthif_cmd_list;
-	/* driver managed amthif list for reading completed amthif cmd data */
-	const struct file *iamthif_fp;
 	struct mei_cl iamthif_cl;
 	long iamthif_open_count;
 	u32 iamthif_stall_timer;
-- 
2.7.4

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[char-misc-next 00/12] mei: rx enhancements Tomas Winkler <tomas.winkler@intel.com> - 2016-07-22 15:00 +0200
  [char-misc-next 02/12] mei: add file pointer to the host client structure Tomas Winkler <tomas.winkler@intel.com> - 2016-07-22 15:00 +0200
  [char-misc-next 09/12] mei: add wrapper for queuing control commands. Tomas Winkler <tomas.winkler@intel.com> - 2016-07-22 15:00 +0200
  [char-misc-next 04/12] mei: amthif: drop mei_clear_lists function Tomas Winkler <tomas.winkler@intel.com> - 2016-07-22 15:00 +0200
  [char-misc-next 05/12] mei: drop redundant krealloc and checks in irq read Tomas Winkler <tomas.winkler@intel.com> - 2016-07-22 15:00 +0200
  [char-misc-next 11/12] mei: amthif: drop mei_amthif_read Tomas Winkler <tomas.winkler@intel.com> - 2016-07-22 15:00 +0200
  [char-misc-next 01/12] mei: move read cb to complete queue if not connected Tomas Winkler <tomas.winkler@intel.com> - 2016-07-22 15:00 +0200
  [char-misc-next 08/12] mei: use consistent naming for TX control flow credits Tomas Winkler <tomas.winkler@intel.com> - 2016-07-22 15:00 +0200
  [char-misc-next 07/12] mei: rx flow control counter Tomas Winkler <tomas.winkler@intel.com> - 2016-07-22 15:00 +0200
  [char-misc-next 12/12] mei: drop unused file transaction states Tomas Winkler <tomas.winkler@intel.com> - 2016-07-22 15:00 +0200
  [char-misc-next 10/12] mei: enqueue consecutive reads Tomas Winkler <tomas.winkler@intel.com> - 2016-07-22 15:00 +0200
  [char-misc-next 06/12] mei: prepare read cb for fixed address clients on the receive path only. Tomas Winkler <tomas.winkler@intel.com> - 2016-07-22 15:10 +0200
  RE: [char-misc-next 00/12] mei: rx enhancements "Winkler, Tomas" <tomas.winkler@intel.com> - 2016-07-25 01:00 +0200
    Re: [char-misc-next 00/12] mei: rx enhancements Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-07-25 01:30 +0200

csiph-web