mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-26 06:33:19 -04:00
usb: pd: Clear vdm_tx if SVDM message is sent on SOP'
Consider a case where SVDM message sent on SOP' failed
before starting the power negotiation with the sink.
Currently pd driver will not be freeing vdm_tx and
will be kept around till we reach PE_SRC_Ready state. Now
the same will be sent on SOP instead of SOP' and also with
wrong SVDM version which was kept for the first SVDM msg,
because of Commit I0bafb619e0a("usb: pd: Correctly handle
SVDM versions), causing the other partner to NAK it.
Fix this by clearing the vdm_tx if SVDM message is sent
on SOP'(intended of e-mark cable) which has been failed.
Change-Id: I729a66058ea8829625185483cbec87b435ee66fc
Signed-off-by: Pratham Pratap <prathampratap@codeaurora.org>
This commit is contained in:
parent
8130739446
commit
da1f1493c8
1 changed files with 5 additions and 1 deletions
|
|
@ -1721,8 +1721,12 @@ static void handle_vdm_tx(struct usbpd *pd, enum pd_sop_type sop_type)
|
|||
|
||||
mutex_unlock(&pd->svid_handler_lock);
|
||||
/* retry when hitting PE_SRC/SNK_Ready again */
|
||||
if (ret != -EBUSY && sop_type == SOP_MSG)
|
||||
if (ret != -EBUSY && sop_type == SOP_MSG) {
|
||||
usbpd_set_state(pd, PE_SEND_SOFT_RESET);
|
||||
} else if (sop_type != SOP_MSG) {
|
||||
kfree(pd->vdm_tx);
|
||||
pd->vdm_tx = NULL;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue