lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:   Fri, 9 Sep 2022 19:39:32 +0200
From:   Philipp Hortmann <philipp.g.hortmann@...il.com>
To:     Michael Straube <straube.linux@...il.com>,
        gregkh@...uxfoundation.org
Cc:     Larry.Finger@...inger.net, phil@...lpotter.co.uk,
        linux-staging@...ts.linux.dev, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] staging: r8188eu: make c2h_evt_read() static

On 9/9/22 12:02, Michael Straube wrote:
> The function c2h_evt_read() is only used in rtw_cmd.c.
> Make it static.
> 
> This addresses the TODO item:
> * Remove the HAL layer and migrate its functionality into the relevant
>    parts of the driver.
> 
> Signed-off-by: Michael Straube <straube.linux@...il.com>
> ---
>   drivers/staging/r8188eu/core/rtw_cmd.c    | 60 +++++++++++++++++++++
>   drivers/staging/r8188eu/hal/hal_com.c     | 63 -----------------------
>   drivers/staging/r8188eu/include/hal_com.h |  2 -
>   3 files changed, 60 insertions(+), 65 deletions(-)
> 
> diff --git a/drivers/staging/r8188eu/core/rtw_cmd.c b/drivers/staging/r8188eu/core/rtw_cmd.c
> index 4be83807405c..ca1f2cc52470 100644
> --- a/drivers/staging/r8188eu/core/rtw_cmd.c
> +++ b/drivers/staging/r8188eu/core/rtw_cmd.c
> @@ -1277,6 +1277,66 @@ u8 rtw_c2h_wk_cmd(struct adapter *padapter, u8 *c2h_evt)
>   	return res;
>   }
>   
> +/* C2H event format:
> + * Field    TRIGGER      CONTENT     CMD_SEQ    CMD_LEN    CMD_ID
> + * BITS     [127:120]    [119:16]    [15:8]     [7:4]      [3:0]
> + */
> +static s32 c2h_evt_read(struct adapter *adapter, u8 *buf)
> +{
> +	s32 ret = _FAIL;
> +	struct c2h_evt_hdr *c2h_evt;
> +	int i;
> +	u8 trigger;
> +
> +	if (!buf)
> +		goto exit;
> +
> +	ret = rtw_read8(adapter, REG_C2HEVT_CLEAR, &trigger);
> +	if (ret)
> +		return _FAIL;
> +
> +	if (trigger == C2H_EVT_HOST_CLOSE)
> +		goto exit; /* Not ready */
> +	else if (trigger != C2H_EVT_FW_CLOSE)
> +		goto clear_evt; /* Not a valid value */
> +
> +	c2h_evt = (struct c2h_evt_hdr *)buf;
> +
> +	memset(c2h_evt, 0, 16);
> +
> +	ret = rtw_read8(adapter, REG_C2HEVT_MSG_NORMAL, buf);
> +	if (ret) {
> +		ret = _FAIL;
> +		goto clear_evt;
> +	}
> +
> +	ret = rtw_read8(adapter, REG_C2HEVT_MSG_NORMAL + 1, buf + 1);
> +	if (ret) {
> +		ret = _FAIL;
> +		goto clear_evt;
> +	}
> +	/* Read the content */
> +	for (i = 0; i < c2h_evt->plen; i++) {
> +		ret = rtw_read8(adapter, REG_C2HEVT_MSG_NORMAL +
> +				sizeof(*c2h_evt) + i, c2h_evt->payload + i);
> +		if (ret) {
> +			ret = _FAIL;
> +			goto clear_evt;
> +		}
> +	}
> +
> +	ret = _SUCCESS;
> +
> +clear_evt:
> +	/* Clear event to notify FW we have read the command.
> +	 * If this field isn't clear, the FW won't update the next
> +	 * command message.
> +	 */
> +	rtw_write8(adapter, REG_C2HEVT_CLEAR, C2H_EVT_HOST_CLOSE);
> +exit:
> +	return ret;
> +}
> +
>   static void c2h_evt_hdl(struct adapter *adapter, struct c2h_evt_hdr *c2h_evt, c2h_id_filter filter)
>   {
>   	u8 buf[16];
> diff --git a/drivers/staging/r8188eu/hal/hal_com.c b/drivers/staging/r8188eu/hal/hal_com.c
> index 8416a65ba47b..33967eb3c0d0 100644
> --- a/drivers/staging/r8188eu/hal/hal_com.c
> +++ b/drivers/staging/r8188eu/hal/hal_com.c
> @@ -137,66 +137,3 @@ void HalSetBrateCfg(struct adapter *adapt, u8 *brates, u16 *rate_cfg)
>   		}
>   	}
>   }
> -
> -/*
> -* C2H event format:
> -* Field	 TRIGGER		CONTENT	   CMD_SEQ	CMD_LEN		 CMD_ID
> -* BITS	 [127:120]	[119:16]      [15:8]		  [7:4]		   [3:0]
> -*/
> -
> -s32 c2h_evt_read(struct adapter *adapter, u8 *buf)
> -{
> -	s32 ret = _FAIL;
> -	struct c2h_evt_hdr *c2h_evt;
> -	int i;
> -	u8 trigger;
> -
> -	if (!buf)
> -		goto exit;
> -
> -	ret = rtw_read8(adapter, REG_C2HEVT_CLEAR, &trigger);
> -	if (ret)
> -		return _FAIL;
> -
> -	if (trigger == C2H_EVT_HOST_CLOSE)
> -		goto exit; /* Not ready */
> -	else if (trigger != C2H_EVT_FW_CLOSE)
> -		goto clear_evt; /* Not a valid value */
> -
> -	c2h_evt = (struct c2h_evt_hdr *)buf;
> -
> -	memset(c2h_evt, 0, 16);
> -
> -	ret = rtw_read8(adapter, REG_C2HEVT_MSG_NORMAL, buf);
> -	if (ret) {
> -		ret = _FAIL;
> -		goto clear_evt;
> -	}
> -
> -	ret = rtw_read8(adapter, REG_C2HEVT_MSG_NORMAL + 1, buf + 1);
> -	if (ret) {
> -		ret = _FAIL;
> -		goto clear_evt;
> -	}
> -	/* Read the content */
> -	for (i = 0; i < c2h_evt->plen; i++) {
> -		ret = rtw_read8(adapter, REG_C2HEVT_MSG_NORMAL +
> -						sizeof(*c2h_evt) + i, c2h_evt->payload + i);
> -		if (ret) {
> -			ret = _FAIL;
> -			goto clear_evt;
> -		}
> -	}
> -
> -	ret = _SUCCESS;
> -
> -clear_evt:
> -	/*
> -	* Clear event to notify FW we have read the command.
> -	* If this field isn't clear, the FW won't update the next
> -	* command message.
> -	*/
> -	rtw_write8(adapter, REG_C2HEVT_CLEAR, C2H_EVT_HOST_CLOSE);
> -exit:
> -	return ret;
> -}
> diff --git a/drivers/staging/r8188eu/include/hal_com.h b/drivers/staging/r8188eu/include/hal_com.h
> index e8007295cd79..cd3f845e146a 100644
> --- a/drivers/staging/r8188eu/include/hal_com.h
> +++ b/drivers/staging/r8188eu/include/hal_com.h
> @@ -143,6 +143,4 @@ u8 MRateToHwRate(u8 rate);
>   
>   void HalSetBrateCfg(struct adapter *Adapter, u8 *mBratesOS, u16 *pBrateCfg);
>   
> -s32 c2h_evt_read(struct adapter *adapter, u8 *buf);
> -
>   #endif /* __HAL_COMMON_H__ */

Tested-by: Philipp Hortmann <philipp.g.hortmann@...il.com> # Edimax N150

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ