mirror of
https://github.com/torvalds/linux.git
synced 2024-11-04 11:04:38 +00:00
mei: add file pointer to the host client structure
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> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
a03c608f25
commit
97d549b4d5
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user