From: Jack Pham Date: Wed, 7 Jun 2017 22:35:57 +0000 (-0700) Subject: usb: pd: Increment MessageID only on successful TX X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=c8735c75303bdff8ba4e8270932222d386e8cf40;p=sagit-ice-cold%2Fkernel_xiaomi_msm8998.git 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 --- 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; }