staging: r8188eu: Use in-kernel API and remove no more needed symbols
cover staging: r8188eu: Use in-kernel API and remove no more needed symbols
Use crc32_le() in-kernel API in place of the custom getcrc32(). Then remove no more necessary functions and variables that were needed by getcrc32().
Fabio M. De Francesco (2):
staging: r8188eu: Replace a custom function with crc32_le()
staging: r8188eu: Remove no more used functions and variables
drivers/staging/r8188eu/core/rtw_security.c | 111 ++++++-------------- 1 file changed, 35 insertions(+), 76 deletions(-)
Signature · 1 line
2.32.0
PATCH 1/2 staging: r8188eu: Replace a custom function with crc32_le()
Use crc32_le() in place of the custom getcrc32().
--- drivers/staging/r8188eu/core/rtw_security.c | 74 ++++++++++----------- 1 file changed, 35 insertions(+), 39 deletions(-)
drivers/staging/r8188eu/core/rtw_security.c +35 -39
@@ -111,29 +111,15 @@ static void crc32_init(void) } } -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,u8 *pxmitframe) {/* exclude ICV */ - -unsigned char crc[4 ]; +union { +__le32 f0; +u8 f1[4 ]; + } crc;struct arc4context mycontext;int curfragnum, length;
@@ -167,17 +153,17 @@ void rtw_wep_encrypt(struct adapter *padapter, u8 *pxmitframe)if ((curfragnum+1 ) == pattrib->nr_frags) {/* the last fragment */ length = pattrib->last_txcmdsz-pattrib->hdrlen-pattrib->iv_len-pattrib->icv_len; - *((__le32 *)crc) =getcrc32 (payload, length); + crc.f0 =cpu_to_le32 (~crc32_le (~0 , payload, length));arcfour_init (&mycontext, wepkey,3 +keylength);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); + crc.f0 =cpu_to_le32 (~crc32_le (~0 , payload, length));arcfour_init (&mycontext, wepkey,3 +keylength);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 *)RND4 ((size_t )(pframe));
@@ -190,7 +176,10 @@ void rtw_wep_encrypt(struct adapter *padapter, u8 *pxmitframe)void rtw_wep_decrypt (struct adapter *padapter,u8 *precvframe) {/* exclude ICV */ -u8 crc[4 ]; +union { +__le32 f0; +u8 f1[4 ]; + } crc;struct arc4context mycontext;int length;u32 keylength;
@@ -217,12 +206,12 @@ void rtw_wep_decrypt(struct adapter *padapter, u8 *precvframe)arcfour_encrypt (&mycontext, payload, payload, length);/* calculate icv and compare the icv */ - *((__le32 *)crc) =getcrc32 (payload, length -4 ); + crc.f0 =cpu_to_le32 (~crc32_le (~0 , payload, length)); -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 ]) {RT_TRACE (_module_rtl871x_security_c_, _drv_err_, ("rtw_wep_decrypt:icv error crc (%4ph)!=payload (%4ph)\n" , &crc, &payload[length-4 ]));
@@ -574,7 +563,10 @@ u32 rtw_tkip_encrypt(struct adapter *padapter, u8 *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;
@@ -624,17 +616,18 @@ u32 rtw_tkip_encrypt(struct adapter *padapter, u8 *pxmitframe)RT_TRACE (_module_rtl871x_security_c_, _drv_info_, ("pattrib->iv_len=%x, pattrib->icv_len=%x\n" , 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 *)RND4 ((size_t )(pframe));
@@ -656,7 +649,10 @@ u32 rtw_tkip_decrypt(struct adapter *padapter, u8 *precvframe)u32 pnh;u8 rc4key[16 ];u8 ttkey[16 ]; -u8 crc[4 ]; +union { +__le32 f0; +u8 f1[4 ]; + } crc;struct arc4context mycontext;int length;
@@ -702,12 +698,12 @@ u32 rtw_tkip_decrypt(struct adapter *padapter, u8 *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)); -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 ]) {RT_TRACE (_module_rtl871x_security_c_, _drv_err_, ("rtw_wep_decrypt:icv error crc (%4ph)!=payload (%4ph)\n" , &crc, &payload[length-4 ]));
Signature · 1 line
2.32.0
PATCH 2/2 staging: r8188eu: 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().
--- drivers/staging/r8188eu/core/rtw_security.c | 37 --------------------- 1 file changed, 37 deletions(-)
drivers/staging/r8188eu/core/rtw_security.c +0 -37
@@ -74,43 +74,6 @@ static void arcfour_encrypt(struct arc4context *parc4ctx, u8 *dest, u8 *src, u32 } -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 ) -{ -if (bcrc32initialized ==1 ) { -return ; - }else { -int i, j; -u32 c; -u8 *p = (u8 *)&c, *p1; -u8 k; - - 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 */
Signature · 1 line
2.32.0
Re: [PATCH 2/2] staging: r8188eu: Remove no more used functions and variables
Quoted 47 lines · Fabio M. De Francesco
Remove the functions and variables from
rtw_security.cthat are no more necessary since the patch that replacesgetcrc32()withcrc32_le().Signed-off-by Fabio M. De Francesco <[email protected]>--- drivers/staging/r8188eu/core/rtw_security.c | 37 --------------------- 1 file changed, 37 deletions(-)drivers/staging/r8188eu/core/rtw_security.c +0
-30@@ -74,43 +74,6 @@ static void arcfour_encrypt(struct arc4context *parc4ctx, u8 *dest, u8 *src, u32 } -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 ) -{ -if (bcrc32initialized ==1 ) { -return ; - }else { -int i, j; -u32 c; -u8 *p = (u8 *)&c, *p1; -u8 k; - - 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 ]);
drivers/staging/r8188eu/core/rtw_security.c static void arcfour_encrypt(struct arc4context *parc4ctx, u8 *dest, u8 *src, u32 · line 79
Quoted 10 lines
drivers/staging/r8188eu/core/rtw_security.c +0
-7- p1[2 ] =crc32_reverseBit (p[1 ]); - p1[3 ] =crc32_reverseBit (p[0 ]); - } - bcrc32initialized =1 ; - } -} -/* Need to consider the fragment situation */
These two patches are
Thanks for your contribution.
Larry