summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJack Pham <jackp@codeaurora.org>2017-06-07 15:35:57 -0700
committerJack Pham <jackp@codeaurora.org>2017-06-07 15:39:31 -0700
commitc8735c75303bdff8ba4e8270932222d386e8cf40 (patch)
tree97eaf2f06637f8e431d7da526adedb2b2243db01
parent71c2e3fc4ffa5aa629f3afd9d971b2e1f521255f (diff)
usb: pd: Increment MessageID only on successful TX
According to the PD 2.0 Spec, Section 6.2.1.3, the MessageID field shall only be incremented upon successful transmission (meaning GoodCRC was received). Thus, increment the counter only when pd_phy_write() succeeds. Change-Id: I73dce5736c473a1f79db9be868442c7941d13c44 Signed-off-by: Jack Pham <jackp@codeaurora.org>
-rw-r--r--drivers/usb/pd/policy_engine.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/drivers/usb/pd/policy_engine.c b/drivers/usb/pd/policy_engine.c
index 0df527a0d131..f93ab9158772 100644
--- a/drivers/usb/pd/policy_engine.c
+++ b/drivers/usb/pd/policy_engine.c
@@ -481,13 +481,12 @@ static int pd_send_msg(struct usbpd *pd, u8 hdr_type, const u32 *data,
ret = pd_phy_write(hdr, (u8 *)data, num_data * sizeof(u32), type, 15);
/* TODO figure out timeout. based on tReceive=1.1ms x nRetryCount? */
- /* MessageID incremented regardless of Tx error */
- pd->tx_msgid = (pd->tx_msgid + 1) & PD_MAX_MSG_ID;
-
if (ret < 0)
return ret;
else if (ret != num_data * sizeof(u32))
return -EIO;
+
+ pd->tx_msgid = (pd->tx_msgid + 1) & PD_MAX_MSG_ID;
return 0;
}