mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [char-misc-next 0/2] mei: amthif simplifications
@ 2014-08-14 14:22 Tomas Winkler
  2014-08-14 14:22 ` [char-misc-next 1/2] mei: amthif: use service function to flush amthif queue Tomas Winkler
  2014-08-14 14:22 ` [char-misc-next 2/2] mei: amthif: don't check amthif client identity on amthif queues Tomas Winkler
  0 siblings, 2 replies; 3+ messages in thread
From: Tomas Winkler @ 2014-08-14 14:22 UTC (permalink / raw)
  To: gregkh; +Cc: arnd, linux-kernel, Tomas Winkler


Alexander Usyskin (2):
  mei: amthif: use service function to flush amthif queue
  mei: amthif: don't check amthif client identity on amthif queues

 drivers/misc/mei/amthif.c    | 37 +++++++++++++++----------------------
 drivers/misc/mei/client.c    |  2 +-
 drivers/misc/mei/client.h    |  2 ++
 drivers/misc/mei/interrupt.c | 13 ++-----------
 4 files changed, 20 insertions(+), 34 deletions(-)

-- 
1.9.3


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [char-misc-next 1/2] mei: amthif: use service function to flush amthif queue
  2014-08-14 14:22 [char-misc-next 0/2] mei: amthif simplifications Tomas Winkler
@ 2014-08-14 14:22 ` Tomas Winkler
  2014-08-14 14:22 ` [char-misc-next 2/2] mei: amthif: don't check amthif client identity on amthif queues Tomas Winkler
  1 sibling, 0 replies; 3+ messages in thread
From: Tomas Winkler @ 2014-08-14 14:22 UTC (permalink / raw)
  To: gregkh; +Cc: arnd, linux-kernel, Alexander Usyskin, Tomas Winkler

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

Replace open coded loop with an existing service function:
mei_io_list_flush

Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
---
 drivers/misc/mei/client.c    |  2 +-
 drivers/misc/mei/client.h    |  2 ++
 drivers/misc/mei/interrupt.c | 13 ++-----------
 3 files changed, 5 insertions(+), 12 deletions(-)

diff --git a/drivers/misc/mei/client.c b/drivers/misc/mei/client.c
index 7dfe2b5..a90052e 100644
--- a/drivers/misc/mei/client.c
+++ b/drivers/misc/mei/client.c
@@ -117,7 +117,7 @@ static void __mei_io_list_flush(struct mei_cl_cb *list,
  * @list:  An instance of our list structure
  * @cl: host client
  */
-static inline void mei_io_list_flush(struct mei_cl_cb *list, struct mei_cl *cl)
+void mei_io_list_flush(struct mei_cl_cb *list, struct mei_cl *cl)
 {
 	__mei_io_list_flush(list, cl, false);
 }
diff --git a/drivers/misc/mei/client.h b/drivers/misc/mei/client.h
index 96d5de0..bf2b0b1 100644
--- a/drivers/misc/mei/client.h
+++ b/drivers/misc/mei/client.h
@@ -45,6 +45,8 @@ static inline void mei_io_list_init(struct mei_cl_cb *list)
 {
 	INIT_LIST_HEAD(&list->list);
 }
+void mei_io_list_flush(struct mei_cl_cb *list, struct mei_cl *cl);
+
 /*
  * MEI Host Client Functions
  */
diff --git a/drivers/misc/mei/interrupt.c b/drivers/misc/mei/interrupt.c
index 4e3cba6d..19709b7 100644
--- a/drivers/misc/mei/interrupt.c
+++ b/drivers/misc/mei/interrupt.c
@@ -556,8 +556,6 @@ void mei_timer(struct work_struct *work)
 {
 	unsigned long timeout;
 	struct mei_cl *cl;
-	struct mei_cl_cb  *cb_pos = NULL;
-	struct mei_cl_cb  *cb_next = NULL;
 
 	struct mei_device *dev = container_of(work,
 					struct mei_device, timer_work.work);
@@ -632,15 +630,8 @@ void mei_timer(struct work_struct *work)
 
 			dev_dbg(&dev->pdev->dev, "freeing AMTHI for other requests\n");
 
-			list_for_each_entry_safe(cb_pos, cb_next,
-				&dev->amthif_rd_complete_list.list, list) {
-
-				cl = cb_pos->file_object->private_data;
-
-				/* Finding the AMTHI entry. */
-				if (cl == &dev->iamthif_cl)
-					list_del(&cb_pos->list);
-			}
+			mei_io_list_flush(&dev->amthif_rd_complete_list,
+				&dev->iamthif_cl);
 			mei_io_cb_free(dev->iamthif_current_cb);
 			dev->iamthif_current_cb = NULL;
 
-- 
1.9.3


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [char-misc-next 2/2] mei: amthif: don't check amthif client identity on amthif queues
  2014-08-14 14:22 [char-misc-next 0/2] mei: amthif simplifications Tomas Winkler
  2014-08-14 14:22 ` [char-misc-next 1/2] mei: amthif: use service function to flush amthif queue Tomas Winkler
@ 2014-08-14 14:22 ` Tomas Winkler
  1 sibling, 0 replies; 3+ messages in thread
From: Tomas Winkler @ 2014-08-14 14:22 UTC (permalink / raw)
  To: gregkh; +Cc: arnd, linux-kernel, Alexander Usyskin, Tomas Winkler

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

Amthif has its own queues therefore it is redundant
to check the client type when processing the queues

Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
---
 drivers/misc/mei/amthif.c | 37 +++++++++++++++----------------------
 1 file changed, 15 insertions(+), 22 deletions(-)

diff --git a/drivers/misc/mei/amthif.c b/drivers/misc/mei/amthif.c
index 0d6234d..ab60959 100644
--- a/drivers/misc/mei/amthif.c
+++ b/drivers/misc/mei/amthif.c
@@ -130,12 +130,9 @@ struct mei_cl_cb *mei_amthif_find_read_list_entry(struct mei_device *dev,
 						struct file *file)
 {
 	struct mei_cl_cb *cb;
-
-	list_for_each_entry(cb, &dev->amthif_rd_complete_list.list, list) {
-		if (cb->cl && cb->cl == &dev->iamthif_cl &&
-			cb->file_object == file)
+	list_for_each_entry(cb, &dev->amthif_rd_complete_list.list, list)
+		if (cb->file_object == file)
 			return cb;
-	}
 	return NULL;
 }
 
@@ -168,8 +165,8 @@ int mei_amthif_read(struct mei_device *dev, struct file *file,
 	int i;
 
 	/* Only possible if we are in timeout */
-	if (!cl || cl != &dev->iamthif_cl) {
-		dev_dbg(&dev->pdev->dev, "bad file ext.\n");
+	if (!cl) {
+		dev_err(&dev->pdev->dev, "bad file ext.\n");
 		return -ETIME;
 	}
 
@@ -371,8 +368,8 @@ int mei_amthif_write(struct mei_device *dev, struct mei_cl_cb *cb)
  */
 void mei_amthif_run_next_cmd(struct mei_device *dev)
 {
-	struct mei_cl_cb *pos = NULL;
-	struct mei_cl_cb *next = NULL;
+	struct mei_cl_cb *cb;
+	struct mei_cl_cb *next;
 	int status;
 
 	if (!dev)
@@ -388,19 +385,15 @@ void mei_amthif_run_next_cmd(struct mei_device *dev)
 
 	dev_dbg(&dev->pdev->dev, "complete amthif cmd_list cb.\n");
 
-	list_for_each_entry_safe(pos, next, &dev->amthif_cmd_list.list, list) {
-		list_del(&pos->list);
-
-		if (pos->cl && pos->cl == &dev->iamthif_cl) {
-			status = mei_amthif_send_cmd(dev, pos);
-			if (status) {
-				dev_dbg(&dev->pdev->dev,
-					"amthif write failed status = %d\n",
+	list_for_each_entry_safe(cb, next, &dev->amthif_cmd_list.list, list) {
+		list_del(&cb->list);
+		if (!cb->cl)
+			continue;
+		status = mei_amthif_send_cmd(dev, cb);
+		if (status)
+			dev_warn(&dev->pdev->dev, "amthif write failed status = %d\n",
 						status);
-				return;
-			}
-			break;
-		}
+		break;
 	}
 }
 
@@ -559,7 +552,7 @@ int mei_amthif_irq_read_msg(struct mei_device *dev,
 	dev->iamthif_stall_timer = 0;
 	cb->buf_idx = dev->iamthif_msg_buf_index;
 	cb->read_time = jiffies;
-	if (dev->iamthif_ioctl && cb->cl == &dev->iamthif_cl) {
+	if (dev->iamthif_ioctl) {
 		/* found the iamthif cb */
 		dev_dbg(&dev->pdev->dev, "complete the amthif read cb.\n ");
 		dev_dbg(&dev->pdev->dev, "add the amthif read cb to complete.\n ");
-- 
1.9.3


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2014-08-14 14:23 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-08-14 14:22 [char-misc-next 0/2] mei: amthif simplifications Tomas Winkler
2014-08-14 14:22 ` [char-misc-next 1/2] mei: amthif: use service function to flush amthif queue Tomas Winkler
2014-08-14 14:22 ` [char-misc-next 2/2] mei: amthif: don't check amthif client identity on amthif queues Tomas Winkler

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®