Commit cc25aa94 authored by Alexander Usyskin's avatar Alexander Usyskin Committed by Greg Kroah-Hartman

mei: drop global me_client_index

Global me_client_index is used only during the enumeration process and
can be effectively replaced by me_addr data from the last enumeration
response as we always enumerate clients in the increasing order.
Signed-off-by: default avatarAlexander Usyskin <alexander.usyskin@intel.com>
Signed-off-by: default avatarTomas Winkler <tomas.winkler@intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent b9c79543
...@@ -113,8 +113,6 @@ void mei_hbm_idle(struct mei_device *dev) ...@@ -113,8 +113,6 @@ void mei_hbm_idle(struct mei_device *dev)
*/ */
void mei_hbm_reset(struct mei_device *dev) void mei_hbm_reset(struct mei_device *dev)
{ {
dev->me_client_index = 0;
mei_me_cl_rm_all(dev); mei_me_cl_rm_all(dev);
mei_hbm_idle(dev); mei_hbm_idle(dev);
...@@ -530,24 +528,22 @@ static void mei_hbm_cl_notify(struct mei_device *dev, ...@@ -530,24 +528,22 @@ static void mei_hbm_cl_notify(struct mei_device *dev,
* mei_hbm_prop_req - request property for a single client * mei_hbm_prop_req - request property for a single client
* *
* @dev: the device structure * @dev: the device structure
* @start_idx: client index to start search
* *
* Return: 0 on success and < 0 on failure * Return: 0 on success and < 0 on failure
*/ */
static int mei_hbm_prop_req(struct mei_device *dev, unsigned long start_idx)
static int mei_hbm_prop_req(struct mei_device *dev)
{ {
struct mei_msg_hdr *mei_hdr = &dev->wr_msg.hdr; struct mei_msg_hdr *mei_hdr = &dev->wr_msg.hdr;
struct hbm_props_request *prop_req; struct hbm_props_request *prop_req;
const size_t len = sizeof(struct hbm_props_request); const size_t len = sizeof(struct hbm_props_request);
unsigned long next_client_index; unsigned long addr;
int ret; int ret;
next_client_index = find_next_bit(dev->me_clients_map, MEI_CLIENTS_MAX, addr = find_next_bit(dev->me_clients_map, MEI_CLIENTS_MAX, start_idx);
dev->me_client_index);
/* We got all client properties */ /* We got all client properties */
if (next_client_index == MEI_CLIENTS_MAX) { if (addr == MEI_CLIENTS_MAX) {
dev->hbm_state = MEI_HBM_STARTED; dev->hbm_state = MEI_HBM_STARTED;
mei_host_client_init(dev); mei_host_client_init(dev);
...@@ -560,7 +556,7 @@ static int mei_hbm_prop_req(struct mei_device *dev) ...@@ -560,7 +556,7 @@ static int mei_hbm_prop_req(struct mei_device *dev)
memset(prop_req, 0, sizeof(struct hbm_props_request)); memset(prop_req, 0, sizeof(struct hbm_props_request));
prop_req->hbm_cmd = HOST_CLIENT_PROPERTIES_REQ_CMD; prop_req->hbm_cmd = HOST_CLIENT_PROPERTIES_REQ_CMD;
prop_req->me_addr = next_client_index; prop_req->me_addr = addr;
ret = mei_write_message(dev, mei_hdr, dev->wr_msg.data); ret = mei_write_message(dev, mei_hdr, dev->wr_msg.data);
if (ret) { if (ret) {
...@@ -570,7 +566,6 @@ static int mei_hbm_prop_req(struct mei_device *dev) ...@@ -570,7 +566,6 @@ static int mei_hbm_prop_req(struct mei_device *dev)
} }
dev->init_clients_timer = MEI_CLIENTS_INIT_TIMEOUT; dev->init_clients_timer = MEI_CLIENTS_INIT_TIMEOUT;
dev->me_client_index = next_client_index;
return 0; return 0;
} }
...@@ -1152,10 +1147,8 @@ int mei_hbm_dispatch(struct mei_device *dev, struct mei_msg_hdr *hdr) ...@@ -1152,10 +1147,8 @@ int mei_hbm_dispatch(struct mei_device *dev, struct mei_msg_hdr *hdr)
mei_hbm_me_cl_add(dev, props_res); mei_hbm_me_cl_add(dev, props_res);
dev->me_client_index++;
/* request property for the next client */ /* request property for the next client */
if (mei_hbm_prop_req(dev)) if (mei_hbm_prop_req(dev, props_res->me_addr + 1))
return -EIO; return -EIO;
break; break;
...@@ -1181,7 +1174,7 @@ int mei_hbm_dispatch(struct mei_device *dev, struct mei_msg_hdr *hdr) ...@@ -1181,7 +1174,7 @@ int mei_hbm_dispatch(struct mei_device *dev, struct mei_msg_hdr *hdr)
dev->hbm_state = MEI_HBM_CLIENT_PROPERTIES; dev->hbm_state = MEI_HBM_CLIENT_PROPERTIES;
/* first property request */ /* first property request */
if (mei_hbm_prop_req(dev)) if (mei_hbm_prop_req(dev, 0))
return -EIO; return -EIO;
break; break;
......
...@@ -396,7 +396,6 @@ const char *mei_pg_state_str(enum mei_pg_state state); ...@@ -396,7 +396,6 @@ const char *mei_pg_state_str(enum mei_pg_state state);
* @me_clients : list of FW clients * @me_clients : list of FW clients
* @me_clients_map : FW clients bit map * @me_clients_map : FW clients bit map
* @host_clients_map : host clients id pool * @host_clients_map : host clients id pool
* @me_client_index : last FW client index in enumeration
* *
* @allow_fixed_address: allow user space to connect a fixed client * @allow_fixed_address: allow user space to connect a fixed client
* @override_fixed_address: force allow fixed address behavior * @override_fixed_address: force allow fixed address behavior
...@@ -486,7 +485,6 @@ struct mei_device { ...@@ -486,7 +485,6 @@ struct mei_device {
struct list_head me_clients; struct list_head me_clients;
DECLARE_BITMAP(me_clients_map, MEI_CLIENTS_MAX); DECLARE_BITMAP(me_clients_map, MEI_CLIENTS_MAX);
DECLARE_BITMAP(host_clients_map, MEI_CLIENTS_MAX); DECLARE_BITMAP(host_clients_map, MEI_CLIENTS_MAX);
unsigned long me_client_index;
bool allow_fixed_address; bool allow_fixed_address;
bool override_fixed_address; bool override_fixed_address;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment