usb: gadget: Invalidate interface id upon adding function to config

Commit e9df68ade ("usb: gadget: f_mbim: Queue notification request
upon function resume") added variable to store interface id in
usb_interface_id(). This interface id is used to send function wake
device notification. Functions having control interface and data
interface calls usb_interface_id() twice causing invalid interface
index stored in the variable. This is causing remote wakeup failure.
Fix this issue by initializing variable to -EINVAL and set it to
interface index only when it is invalidated.

CRs-Fixed: 810737
Change-Id: I41bce0a71ce0b8e92f3736d4e292132ce16de021
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
Signed-off-by: Azhar Shaikh <azhars@codeaurora.org>
This commit is contained in:
Hemant Kumar 2015-03-20 21:17:28 -07:00 committed by David Keitel
parent d025d9d530
commit e9c2362e33

View file

@ -208,6 +208,7 @@ int usb_add_function(struct usb_configuration *config,
goto done;
function->config = config;
function->intf_id = -EINVAL;
list_add_tail(&function->list, &config->functions);
if (function->bind_deactivated) {
@ -356,7 +357,8 @@ int usb_interface_id(struct usb_configuration *config,
if (id < MAX_CONFIG_INTERFACES) {
config->interface[id] = function;
function->intf_id = id;
if (function->intf_id < 0)
function->intf_id = id;
config->next_interface_id = id + 1;
return id;
}