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>] [day] [month] [year] [list]
Message-ID: <20080416215345.GA6297@elf.ucw.cz>
Date:	Wed, 16 Apr 2008 23:53:45 +0200
From:	Pavel Machek <pavel@....cz>
To:	kernel list <linux-kernel@...r.kernel.org>, kaszak@...il.com,
	lcostantino@...il.com
Subject: w35und: remove ethernet handling, oops magically went away


Remove ethernet handling from mds_TX, and driver started to work
again. I can ping without oopsing.

---
commit c9835475305cc8e53445fb6245269226309fd5ff
tree 5cebb08a98c9f0e2b2c4ac066ef48ff1c00f3942
parent 90a0c62430295f08de972148641283b592a21aa4
author Pavel <pavel@....ucw.cz> Wed, 16 Apr 2008 23:52:56 +0200
committer Pavel <pavel@....ucw.cz> Wed, 16 Apr 2008 23:52:56 +0200

 drivers/net/wireless/winbond/winbondport/mds.c |  180 +-----------------------
 1 files changed, 8 insertions(+), 172 deletions(-)

diff --git a/drivers/net/wireless/winbond/winbondport/mds.c b/drivers/net/wireless/winbond/winbondport/mds.c
index e7c7b28..8064deb 100644
--- a/drivers/net/wireless/winbond/winbondport/mds.c
+++ b/drivers/net/wireless/winbond/winbondport/mds.c
@@ -328,135 +328,12 @@ Mds_HeaderCopy(PADAPTER Adapter, PDESCRI
 	// Key ID setup
 	pT01->T01_wep_id = 0;
 
-	//
-	// Header convert from 802.3 to 802.11
-	//
-	if (DESCRIPTOR_GET_TYPE( pDes ) == FRAME_TYPE_802_3_DATA) {
-		// Setting 802.11 Frame control 2 byte
-		buffer = TargetBuffer; // Reserved for USB header
-		*buffer = 0x08;// Data type
-		buffer++;
-		*buffer = CURRENT_BSS_TYPE;// BSS type
-		buffer++;
-		buffer+=2;// Duration skipping
-
-		if( src_buffer[0] & 0x1 )	// belong to Group address in DA field. Do not fragment.
-			FragmentThreshold = DEFAULT_FRAGMENT_THRESHOLD;
-
-		switch (CURRENT_BSS_TYPE) {
-			case IBSS_NET:
-				//Copy DA-SA
-				memcpy( buffer, src_buffer, DOT_3_TYPE_OFFSET );
-				buffer += DOT_3_TYPE_OFFSET;
-				//Copy BSSID
-				memcpy( buffer,	CURRENT_BSSID, ETH_LENGTH_OF_ADDRESS );
-				break;
-
-			case ESS_NET:
-				//Copy BSSID
-				memcpy( buffer, CURRENT_BSSID, ETH_LENGTH_OF_ADDRESS );
-				buffer += ETH_LENGTH_OF_ADDRESS;
-				//Copy SA
-				memcpy( buffer, (src_buffer+6), ETH_LENGTH_OF_ADDRESS );
-				buffer += ETH_LENGTH_OF_ADDRESS;
-				//Copy DA
-				memcpy( buffer, src_buffer, ETH_LENGTH_OF_ADDRESS );
-				break;
-		}
-		buffer += ETH_LENGTH_OF_ADDRESS;
-
-		// Skip Frag number and sequence number, set it to 0
-		*(PUSHORT)buffer = 0; // @@ offset 18 from 4n start
-		buffer+=2;
-
-		//=====================================================================
-		// DA SA process OK, transfer the Type/Length encapsulation
-		// The format of first buffer in Descriptor => 14 byte = DA + SA + Type/Length
-		//=====================================================================
-
-		//
-		// Type or Length encapsulation detect
-		//
-		src_buffer+=12;
-		stmp = src_buffer[0] << 8;
-		stmp |= src_buffer[1];
-		if( stmp >= 1536 )// Type encapsulated. Else Treated as length encapsulated. Ignore the length field.
-		{
-			// Fill snap into descriptor 931130.5.i
-			pDes->buffer_address[0] = buffer;
-			pDes->buffer_size[0] = DOT_11_SNAP_SIZE + 2;
-
-			*(PULONG)buffer = cpu_to_le32(0x0003aaaa);// SNAP have to fill into also // @@ YY's endian
-			buffer += 4;
-			*(PUSHORT)buffer = 0x0000;// RFC1042 encapsulation format shall be used. //@@
-
-			if( stmp==0x80F3 || stmp==0x8137 )//Because the stmp has been translated to big-endian.
-			{
-				// Type encapsulated but this protocol type in the table
-				// 802.1H bridge tunnel encapsulation format shall be used.
-				//
-				*(PUSHORT)buffer = cpu_to_le16(0xF800); // YY's endian
-			}
-			buffer+=2;
-			*(PUSHORT)buffer = *(PUSHORT)src_buffer;// Copy Type // @@
-			pDes->buffer_total_size -= 6;//( (DOT_3_TYPE_OFFSET + 2) - (DOT_11_SNAP_SIZE + 2) );
-		}
-		else
-		{
-			// 1'st buffer process complete. Remove the 1'st buffer of descriptor
-			pDes->buffer_start_index++;
-			pDes->buffer_number--;
-			pDes->buffer_total_size -= (DOT_3_TYPE_OFFSET + 2); // 14 byte for DA + SA + Type/Length
-		}
-
-		{
-			//In the WPA countermeasure, it needs to recognize whether the packet is 802.1x
-			//after two mic error are found within 2 s.
-			//The driver should disassociate after the next 802.1x message is transmitted.
-			if ( Adapter->Mds.boCounterMeasureBlock )
-			{
-				pMds->TxInfo[DESCRIPTOR_GET_ID(pDes)] = 1;
-				#ifdef _PE_STATE_DUMP_
-				WBDEBUG(("This is the 802.1x message before sending disassociation frame.\n"));
-				#endif
-			}
-		}
-
-		// Test fix pairwise key setting.
-		if( (src_buffer[3] == 0x03) && // packet type = EAPOL-Key
-			(src_buffer[7] == 0x01) && // 4th message of 4 way handshaking
-			(src_buffer[8] == 0x09) )
-		{
-			u32	*pKeyNonce;
-			u8	i;
-
-			pKeyNonce = (PULONG)((PUCHAR)src_buffer + 19);
-			for( i=0; i<4; i++ )
-			{
-				if( pKeyNonce[i] != 0 )
-				{
-					break;
-				}
-			}
-
-			if( i == 4 )
-			{
-				#ifdef _PE_STATE_DUMP_
-				WBDEBUG(("** The 4th message of PairwiseKey 4 way handshaking!!\n"));
-				#endif
-				pDes->EapFix = 1;
-			}
-		}
-	}
-	else
-	{
-		FragmentThreshold = DEFAULT_FRAGMENT_THRESHOLD;	//Do not fragment
-		// Copy full data, the 1'st buffer contain all the data 931130.5.j
-		memcpy( TargetBuffer, src_buffer, DOT_11_MAC_HEADER_SIZE );// Copy header
-		pDes->buffer_address[0] = src_buffer + DOT_11_MAC_HEADER_SIZE;
-		pDes->buffer_total_size -= DOT_11_MAC_HEADER_SIZE;
-		pDes->buffer_size[0] = pDes->buffer_total_size;
-	}
+	FragmentThreshold = DEFAULT_FRAGMENT_THRESHOLD;	//Do not fragment
+	// Copy full data, the 1'st buffer contain all the data 931130.5.j
+	memcpy( TargetBuffer, src_buffer, DOT_11_MAC_HEADER_SIZE );// Copy header
+	pDes->buffer_address[0] = src_buffer + DOT_11_MAC_HEADER_SIZE;
+	pDes->buffer_total_size -= DOT_11_MAC_HEADER_SIZE;
+	pDes->buffer_size[0] = pDes->buffer_total_size;
 
 	// Set fragment threshold
 	FragmentThreshold -= (DOT_11_MAC_HEADER_SIZE + 4);
@@ -469,50 +346,9 @@ Mds_HeaderCopy(PADAPTER Adapter, PDESCRI
 	// Set tx rate
 	//
 	stmp = *(PUSHORT)(TargetBuffer+30); // 2n alignment address
-	if( ((TargetBuffer[0]&MASK_PROTOCOL_VERSION_TYPE) == MAC_TYPE_MANAGEMENT) || (TargetBuffer[4] & 0x01)
-		|| (stmp == cpu_to_le16(0x8e88)) )
-	{
-		//Use basic rate
-		ctmp1 = ctmpf = CURRENT_TX_RATE_FOR_MNG;
-	}
-	else
-	{
-		if (psLOCAL->TxRateMode == RATE_AUTO)
-		{
-			u8		RateTmp;
-			u16		BssIdx;
-			u8	 	BitIndex;
-			u32		BitMap;
-
-			//ctmp1 = MTO_GetTxRate(Adapter, 1000);
-			RateTmp = MTO_GetTxRate(Adapter, 1000);
-			if (CURRENT_BSS_TYPE == ESS_NET)
-			{
-				CURRENT_TX_RATE = RateTmp;
-				#ifdef _USE_FALLBACK_RATE_
-				CURRENT_FALL_BACK_TX_RATE = MTO_GetTxFallbackRate(Adapter);
-				#else
-				CURRENT_FALL_BACK_TX_RATE = CURRENT_TX_RATE;
-				#endif
-			}
-			else
-			{
-				//IBSS mode should check whether peer STA supports this rate.
-				BitMap = 1 << bRateToBitmapIndex(Adapter, RateTmp);
-				CURRENT_TX_RATE = bBitmapToRate(1);
-				CURRENT_FALL_BACK_TX_RATE = CURRENT_TX_RATE;
-			}
-			printk("Tx rate =%d\n", CURRENT_TX_RATE);
-		}
-		ctmp1 = CURRENT_TX_RATE;
-		ctmpf = CURRENT_FALL_BACK_TX_RATE;
 
-		// Use the DSSS rate for sending during protect mode 931130.5.k
-		if( CURRENT_PROTECT_MECHANISM && (pDes->buffer_total_size > DESCRIPTOR_GET_FRAGMENT_THRESHOLD( pDes )) )
-		{
-			ctmp1 = ctmpf = RATE_11M;
-		}
-	}
+	//Use basic rate
+	ctmp1 = ctmpf = CURRENT_TX_RATE_FOR_MNG;
 
 	DESCRIPTOR_SET_TX_RATE( pDes, ctmp1 );
 	#ifdef _PE_TX_DUMP_

-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ