From a5e74c1180e3950d9e90d2098b264bb4a0238db5 Mon Sep 17 00:00:00 2001 From: Houston Hoffman Date: Wed, 2 Sep 2015 18:06:28 -0700 Subject: [PATCH] qcacld-3.0: Remove target_lock from ce_pkt_dl_len_set Download length should be set before messages are recieved, so no race condition should exist. Change-Id: I92de4b3c4077f23032df45ceca6e169616351b8b CRs-Fixed: 941355 --- core/hif/src/ce/ce_service.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/core/hif/src/ce/ce_service.c b/core/hif/src/ce/ce_service.c index 14753d2993..99afda9bd9 100644 --- a/core/hif/src/ce/ce_service.c +++ b/core/hif/src/ce/ce_service.c @@ -500,8 +500,11 @@ int ce_send_fast(struct CE_handle *copyeng, cdf_nbuf_t *msdus, /* get actual packet length */ frag_len = cdf_nbuf_get_frag_len(msdu, 1); - shadow_src_desc->nbytes = frag_len > ce_state->download_len ? - ce_state->download_len : frag_len; + + /* only read download_len once */ + shadow_src_desc->nbytes = ce_state->download_len; + if (shadow_src_desc->nbytes > frag_len) + shadow_src_desc->nbytes = frag_len; /* Data packet is a byte stream, so disable byte swap */ shadow_src_desc->byte_swap = 0; @@ -1569,9 +1572,7 @@ void ce_pkt_dl_len_set(void *hif_sc, u_int32_t pkt_download_len) cdf_assert_always(ce_state); - cdf_spin_lock_bh(&sc->target_lock); ce_state->download_len = pkt_download_len; - cdf_spin_unlock_bh(&sc->target_lock); cdf_print("%s CE %d Pkt download length %d\n", __func__, ce_state->id, ce_state->download_len);