staging: rtl8188eu: Replace a custom function with crc32_le()
v4 cover staging: rtl8188eu: Replace a custom function with crc32_le()
Use kernel API crc32_le() in place of the custom getcrc32(). Remove no more used functions and variables after the changes made by patch 1/2.
Fabio M. De Francesco (2):
staging: rtl8188eu: Replace a custom function with crc32_le()
staging: rtl8188eu: Remove no more used functions and variables
drivers/staging/rtl8188eu/core/rtw_security.c | 81 +++++-------------- 1 file changed, 19 insertions(+), 62 deletions(-)
Signature · 1 line
2.32.0
PATCH v4 1/2 staging: rtl8188eu: Replace a custom function with crc32_le()
Use crc32_le() in place of the custom getcrc32().
---
v3 --> v4:
According to a suggestion of David Laight, kill the casts of crc to __le32.
v2 --> v3:
Join two related patches in a series because they must be applied in order (first 1/2, then 2/2). Rebase to the current Greg K-H's tree and resend.
v1 --> v2:
Use cpu_to_le32() to assign native endian return value of crc32_le to crc in little endian byte order.
drivers/staging/rtl8188eu/core/rtw_security.c | 45 ++++++++----------- 1 file changed, 19 insertions(+), 26 deletions(-)
drivers/staging/rtl8188eu/core/rtw_security.c +19 -26
@@ -11,6 +11,7 @@#include <wifi.h> #include <osdep_intf.h> #include <net/lib80211.h> +#include <linux/types.h> /* WEP related ===== */
@@ -111,21 +112,6 @@ static void crc32_init(void) bcrc32initialized =1 ; } -static __le32 getcrc32 (u8 *buf,int len) -{ -u8 *p; -u32 crc; - -if (bcrc32initialized ==0 ) -crc32_init (); - - crc =0xffffffff ;/* preload shift register, per CRC-32 spec */ - -for (p = buf; len >0 ; ++p, --len) - crc = crc32_table[(crc ^ *p) &0xff ] ^ (crc >>8 ); -return cpu_to_le32 (~crc);/* transmit complement, per CRC-32 spec */ -} -/* Need to consider the fragment situation */ void rtw_wep_encrypt (struct adapter *padapter,struct xmit_frame *pxmitframe) {
@@ -564,7 +550,10 @@ u32 rtw_tkip_encrypt(struct adapter *padapter, struct xmit_frame *pxmitframe)u32 pnh;u8 rc4key[16 ];u8 ttkey[16 ]; -u8 crc[4 ]; +union { +__le32 f0; +u8 f1[4 ]; + } crc;u8 hw_hdr_offset =0 ;struct arc4context mycontext;int curfragnum, length;
@@ -609,17 +598,18 @@ u32 rtw_tkip_encrypt(struct adapter *padapter, struct xmit_frame *pxmitframe)if ((curfragnum +1 ) == pattrib->nr_frags) {/* 4 the last fragment */ length = pattrib->last_txcmdsz - pattrib->hdrlen - pattrib->iv_len - pattrib->icv_len; - *((__le32 *)crc) =getcrc32 (payload, length);/* modified by Amy*/ + crc.f0 =cpu_to_le32 (~crc32_le (~0 , payload, length));arcfour_init (&mycontext, rc4key,16 );arcfour_encrypt (&mycontext, payload, payload, length); -arcfour_encrypt (&mycontext, payload + length, crc,4 ); +arcfour_encrypt (&mycontext, payload + length, crc.f1,4 ); }else { length = pxmitpriv->frag_len - pattrib->hdrlen - pattrib->iv_len - pattrib->icv_len; - *((__le32 *)crc) =getcrc32 (payload, length);/* modified by Amy*/ + crc.f0 =cpu_to_le32 (~crc32_le (~0 , payload, length)); +arcfour_init (&mycontext, rc4key,16 );arcfour_encrypt (&mycontext, payload, payload, length); -arcfour_encrypt (&mycontext, payload + length, crc,4 ); +arcfour_encrypt (&mycontext, payload + length, crc.f1,4 ); pframe += pxmitpriv->frag_len; pframe = (u8 *)round_up ((size_t )(pframe),4 );
@@ -639,7 +629,10 @@ u32 rtw_tkip_decrypt(struct adapter *padapter, struct recv_frame *precvframe)u32 pnh;u8 rc4key[16 ];u8 ttkey[16 ]; -u8 crc[4 ]; +union { +__le32 f0; +u8 f1[4 ]; + } crc;struct arc4context mycontext;int length;u8 *pframe, *payload, *iv, *prwskey;
@@ -682,12 +675,12 @@ u32 rtw_tkip_decrypt(struct adapter *padapter, struct recv_frame *precvframe)arcfour_init (&mycontext, rc4key,16 );arcfour_encrypt (&mycontext, payload, payload, length); - *((__le32 *)crc) =getcrc32 (payload, length -4 ); + crc.f0 =cpu_to_le32 (~crc32_le (~0 , payload, length -4 )); -if (crc[3 ] != payload[length -1 ] || - crc[2 ] != payload[length -2 ] || - crc[1 ] != payload[length -3 ] || - crc[0 ] != payload[length -4 ]) +if (crc.f1[3 ] != payload[length -1 ] || + crc.f1[2 ] != payload[length -2 ] || + crc.f1[1 ] != payload[length -3 ] || + crc.f1[0 ] != payload[length -4 ]) res = _FAIL; }else { res = _FAIL;
Signature · 1 line
2.32.0
PATCH v4 2/2 staging: rtl8188eu: Remove no more used functions and variables
In reply to Fabio M. De FrancescoRemove the functions and variables from rtw_security.c that are no more necessary since the patch that replaces getcrc32() with crc32_le().
---
v3 --> v4:
No changes.
v2 --> v3:
Join two related patches in a series because they must be applied in order (first 1/2, then 2/2). Rebase to the current Greg K-H's tree and resend.
v1 -> v2:
Update the commit message with the URL of v2 of the above-mentioned patch.
drivers/staging/rtl8188eu/core/rtw_security.c | 36 ------------------- 1 file changed, 36 deletions(-)
drivers/staging/rtl8188eu/core/rtw_security.c +0 -36
@@ -76,42 +76,6 @@ static void arcfour_encrypt(struct arc4context *parc4ctx, u8 *dest, u8 *src, u32 dest[i] = src[i] ^ (unsigned char )arcfour_byte (parc4ctx); } -static int bcrc32initialized; -static u32 crc32_table[256 ]; - -static u8 crc32_reverseBit (u8 data) -{ -return (u8)((data <<7 ) &0x80 ) | ((data <<5 ) &0x40 ) | ((data <<3 ) &0x20 ) | - ((data <<1 ) &0x10 ) | ((data >>1 ) &0x08 ) | ((data >>3 ) &0x04 ) | - ((data >>5 ) &0x02 ) | ((data >>7 ) &0x01 ); -} - -static void crc32_init (void ) -{ -int i, j; -u32 c; -u8 *p = (u8 *)&c, *p1; -u8 k; - -if (bcrc32initialized ==1 ) -return ; - - c =0x12340000 ; - -for (i =0 ; i <256 ; ++i) { - k =crc32_reverseBit ((u8 )i); -for (c = ((u32 )k) <<24 , j =8 ; j >0 ; --j) - c = c &0x80000000 ? (c <<1 ) ^CRC32_POLY : (c <<1 ); - p1 = (u8 *)&crc32_table[i]; - - p1[0 ] =crc32_reverseBit (p[3 ]); - p1[1 ] =crc32_reverseBit (p[2 ]); - p1[2 ] =crc32_reverseBit (p[1 ]); - p1[3 ] =crc32_reverseBit (p[0 ]); - } - bcrc32initialized =1 ; -} -/* Need to consider the fragment situation */ void rtw_wep_encrypt (struct adapter *padapter,struct xmit_frame *pxmitframe) {
Signature · 1 line
2.32.0
Greg Kroah-Hartman
maintainerQuoted 9 lines · Fabio M. De Francesco
Use kernel API
crc32_le()in place of the customgetcrc32(). Remove no more used functions and variables after the changes made by patch 1/2.Fabio M. De Francesco (2):
staging: rtl8188eu: Replace a custom function withcrc32_le()
staging: rtl8188eu: Remove no more used functions and variablesdrivers/staging/rtl8188eu/core/rtw_security.c | 81 +++++-------------- 1 file changed, 19 insertions(+), 62 deletions(-)
Much nicer, thanks!
Quoted 4 lines · CEST Greg Kroah-Hartman
Quoted 3 lines · Fabio M. De Francesco
Use kernel API
crc32_le()in place of the customgetcrc32(). Remove no more used functions and variables after the changes made by patch 1/2.
Quoted 8 lines
Quoted 6 lines
Fabio M. De Francesco (2):
staging: rtl8188eu: Replace a custom function withcrc32_le()
staging: rtl8188eu: Remove no more used functions and variablesdrivers/staging/rtl8188eu/core/rtw_security.c | 81 +++++-------------- 1 file changed, 19 insertions(+), 62 deletions(-)Much nicer, thanks!
Glad you appreciated my solution to this problem. There is another driver (rtl8723bs) that needs a change like this. I will post a similar patch by tomorrow.
Thanks very much,
Fabio