diff options
author | PixelBot AutoMerger <android-nexus-securitybot@system.gserviceaccount.com> | 2023-09-24 18:54:57 -0700 |
---|---|---|
committer | Pindar Yang <pindaryang@google.com> | 2023-09-25 06:42:41 +0000 |
commit | 7bcd0a6071389ba7ab3de081790b2e8f2a51fd53 (patch) | |
tree | 0d46fd4ad3ca16b3269c19a66395b31191447947 | |
parent | a65b5be81a9acb5eb514f8b7272f940d53d74ca4 (diff) | |
parent | aa13c699889241b213a9e1f503293b29497fed90 (diff) | |
download | bcm4389-7bcd0a6071389ba7ab3de081790b2e8f2a51fd53.tar.gz |
Merge android13-gs-pixel-5.10-udc-qpr1 into android13-gs-pixel-5.10-24Q1android-u-qpr2-beta-1_r0.6android-u-qpr2-beta-1_r0.5android-u-qpr2-beta-1_r0.4android-u-qpr2-beta-1_r0.3android-u-qpr2-beta-1_r0.2android-u-qpr2-beta-1_r0.1
Bug: 300854197
SBMerger: 558810260
Change-Id: I0032747954921de0c3b7c87bdeca84af1474266a
Signed-off-by: SecurityBot <android-nexus-securitybot@system.gserviceaccount.com>
-rw-r--r-- | dhd_pcie.c | 14 |
1 files changed, 8 insertions, 6 deletions
@@ -9314,8 +9314,8 @@ dhdpcie_bus_suspend(struct dhd_bus *bus, bool state, bool byint) dhdpcie_bus_suspend(struct dhd_bus *bus, bool state) #endif /* DHD_PCIE_NATIVE_RUNTIMEPM */ { - int timeleft; - int rc = 0; + int timeleft = 0; + int rc = 0, ret = BCME_OK; unsigned long flags; #ifdef DHD_PCIE_NATIVE_RUNTIMEPM int d3_read_retry = 0; @@ -9469,17 +9469,19 @@ dhdpcie_bus_suspend(struct dhd_bus *bus, bool state) #ifdef PCIE_INB_DW if (INBAND_DW_ENAB(bus)) { DHD_BUS_INB_DW_LOCK(bus->inb_lock, flags); - dhdpcie_send_mb_data(bus, H2D_HOST_D3_INFORM); + ret = dhdpcie_send_mb_data(bus, H2D_HOST_D3_INFORM); DHD_BUS_INB_DW_UNLOCK(bus->inb_lock, flags); } else #endif /* PCIE_INB_DW */ { - dhdpcie_send_mb_data(bus, H2D_HOST_D3_INFORM); + ret = dhdpcie_send_mb_data(bus, H2D_HOST_D3_INFORM); } - /* Wait for D3 ACK for D3_ACK_RESP_TIMEOUT seconds */ + if (!bus->is_linkdown && ret == BCME_OK) { + /* Wait for D3 ACK for D3_ACK_RESP_TIMEOUT seconds */ + timeleft = dhd_os_d3ack_wait(bus->dhd, &bus->wait_for_d3_ack); + } - timeleft = dhd_os_d3ack_wait(bus->dhd, &bus->wait_for_d3_ack); #ifdef DHD_RECOVER_TIMEOUT /* XXX: WAR for missing D3 ACK MB interrupt */ if (bus->wait_for_d3_ack == 0) { |