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:
parent
d025d9d530
commit
e9c2362e33
1 changed files with 3 additions and 1 deletions
|
@ -208,6 +208,7 @@ int usb_add_function(struct usb_configuration *config,
|
||||||
goto done;
|
goto done;
|
||||||
|
|
||||||
function->config = config;
|
function->config = config;
|
||||||
|
function->intf_id = -EINVAL;
|
||||||
list_add_tail(&function->list, &config->functions);
|
list_add_tail(&function->list, &config->functions);
|
||||||
|
|
||||||
if (function->bind_deactivated) {
|
if (function->bind_deactivated) {
|
||||||
|
@ -356,6 +357,7 @@ int usb_interface_id(struct usb_configuration *config,
|
||||||
|
|
||||||
if (id < MAX_CONFIG_INTERFACES) {
|
if (id < MAX_CONFIG_INTERFACES) {
|
||||||
config->interface[id] = function;
|
config->interface[id] = function;
|
||||||
|
if (function->intf_id < 0)
|
||||||
function->intf_id = id;
|
function->intf_id = id;
|
||||||
config->next_interface_id = id + 1;
|
config->next_interface_id = id + 1;
|
||||||
return id;
|
return id;
|
||||||
|
|
Loading…
Add table
Reference in a new issue