qcacmn: Fix regression issue for EAPOL fail

This is regression issue.
regression cause I24cddb9d10e4cb675c8375cbd0f589c7718bd680.

Issue happens in get_htc_send_packets, and it is possible
htc_packet_dequeue but hif_pm_runtime_get failed as suspend
state.

Revise to original logical before regression change.

Change-Id: I74c309d7a3decdd6fe905e9f1e61916905876aec
CRs-Fixed: 2663338
このコミットが含まれているのは:
Jingxiang Ge
2020-04-14 12:30:49 +08:00
committed by nshrivas
コミット b75ec972c4

ファイルの表示

@@ -1063,12 +1063,6 @@ static void get_htc_send_packets_credit_based(HTC_TARGET *target,
/* loop until we can grab as many packets out of the queue as we can */
while (true) {
sendFlags = 0;
/* get packet at head, but don't remove it */
pPacket = htc_get_pkt_at_head(tx_queue);
if (!pPacket)
break;
if (do_pm_get) {
rtpm_dbgid =
htc_send_pkts_rtpm_dbgid_get(
@@ -1077,12 +1071,27 @@ static void get_htc_send_packets_credit_based(HTC_TARGET *target,
rtpm_dbgid);
if (ret) {
/* bus suspended, runtime resume issued */
if (ret == -EAGAIN)
QDF_ASSERT(HTC_PACKET_QUEUE_DEPTH(pQueue) == 0);
if (ret == -EAGAIN) {
pPacket = htc_get_pkt_at_head(tx_queue);
if (!pPacket)
break;
log_packet_info(target, pPacket);
}
break;
}
}
sendFlags = 0;
/* get packet at head, but don't remove it */
pPacket = htc_get_pkt_at_head(tx_queue);
if (!pPacket) {
if (do_pm_get)
hif_pm_runtime_put(target->hif_dev,
rtpm_dbgid);
break;
}
AR_DEBUG_PRINTF(ATH_DEBUG_SEND,
(" Got head packet:%pK , Queue Depth: %d\n",
pPacket,
@@ -1183,7 +1192,7 @@ static void get_htc_send_packets(HTC_TARGET *target,
HTC_PACKET_QUEUE *tx_queue;
HTC_PACKET_QUEUE pm_queue;
bool do_pm_get = false;
wlan_rtpm_dbgid rtpm_dbgid;
wlan_rtpm_dbgid rtpm_dbgid = 0;
int ret;
/*** NOTE : the TX lock is held when this function is called ***/
@@ -1203,10 +1212,6 @@ static void get_htc_send_packets(HTC_TARGET *target,
while (Resources > 0) {
int num_frags;
pPacket = htc_packet_dequeue(tx_queue);
if (!pPacket)
break;
if (do_pm_get) {
rtpm_dbgid =
htc_send_pkts_rtpm_dbgid_get(
@@ -1215,11 +1220,23 @@ static void get_htc_send_packets(HTC_TARGET *target,
rtpm_dbgid);
if (ret) {
/* bus suspended, runtime resume issued */
if (ret == -EAGAIN)
QDF_ASSERT(HTC_PACKET_QUEUE_DEPTH(pQueue) == 0);
if (ret == -EAGAIN) {
pPacket = htc_get_pkt_at_head(tx_queue);
if (!pPacket)
break;
log_packet_info(target, pPacket);
}
break;
}
}
pPacket = htc_packet_dequeue(tx_queue);
if (!pPacket) {
if (do_pm_get)
hif_pm_runtime_put(target->hif_dev, rtpm_dbgid);
break;
}
AR_DEBUG_PRINTF(ATH_DEBUG_SEND,
(" Got packet:%pK , New Queue Depth: %d\n",
pPacket,