diff options
| author | Jack Pham <jackp@codeaurora.org> | 2017-06-07 15:35:57 -0700 |
|---|---|---|
| committer | Jack Pham <jackp@codeaurora.org> | 2017-06-07 15:39:31 -0700 |
| commit | c8735c75303bdff8ba4e8270932222d386e8cf40 (patch) | |
| tree | 97eaf2f06637f8e431d7da526adedb2b2243db01 | |
| parent | 71c2e3fc4ffa5aa629f3afd9d971b2e1f521255f (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.c | 5 |
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; } |
