Received: by 10.213.65.68 with SMTP id h4csp423727imn; Tue, 27 Mar 2018 01:44:49 -0700 (PDT) X-Google-Smtp-Source: AG47ELuepu7jRKLft9lkUnZBX4qYWx28N0d6wnSrUgBTtm7XXr6xnCZCme5Yq5qk+r16k+F3w582 X-Received: by 2002:a17:902:850c:: with SMTP id bj12-v6mr44595201plb.110.1522140289572; Tue, 27 Mar 2018 01:44:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522140289; cv=none; d=google.com; s=arc-20160816; b=1LEJ3CCeCOS7SJ7uG2StgbVRHpFugHEsNW9d69INZLY5qXgxo49GYoognLKcM4Kyen VFpLMLE0fYzO0OZ6OnbLgbJCxumB5WcB8qHUMKRBkkRIPod4mTfannm2UqNGI0rUiIRz AX2+WH8WPui9/RlQkdM5xH5XRcPuHy8Y+NwrjGRFkXSsrhvkusZmnFiA2ZNBzl/G725j RIUOFA/DUd0n/JDb3QtV7GArWozsBS7a9Vl6EuCZ7vMu0zPJAk1DTNt67mPp2BMHtx0n 9bdim5TWZvMEZpqyJL0xwdJyS6HgvjIMquJbMSGfT8F35X+KpDnq9R8Pj5QtzE2uqViY Q0jQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=rlM3zVU5CJxkvnSHNwQxeqw7KpZl/xwv+PGKMILaAJI=; b=ckll67VAgJ0dFBez21afJvaDxqL5/G7x/5t0M2VbdSujG1pQq0JENCcAWg2ChuA5+z ez3TpX/UQVnKDwctK89cy8hTKG+xPVrvFmaCpF2fLkYwQa9rJP8ly2gGEYmSffbCKLFc /Ga3pyAN/5btD9cCT2JU+SXR6VJJJEjRcT4PUQdEdTQkYBWDjYYzhqB53mYOHmfbkY2A qLKEMrbuG2H/j6q1d+LUAdhqrgcf7SqSlOSQ+Z9g14de1cyofJJxofIoxqo/Qw1WHIJq NGrrl34wn/TWBhs88S7khVjTxmMARRPn5PN+2Lw5yNJnbg1gj6wAxfdSXmH58gMyRd5B VHzA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p15si544464pgn.17.2018.03.27.01.44.35; Tue, 27 Mar 2018 01:44:49 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752449AbeC0Ims (ORCPT + 99 others); Tue, 27 Mar 2018 04:42:48 -0400 Received: from mout.perfora.net ([74.208.4.197]:36305 "EHLO mout.perfora.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752183AbeC0Ilj (ORCPT ); Tue, 27 Mar 2018 04:41:39 -0400 Received: from kahja.local ([73.170.116.139]) by mrelay.perfora.net (mreueus002 [74.208.5.2]) with ESMTPSA (Nemesis) id 0Mgv7W-1fE1po2Mng-00M0VY; Tue, 27 Mar 2018 10:41:36 +0200 From: Quytelda Kahja To: gregkh@linuxfoundation.org Cc: linux-kernel@vger.kernel.org, Quytelda Kahja Subject: [PATCH 19/23] staging: rtl8723bs: Factor out rtl8723bs_recv_tasklet() sections. Date: Tue, 27 Mar 2018 01:41:11 -0700 Message-Id: <20180327084115.16129-19-quytelda@tamalin.org> X-Mailer: git-send-email 2.16.3 In-Reply-To: <20180327084115.16129-1-quytelda@tamalin.org> References: <20180327084115.16129-1-quytelda@tamalin.org> X-Provags-ID: V03:K0:fGiBRHDBrjHY4XiIVh32BGAz/nvJURti0OSnCnV3mKmfPNQ8bMq 1uIiykhwFt4gbuuoSn1BW1tmRKRQD2ahFdNIIwc8z2UkYht81jKcbGodPo8hSK2Rk+fyOhi mv6QnTt/dTZP7e01L7YxXGJtJvAa5VdOZe2PZAqGKRBpNHmgE51bmfZziaslIwugNDhN916 XoYaWZglkadBEwkev7IRg== X-UI-Out-Filterresults: notjunk:1;V01:K0:w5zhEFVkbWs=:EVpf1EM8XLLS6oKb+IOMqe VQLDh+qY8T5VMz+4Z+XycuDrR4Bw9jQVLYHN1KvTO8OB3YBGCIvFadEowNp6jdzvYX0iNX/fC 4McPbAEg8pIn8mwKSK9qukJVTV4x3MmJbrxkkqQlWq6yrWBQckDRqEN6opFl83GgSr9O3rlOg ZzAgy8jBIp0c+SA+LinpadH8E7BqEJtiWHdl/VW2pgnZuwsyUvQ5MHJeicgW25XanLfXRcnik QIz6X2XD4FX/Kb3G691Zs5HMchPaUbaI7t80DAp0nzB0U8N893LoDzT2lEnJmKv7UcxbaOmHr C2WzQ99xaDO26UOnhUTCcE/sIFAUnMx/es3eJItKRTibQULipxpm73AqJY7LtchCklqJDwIVV qDKek6PF2S8RKHQKsPiKUo+asCPzfYPbS0O8k6m7ve/raOcC11ePmQolMVzsA/UARiLV1CDRv PDxzcrCzBOdjanDLe45PKl7/61/PH2sP+JKYAMz2B1sjn2JI2RWsQhivUfOOhLZWQ62WKsSn5 H2xoQNRqpqDztNrq0GccsGTc6LYsA0o9YMTHRW1crqDetjFBKJ9YkgqSa3v7aXo2hQrYD6XK3 6J0sHrjRcJ9n7jpnwO1IJHZQbnqn7/BjH3fYvgpRA5sJOVjkYY3qiN27mhs8CnXPyVlxKJz/u qabn2u128RJbzjsKnPCRdCFBwQjA9tn7vWlX5n6a+umU1sIBu7+x3x/GCfAGmIisAaLurCd0V u+6Yi57+h+crUJ50tLEkw/R5Mvnc0oSGoKbnNg== Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Factor out code from rtl8723bs_recv_tasklet() into helper methods to unindent lines over 80 characters. Signed-off-by: Quytelda Kahja --- drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c | 95 +++++++++++++++++++------- 1 file changed, 69 insertions(+), 26 deletions(-) diff --git a/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c b/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c index c4851a825fbb..038481655858 100644 --- a/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c +++ b/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c @@ -189,6 +189,55 @@ static void rtl8723bs_c2h_packet_handler(struct adapter *padapter, return; } +static inline union recv_frame *try_alloc_recvframe(struct recv_priv *precvpriv, + struct recv_buf *precvbuf) +{ + union recv_frame *precvframe; + + precvframe = rtw_alloc_recvframe(&precvpriv->free_recv_queue); + if (!precvframe) { + DBG_8192C("%s: no enough recv frame!\n", __func__); + rtw_enqueue_recvbuf_to_head(precvbuf, + &precvpriv->recv_buf_pending_queue); + + /* The case of can't allocte recvframe should be temporary, */ + /* schedule again and hope recvframe is available next time. */ + tasklet_schedule(&precvpriv->recv_tasklet); + } + + return precvframe; +} + +static inline bool rx_crc_err(struct recv_priv *precvpriv, + struct hal_com_data *p_hal_data, + struct rx_pkt_attrib *pattrib, + union recv_frame *precvframe) +{ + /* fix Hardware RX data error, drop whole recv_buffer */ + if ((!(p_hal_data->ReceiveConfig & RCR_ACRC32)) && pattrib->crc_err) { + DBG_8192C("%s()-%d: RX Warning! rx CRC ERROR !!\n", + __func__, __LINE__); + rtw_free_recvframe(precvframe, &precvpriv->free_recv_queue); + return true; + } + + return false; +} + +static inline bool pkt_exceeds_tail(struct recv_priv *precvpriv, + u8 *end, u8 *tail, + union recv_frame *precvframe) +{ + if (end > tail) { + DBG_8192C("%s()-%d: : next pkt len(%p,%d) exceed ptail(%p)!\n", + __func__, __LINE__, ptr, pkt_offset, precvbuf->ptail); + rtw_free_recvframe(precvframe, &precvpriv->free_recv_queue); + return true; + } + + return false; +} + static void rtl8723bs_recv_tasklet(void *priv) { struct adapter *padapter; @@ -197,6 +246,7 @@ static void rtl8723bs_recv_tasklet(void *priv) struct recv_buf *precvbuf; union recv_frame *precvframe; struct rx_pkt_attrib *pattrib; + struct __queue *recv_buf_queue; u8 *ptr; u32 pkt_offset, skb_len, alloc_sz; _pkt *pkt_copy = NULL; @@ -205,52 +255,45 @@ static void rtl8723bs_recv_tasklet(void *priv) padapter = priv; p_hal_data = GET_HAL_DATA(padapter); precvpriv = &padapter->recvpriv; + recv_buf_queue = &precvpriv->recv_buf_pending_queue; do { - precvbuf = rtw_dequeue_recvbuf(&precvpriv->recv_buf_pending_queue); + precvbuf = rtw_dequeue_recvbuf(recv_buf_queue); if (NULL == precvbuf) break; ptr = precvbuf->pdata; while (ptr < precvbuf->ptail) { - precvframe = rtw_alloc_recvframe(&precvpriv->free_recv_queue); - if (precvframe == NULL) { - DBG_8192C("%s: no enough recv frame!\n", __func__); - rtw_enqueue_recvbuf_to_head(precvbuf, &precvpriv->recv_buf_pending_queue); - - /* The case of can't allocte recvframe should be temporary, */ - /* schedule again and hope recvframe is available next time. */ - tasklet_schedule(&precvpriv->recv_tasklet); + precvframe = try_alloc_recvframe(precvpriv, precvbuf); + if(!precvframe) return; - } /* rx desc parsing */ - update_recvframe_attrib(padapter, precvframe, (struct recv_stat *)ptr); + update_recvframe_attrib(padapter, precvframe, + (struct recv_stat *)ptr); pattrib = &precvframe->u.hdr.attrib; - /* fix Hardware RX data error, drop whole recv_buffer */ - if ((!(p_hal_data->ReceiveConfig & RCR_ACRC32)) && pattrib->crc_err) { - DBG_8192C("%s()-%d: RX Warning! rx CRC ERROR !!\n", __func__, __LINE__); - rtw_free_recvframe(precvframe, &precvpriv->free_recv_queue); + if(rx_crc_err(precvpriv, p_hal_data, + pattrib, precvframe)) break; - } rx_report_sz = RXDESC_SIZE + pattrib->drvinfo_sz; - pkt_offset = rx_report_sz + pattrib->shift_sz + pattrib->pkt_len; + pkt_offset = rx_report_sz + + pattrib->shift_sz + + pattrib->pkt_len; - if ((ptr + pkt_offset) > precvbuf->ptail) { - DBG_8192C("%s()-%d: : next pkt len(%p,%d) exceed ptail(%p)!\n", __func__, __LINE__, ptr, pkt_offset, precvbuf->ptail); - rtw_free_recvframe(precvframe, &precvpriv->free_recv_queue); + if(pkt_exceeds_tail(precvpriv, ptr + pkt_offset, + precvbuf->ptail, precvframe)) break; - } if ((pattrib->crc_err) || (pattrib->icv_err)) { - { - DBG_8192C("%s: crc_err =%d icv_err =%d, skip!\n", __func__, pattrib->crc_err, pattrib->icv_err); - } - rtw_free_recvframe(precvframe, &precvpriv->free_recv_queue); + DBG_8192C("%s: crc_err =%d icv_err =%d, skip!\n", + __func__, pattrib->crc_err, + pattrib->icv_err); + rtw_free_recvframe(precvframe, + &precvpriv->free_recv_queue); } else { /* Modified by Albert 20101213 */ /* For 8 bytes IP header alignment. */ @@ -301,7 +344,7 @@ static void rtl8723bs_recv_tasklet(void *priv) skb_reset_tail_pointer(pkt_clone); precvframe->u.hdr.rx_head = precvframe->u.hdr.rx_data = precvframe->u.hdr.rx_tail = pkt_clone->data; - precvframe->u.hdr.rx_end = pkt_clone->data + skb_len; + precvframe->u.hdr.rx_end = pkt_clone->data + skb_len; } else { DBG_8192C("%s: rtw_skb_clone fail\n", __func__); rtw_free_recvframe(precvframe, &precvpriv->free_recv_queue); -- 2.16.3