Needs changelog and signoff, but otherwise ok. Pavel On Fri 2010-03-12 22:45:37, Lars Lindley wrote: > > diff --git a/drivers/staging/winbond/mds.c b/drivers/staging/winbond/mds.c > index 37e0c18..46d7921 100644 > --- a/drivers/staging/winbond/mds.c > +++ b/drivers/staging/winbond/mds.c > @@ -5,8 +5,7 @@ > #include "wbhal_f.h" > #include "wblinux_f.h" > > -unsigned char > -Mds_initial(struct wbsoft_priv * adapter) > +unsigned char Mds_initial(struct wbsoft_priv *adapter) > { > struct wb35_mds *pMds = &adapter->Mds; > > @@ -14,24 +13,24 @@ Mds_initial(struct wbsoft_priv * adapter) > pMds->TxRTSThreshold = DEFAULT_RTSThreshold; > pMds->TxFragmentThreshold = DEFAULT_FRAGMENT_THRESHOLD; > > - return hal_get_tx_buffer( &adapter->sHwData, &pMds->pTxBuffer ); > + return hal_get_tx_buffer(&adapter->sHwData, &pMds->pTxBuffer); > } > > -void > -Mds_Destroy(struct wbsoft_priv * adapter) > +void Mds_Destroy(struct wbsoft_priv *adapter) > { > } > > -static void Mds_DurationSet(struct wbsoft_priv *adapter, struct wb35_descriptor *pDes, u8 *buffer) > +static void Mds_DurationSet(struct wbsoft_priv *adapter, > + struct wb35_descriptor *pDes, u8 *buffer) > { > PT00_DESCRIPTOR pT00; > PT01_DESCRIPTOR pT01; > - u16 Duration, NextBodyLen, OffsetSize; > - u8 Rate, i; > + u16 Duration, NextBodyLen, OffsetSize; > + u8 Rate, i; > unsigned char CTS_on = false, RTS_on = false; > PT00_DESCRIPTOR pNextT00; > - u16 BodyLen = 0; > - unsigned char boGroupAddr = false; > + u16 BodyLen = 0; > + unsigned char boGroupAddr = false; > > OffsetSize = pDes->FragmentThreshold + 32 + 3; > OffsetSize &= ~0x03; > @@ -43,194 +42,181 @@ static void Mds_DurationSet(struct wbsoft_priv *adapter, struct wb35_descriptor > pT01 = (PT01_DESCRIPTOR)(buffer+4); > pNextT00 = (PT00_DESCRIPTOR)(buffer+OffsetSize); > > - if( buffer[ DOT_11_DA_OFFSET+8 ] & 0x1 ) // +8 for USB hdr > + if (buffer[DOT_11_DA_OFFSET+8] & 0x1) /* +8 for USB hdr */ > boGroupAddr = true; > > - //======================================== > - // Set RTS/CTS mechanism > - //======================================== > - if (!boGroupAddr) > - { > - //NOTE : If the protection mode is enabled and the MSDU will be fragmented, > - // the tx rates of MPDUs will all be DSSS rates. So it will not use > - // CTS-to-self in this case. CTS-To-self will only be used when without > - // fragmentation. -- 20050112 > - BodyLen = (u16)pT00->T00_frame_length; //include 802.11 header > - BodyLen += 4; //CRC > - > - if( BodyLen >= CURRENT_RTS_THRESHOLD ) > - RTS_on = true; // Using RTS > - else > - { > - if( pT01->T01_modulation_type ) // Is using OFDM > - { > - if( CURRENT_PROTECT_MECHANISM ) // Is using protect > - CTS_on = true; // Using CTS > + /*======================================== > + * Set RTS/CTS mechanism > + *========================================*/ > + if (!boGroupAddr) { > + /*NOTE : If the protection mode is enabled and the MSDU will be > + * fragmented, the tx rates of MPDUs will all be DSSS > + * rates. So it will not use CTS-to-self in this case. > + * CTS-To-self will only be used when without > + * fragmentation. -- 20050112 */ > + BodyLen = (u16)pT00->T00_frame_length; /*include 802.11 header*/ > + BodyLen += 4; /*CRC*/ > + > + if (BodyLen >= CURRENT_RTS_THRESHOLD) > + RTS_on = true; /* Using RTS */ > + else { > + if (pT01->T01_modulation_type) { /* Is using OFDM */ > + if (CURRENT_PROTECT_MECHANISM) /* Is using > + protect */ > + CTS_on = true; /* Using CTS */ > } > } > } > > - if( RTS_on || CTS_on ) > - { > - if( pT01->T01_modulation_type) // Is using OFDM > - { > - //CTS duration > - // 2 SIFS + DATA transmit time + 1 ACK > - // ACK Rate : 24 Mega bps > - // ACK frame length = 14 bytes > + if (RTS_on || CTS_on) { > + if (pT01->T01_modulation_type) { /* Is using OFDM */ > + /*CTS duration > + * 2 SIFS + DATA transmit time + 1 ACK > + * ACK Rate : 24 Mega bps > + * ACK frame length = 14 bytes*/ > Duration = 2*DEFAULT_SIFSTIME + > - 2*PREAMBLE_PLUS_SIGNAL_PLUS_SIGNALEXTENSION + > - ((BodyLen*8 + 22 + Rate*4 - 1)/(Rate*4))*Tsym + > - ((112 + 22 + 95)/96)*Tsym; > - } > - else //DSSS > - { > - //CTS duration > - // 2 SIFS + DATA transmit time + 1 ACK > - // Rate : ?? Mega bps > - // ACK frame length = 14 bytes > - if( pT01->T01_plcp_header_length ) //long preamble > - Duration = LONG_PREAMBLE_PLUS_PLCPHEADER_TIME*2; > + 2*PREAMBLE_PLUS_SIGNAL_PLUS_SIGNALEXTENSION + > + ((BodyLen*8 + 22 + Rate*4 - 1)/(Rate*4))*Tsym + > + ((112 + 22 + 95)/96)*Tsym; > + } else { /*DSSS*/ > + /*CTS duration > + *2 SIFS + DATA transmit time + 1 ACK > + * Rate : ?? Mega bps > + *ACK frame length = 14 bytes*/ > + if (pT01->T01_plcp_header_length) /*long preamble*/ > + Duration = LONG_PREAMBLE_PLUS_PLCPHEADER_TIME*2; > else > - Duration = SHORT_PREAMBLE_PLUS_PLCPHEADER_TIME*2; > + Duration = SHORT_PREAMBLE_PLUS_PLCPHEADER_TIME*2; > > - Duration += ( ((BodyLen + 14)*8 + Rate-1) / Rate + > - DEFAULT_SIFSTIME*2 ); > + Duration += (((BodyLen + 14)*8 + Rate-1) / Rate + > + DEFAULT_SIFSTIME*2); > } > > - if( RTS_on ) > - { > - if( pT01->T01_modulation_type ) // Is using OFDM > - { > - //CTS + 1 SIFS + CTS duration > - //CTS Rate : 24 Mega bps > - //CTS frame length = 14 bytes > + if (RTS_on) { > + if (pT01->T01_modulation_type) { /* Is using OFDM */ > + /*CTS + 1 SIFS + CTS duration > + *CTS Rate : 24 Mega bps > + *CTS frame length = 14 bytes*/ > Duration += (DEFAULT_SIFSTIME + > - PREAMBLE_PLUS_SIGNAL_PLUS_SIGNALEXTENSION + > - ((112 + 22 + 95)/96)*Tsym); > - } > - else > - { > - //CTS + 1 SIFS + CTS duration > - //CTS Rate : ?? Mega bps > - //CTS frame length = 14 bytes > - if( pT01->T01_plcp_header_length ) //long preamble > - Duration += LONG_PREAMBLE_PLUS_PLCPHEADER_TIME; > - else > - Duration += SHORT_PREAMBLE_PLUS_PLCPHEADER_TIME; > - > - Duration += ( ((112 + Rate-1) / Rate) + DEFAULT_SIFSTIME ); > + PREAMBLE_PLUS_SIGNAL_PLUS_SIGNALEXTENSION + > + ((112 + 22 + 95)/96)*Tsym); > + } else { > + /*CTS + 1 SIFS + CTS duration > + *CTS Rate : ?? Mega bps > + *CTS frame length = 14 bytes*/ > + if (pT01->T01_plcp_header_length) /*long preamble*/ > + Duration += LONG_PREAMBLE_PLUS_PLCPHEADER_TIME; > + else > + Duration += SHORT_PREAMBLE_PLUS_PLCPHEADER_TIME; > + > + Duration += (((112 + Rate-1) / Rate) > + + DEFAULT_SIFSTIME); > } > } > > - // Set the value into USB descriptor > + /* Set the value into USB descriptor */ > pT01->T01_add_rts = RTS_on ? 1 : 0; > pT01->T01_add_cts = CTS_on ? 1 : 0; > pT01->T01_rts_cts_duration = Duration; > } > > - //===================================== > - // Fill the more fragment descriptor > - //===================================== > - if( boGroupAddr ) > + /*===================================== > + * Fill the more fragment descriptor > + *=====================================*/ > + if (boGroupAddr) > Duration = 0; > - else > - { > - for( i=pDes->FragmentCount-1; i>0; i-- ) > - { > + else { > + for (i = pDes->FragmentCount-1; i > 0; i--) { > NextBodyLen = (u16)pNextT00->T00_frame_length; > - NextBodyLen += 4; //CRC > - > - if( pT01->T01_modulation_type ) > - { > - //OFDM > - // data transmit time + 3 SIFS + 2 ACK > - // Rate : ??Mega bps > - // ACK frame length = 14 bytes, tx rate = 24M > + NextBodyLen += 4; /*CRC*/ > + > + if (pT01->T01_modulation_type) { > + /*OFDM > + * data transmit time + 3 SIFS + 2 ACK > + * Rate : ??Mega bps > + * ACK frame length = 14 bytes, tx rate = 24M*/ > Duration = PREAMBLE_PLUS_SIGNAL_PLUS_SIGNALEXTENSION * 3; > Duration += (((NextBodyLen*8 + 22 + Rate*4 - 1)/(Rate*4)) * Tsym + > (((2*14)*8 + 22 + 95)/96)*Tsym + > DEFAULT_SIFSTIME*3); > - } > - else > - { > - //DSSS > - // data transmit time + 2 ACK + 3 SIFS > - // Rate : ??Mega bps > - // ACK frame length = 14 bytes > - //TODO : > - if( pT01->T01_plcp_header_length ) //long preamble > + } else { > + /*DSSS > + *data transmit time + 2 ACK + 3 SIFS > + * Rate : ??Mega bps > + * ACK frame length = 14 bytes > + * TODO : */ > + if (pT01->T01_plcp_header_length) /*long preamble*/ > Duration = LONG_PREAMBLE_PLUS_PLCPHEADER_TIME*3; > else > Duration = SHORT_PREAMBLE_PLUS_PLCPHEADER_TIME*3; > > - Duration += ( ((NextBodyLen + (2*14))*8 + Rate-1) / Rate + > - DEFAULT_SIFSTIME*3 ); > + Duration += (((NextBodyLen + (2*14))*8 + Rate-1) / Rate + > + DEFAULT_SIFSTIME*3); > } > > - ((u16 *)buffer)[5] = cpu_to_le16(Duration);// 4 USHOR for skip 8B USB, 2USHORT=FC + Duration > + ((u16 *)buffer)[5] = cpu_to_le16(Duration);/*4 USHOR for skip 8B USB, 2USHORT=FC + Duration*/ > > - //----20061009 add by anson's endian > + /*----20061009 add by anson's endian*/ > pNextT00->value = cpu_to_le32(pNextT00->value); > - pT01->value = cpu_to_le32( pT01->value ); > - //----end 20061009 add by anson's endian > + pT01->value = cpu_to_le32(pT01->value); > + /*----end 20061009 add by anson's endian*/ > > buffer += OffsetSize; > pT01 = (PT01_DESCRIPTOR)(buffer+4); > - if (i != 1) //The last fragment will not have the next fragment > + if (i != 1) /* The last fragment will not have the > + next fragment */ > pNextT00 = (PT00_DESCRIPTOR)(buffer+OffsetSize); > } > > - //===================================== > - // Fill the last fragment descriptor > - //===================================== > - if( pT01->T01_modulation_type ) > - { > - //OFDM > - // 1 SIFS + 1 ACK > - // Rate : 24 Mega bps > - // ACK frame length = 14 bytes > + /*===================================== > + * Fill the last fragment descriptor > + *=====================================*/ > + if (pT01->T01_modulation_type) { > + /*OFDM > + * 1 SIFS + 1 ACK > + * Rate : 24 Mega bps > + * ACK frame length = 14 bytes*/ > Duration = PREAMBLE_PLUS_SIGNAL_PLUS_SIGNALEXTENSION; > - //The Tx rate of ACK use 24M > - Duration += (((112 + 22 + 95)/96)*Tsym + DEFAULT_SIFSTIME ); > - } > - else > - { > - // DSSS > - // 1 ACK + 1 SIFS > - // Rate : ?? Mega bps > - // ACK frame length = 14 bytes(112 bits) > - if( pT01->T01_plcp_header_length ) //long preamble > + /*The Tx rate of ACK use 24M*/ > + Duration += (((112 + 22 + 95)/96)*Tsym + DEFAULT_SIFSTIME); > + } else { > + /* DSSS > + * 1 ACK + 1 SIFS > + * Rate : ?? Mega bps > + * ACK frame length = 14 bytes(112 bits)*/ > + if (pT01->T01_plcp_header_length) /*long preamble*/ > Duration = LONG_PREAMBLE_PLUS_PLCPHEADER_TIME; > else > Duration = SHORT_PREAMBLE_PLUS_PLCPHEADER_TIME; > > - Duration += ( (112 + Rate-1)/Rate + DEFAULT_SIFSTIME ); > + Duration += ((112 + Rate-1)/Rate + DEFAULT_SIFSTIME); > } > } > > - ((u16 *)buffer)[5] = cpu_to_le16(Duration);// 4 USHOR for skip 8B USB, 2USHORT=FC + Duration > + ((u16 *)buffer)[5] = cpu_to_le16(Duration);/* 4 USHOR for skip 8B USB, > + 2USHORT=FC + Duration*/ > pT00->value = cpu_to_le32(pT00->value); > pT01->value = cpu_to_le32(pT01->value); > - //--end 20061009 add > + /*--end 20061009 add*/ > > } > > -// The function return the 4n size of usb pk > -static u16 Mds_BodyCopy(struct wbsoft_priv *adapter, struct wb35_descriptor *pDes, u8 *TargetBuffer) > +/* The function return the 4n size of usb pk*/ > +static u16 Mds_BodyCopy(struct wbsoft_priv *adapter, > + struct wb35_descriptor *pDes, u8 *TargetBuffer) > { > PT00_DESCRIPTOR pT00; > struct wb35_mds *pMds = &adapter->Mds; > - u8 *buffer; > - u8 *src_buffer; > - u8 *pctmp; > - u16 Size = 0; > - u16 SizeLeft, CopySize, CopyLeft, stmp; > - u8 buf_index, FragmentCount = 0; > + u8 *buffer; > + u8 *src_buffer; > + u8 *pctmp; > + u16 Size = 0; > + u16 SizeLeft, CopySize, CopyLeft, stmp; > + u8 buf_index, FragmentCount = 0; > > > - // Copy fragment body > - buffer = TargetBuffer; // shift 8B usb + 24B 802.11 > + /* Copy fragment body */ > + buffer = TargetBuffer; /* shift 8B usb + 24B 802.11 */ > SizeLeft = pDes->buffer_total_size; > buf_index = pDes->buffer_start_index; > > @@ -240,39 +226,39 @@ static u16 Mds_BodyCopy(struct wbsoft_priv *adapter, struct wb35_descriptor *pDe > CopySize = SizeLeft; > if (SizeLeft > pDes->FragmentThreshold) { > CopySize = pDes->FragmentThreshold; > - pT00->T00_frame_length = 24 + CopySize;//Set USB length > + pT00->T00_frame_length = 24 + CopySize;/*Set USBlength*/ > } else > - pT00->T00_frame_length = 24 + SizeLeft;//Set USB length > + pT00->T00_frame_length = 24 + SizeLeft;/*Set USBlength*/ > > SizeLeft -= CopySize; > > - // 1 Byte operation > - pctmp = (u8 *)( buffer + 8 + DOT_11_SEQUENCE_OFFSET ); > + /* 1 Byte operation */ > + pctmp = (u8 *)(buffer + 8 + DOT_11_SEQUENCE_OFFSET); > *pctmp &= 0xf0; > - *pctmp |= FragmentCount;//931130.5.m > - if( !FragmentCount ) > + *pctmp |= FragmentCount;/*931130.5.m*/ > + if (!FragmentCount) > pT00->T00_first_mpdu = 1; > > - buffer += 32; // 8B usb + 24B 802.11 header > + buffer += 32; /* 8B usb + 24B 802.11 header */ > Size += 32; > > - // Copy into buffer > + /* Copy into buffer */ > stmp = CopySize + 3; > - stmp &= ~0x03;//4n Alignment > - Size += stmp;// Current 4n offset of mpdu > + stmp &= ~0x03; /* 4n Alignment */ > + Size += stmp; /* Current 4n offset of mpdu */ > > while (CopySize) { > - // Copy body > + /* Copy body */ > src_buffer = pDes->buffer_address[buf_index]; > CopyLeft = CopySize; > if (CopySize >= pDes->buffer_size[buf_index]) { > CopyLeft = pDes->buffer_size[buf_index]; > > - // Get the next buffer of descriptor > + /* Get the next buffer of descriptor */ > buf_index++; > buf_index %= MAX_DESCRIPTOR_BUFFER_INDEX; > } else { > - u8 *pctmp = pDes->buffer_address[buf_index]; > + u8 *pctmp = pDes->buffer_address[buf_index]; > pctmp += CopySize; > pDes->buffer_address[buf_index] = pctmp; > pDes->buffer_size[buf_index] -= CopySize; > @@ -283,26 +269,30 @@ static u16 Mds_BodyCopy(struct wbsoft_priv *adapter, struct wb35_descriptor *pDe > CopySize -= CopyLeft; > } > > - // 931130.5.n > + /* 931130.5.n */ > if (pMds->MicAdd) { > if (!SizeLeft) { > - pMds->MicWriteAddress[ pMds->MicWriteIndex ] = buffer - pMds->MicAdd; > - pMds->MicWriteSize[ pMds->MicWriteIndex ] = pMds->MicAdd; > + pMds->MicWriteAddress[pMds->MicWriteIndex] = > + buffer - pMds->MicAdd; > + pMds->MicWriteSize[pMds->MicWriteIndex] = > + pMds->MicAdd; > pMds->MicAdd = 0; > - } > - else if( SizeLeft < 8 ) //931130.5.p > - { > + } else if (SizeLeft < 8) { /*931130.5.p*/ > pMds->MicAdd = SizeLeft; > - pMds->MicWriteAddress[ pMds->MicWriteIndex ] = buffer - ( 8 - SizeLeft ); > - pMds->MicWriteSize[ pMds->MicWriteIndex ] = 8 - SizeLeft; > + pMds->MicWriteAddress[pMds->MicWriteIndex] = > + buffer - (8 - SizeLeft); > + pMds->MicWriteSize[pMds->MicWriteIndex] = > + 8 - SizeLeft; > pMds->MicWriteIndex++; > } > } > > - // Does it need to generate the new header for next mpdu? > + /* Does it need to generate the new header for next mpdu? */ > if (SizeLeft) { > - buffer = TargetBuffer + Size; // Get the next 4n start address > - memcpy( buffer, TargetBuffer, 32 );//Copy 8B USB +24B 802.11 > + buffer = TargetBuffer + Size; /* Get the next 4n > + start address */ > + memcpy(buffer, TargetBuffer, 32);/*Copy 8B USB > + +24B 802.11*/ > pT00 = (PT00_DESCRIPTOR)buffer; > pT00->T00_first_mpdu = 0; > } > @@ -312,62 +302,64 @@ static u16 Mds_BodyCopy(struct wbsoft_priv *adapter, struct wb35_descriptor *pDe > > pT00->T00_last_mpdu = 1; > pT00->T00_IsLastMpdu = 1; > - buffer = (u8 *)pT00 + 8; // +8 for USB hdr > - buffer[1] &= ~0x04; // Clear more frag bit of 802.11 frame control > - pDes->FragmentCount = FragmentCount; // Update the correct fragment number > + buffer = (u8 *)pT00 + 8; /* +8 for USB hdr */ > + buffer[1] &= ~0x04; /* Clear more frag bit of 802.11 frame control*/ > + pDes->FragmentCount = FragmentCount; /* Update the correct > + fragment number */ > return Size; > } > > -static void Mds_HeaderCopy(struct wbsoft_priv * adapter, struct wb35_descriptor *pDes, u8 *TargetBuffer) > +static void Mds_HeaderCopy(struct wbsoft_priv *adapter, > + struct wb35_descriptor *pDes, u8 *TargetBuffer) > { > struct wb35_mds *pMds = &adapter->Mds; > - u8 *src_buffer = pDes->buffer_address[0];//931130.5.g > + u8 *src_buffer = pDes->buffer_address[0];/*931130.5.g*/ > PT00_DESCRIPTOR pT00; > PT01_DESCRIPTOR pT01; > - u16 stmp; > - u8 i, ctmp1, ctmp2, ctmpf; > - u16 FragmentThreshold = CURRENT_FRAGMENT_THRESHOLD; > + u16 stmp; > + u8 i, ctmp1, ctmp2, ctmpf; > + u16 FragmentThreshold = CURRENT_FRAGMENT_THRESHOLD; > > > stmp = pDes->buffer_total_size; > - // > - // Set USB header 8 byte > - // > + /* > + *Set USB header 8 byte > + */ > pT00 = (PT00_DESCRIPTOR)TargetBuffer; > TargetBuffer += 4; > pT01 = (PT01_DESCRIPTOR)TargetBuffer; > TargetBuffer += 4; > > - pT00->value = 0;// Clear > - pT01->value = 0;// Clear > + pT00->value = 0;/* Clear */ > + pT01->value = 0;/* Clear */ > > - pT00->T00_tx_packet_id = pDes->Descriptor_ID;// Set packet ID > - pT00->T00_header_length = 24;// Set header length > - pT01->T01_retry_abort_ebable = 1;//921013 931130.5.h > + pT00->T00_tx_packet_id = pDes->Descriptor_ID;/* Set packet ID */ > + pT00->T00_header_length = 24;/* Set header length */ > + pT01->T01_retry_abort_ebable = 1;/*921013 931130.5.h*/ > > - // Key ID setup > + /* Key ID setup */ > pT01->T01_wep_id = 0; > > - 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 > + 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 > + /* Set fragment threshold */ > FragmentThreshold -= (DOT_11_MAC_HEADER_SIZE + 4); > pDes->FragmentThreshold = FragmentThreshold; > > - // Set more frag bit > - TargetBuffer[1] |= 0x04;// Set more frag bit > + /* Set more frag bit */ > + TargetBuffer[1] |= 0x04;/* Set more frag bit*/ > > - // > - // Set tx rate > - // > - stmp = *(u16 *)(TargetBuffer+30); // 2n alignment address > + /* > + * Set tx rate > + */ > + stmp = *(u16 *)(TargetBuffer+30); /* 2n alignment address */ > > - //Use basic rate > + /* Use basic rate */ > ctmp1 = ctmpf = CURRENT_TX_RATE_FOR_MNG; > > pDes->TxRate = ctmp1; > @@ -377,53 +369,65 @@ static void Mds_HeaderCopy(struct wbsoft_priv * adapter, struct wb35_descriptor > > pT01->T01_modulation_type = (ctmp1%3) ? 0 : 1; > > - for( i=0; i<2; i++ ) { > - if( i == 1 ) > + for (i = 0; i < 2; i++) { > + if (i == 1) > ctmp1 = ctmpf; > > - pMds->TxRate[pDes->Descriptor_ID][i] = ctmp1; // backup the ta rate and fall back rate > - > - if( ctmp1 == 108) ctmp2 = 7; > - else if( ctmp1 == 96 ) ctmp2 = 6; // Rate convert for USB > - else if( ctmp1 == 72 ) ctmp2 = 5; > - else if( ctmp1 == 48 ) ctmp2 = 4; > - else if( ctmp1 == 36 ) ctmp2 = 3; > - else if( ctmp1 == 24 ) ctmp2 = 2; > - else if( ctmp1 == 18 ) ctmp2 = 1; > - else if( ctmp1 == 12 ) ctmp2 = 0; > - else if( ctmp1 == 22 ) ctmp2 = 3; > - else if( ctmp1 == 11 ) ctmp2 = 2; > - else if( ctmp1 == 4 ) ctmp2 = 1; > - else ctmp2 = 0; // if( ctmp1 == 2 ) or default > - > - if( i == 0 ) > + pMds->TxRate[pDes->Descriptor_ID][i] = ctmp1; /* backup the ta > + rate and fall back rate */ > + > + if (ctmp1 == 108) > + ctmp2 = 7; > + else if (ctmp1 == 96) > + ctmp2 = 6; /* Rate convert for USB */ > + else if (ctmp1 == 72) > + ctmp2 = 5; > + else if (ctmp1 == 48) > + ctmp2 = 4; > + else if (ctmp1 == 36) > + ctmp2 = 3; > + else if (ctmp1 == 24) > + ctmp2 = 2; > + else if (ctmp1 == 18) > + ctmp2 = 1; > + else if (ctmp1 == 12) > + ctmp2 = 0; > + else if (ctmp1 == 22) > + ctmp2 = 3; > + else if (ctmp1 == 11) > + ctmp2 = 2; > + else if (ctmp1 == 4) > + ctmp2 = 1; > + else > + ctmp2 = 0; /*if (ctmp1 == 2) or default*/ > + > + if (i == 0) > pT01->T01_transmit_rate = ctmp2; > else > pT01->T01_fall_back_rate = ctmp2; > } > > - // > - // Set preamble type > - // > - if ((pT01->T01_modulation_type == 0) && (pT01->T01_transmit_rate == 0)) // RATE_1M > - pDes->PreambleMode = WLAN_PREAMBLE_TYPE_LONG; > + /* > + * Set preamble type > + */ > + if ((pT01->T01_modulation_type == 0) && (pT01->T01_transmit_rate == 0)) > + /* RATE_1M */ > + pDes->PreambleMode = WLAN_PREAMBLE_TYPE_LONG; > else > - pDes->PreambleMode = CURRENT_PREAMBLE_MODE; > - pT01->T01_plcp_header_length = pDes->PreambleMode; // Set preamble > - > + pDes->PreambleMode = CURRENT_PREAMBLE_MODE; > + pT01->T01_plcp_header_length = pDes->PreambleMode;/* Set preamble */ > } > > -void > -Mds_Tx(struct wbsoft_priv * adapter) > +void Mds_Tx(struct wbsoft_priv *adapter) > { > - struct hw_data * pHwData = &adapter->sHwData; > - struct wb35_mds *pMds = &adapter->Mds; > + struct hw_data *pHwData = &adapter->sHwData; > + struct wb35_mds *pMds = &adapter->Mds; > struct wb35_descriptor TxDes; > - struct wb35_descriptor *pTxDes = &TxDes; > - u8 *XmitBufAddress; > - u16 XmitBufSize, PacketSize, stmp, CurrentSize, FragmentThreshold; > - u8 FillIndex, TxDesIndex, FragmentCount, FillCount; > - unsigned char BufferFilled = false; > + struct wb35_descriptor *pTxDes = &TxDes; > + u8 *XmitBufAddress; > + u16 XmitBufSize, PacketSize, stmp, CurrentSize, FragmentThreshold; > + u8 FillIndex, TxDesIndex, FragmentCount, FillCount; > + unsigned char BufferFilled = false; > > > if (pMds->TxPause) > @@ -431,21 +435,23 @@ Mds_Tx(struct wbsoft_priv * adapter) > if (!hal_driver_init_OK(pHwData)) > return; > > - //Only one thread can be run here > + /*Only one thread can be run here*/ > if (atomic_inc_return(&pMds->TxThreadCount) != 1) > goto cleanup; > > - // Start to fill the data > + /*Start to fill the data*/ > do { > FillIndex = pMds->TxFillIndex; > - if (pMds->TxOwner[FillIndex]) { // Is owned by software 0:Yes 1:No > -#ifdef _PE_TX_DUMP_ > + if (pMds->TxOwner[FillIndex]) { /* Is owned by > + software 0:Yes 1:No*/ > + #ifdef _PE_TX_DUMP_ > printk("[Mds_Tx] Tx Owner is H/W.\n"); > -#endif > + #endif > break; > } > > - XmitBufAddress = pMds->pTxBuffer + (MAX_USB_TX_BUFFER * FillIndex); //Get buffer > + XmitBufAddress = pMds->pTxBuffer + > + (MAX_USB_TX_BUFFER * FillIndex); /*Get buffer*/ > XmitBufSize = 0; > FillCount = 0; > do { > @@ -453,79 +459,89 @@ Mds_Tx(struct wbsoft_priv * adapter) > if (!PacketSize) > break; > > - //For Check the buffer resource > + /*For Check the buffer resource*/ > FragmentThreshold = CURRENT_FRAGMENT_THRESHOLD; > - //931130.5.b > - FragmentCount = PacketSize/FragmentThreshold + 1; > - stmp = PacketSize + FragmentCount*32 + 8;//931130.5.c 8:MIC > + /*931130.5.b*/ > + FragmentCount = PacketSize / FragmentThreshold + 1; > + stmp = PacketSize + > + FragmentCount * 32 + 8;/*931130.5.c 8:MIC*/ > if ((XmitBufSize + stmp) >= MAX_USB_TX_BUFFER) { > printk("[Mds_Tx] Excess max tx buffer.\n"); > - break; // buffer is not enough > + break; /* buffer is not enough */ > } > > - > - // > - // Start transmitting > - // > + /* > + * Start transmitting > + */ > BufferFilled = true; > > /* Leaves first u8 intact */ > - memset((u8 *)pTxDes + 1, 0, sizeof(struct wb35_descriptor) - 1); > + memset((u8 *)pTxDes + 1, 0, > + sizeof(struct wb35_descriptor) - 1); > > - TxDesIndex = pMds->TxDesIndex;//Get the current ID > + TxDesIndex = pMds->TxDesIndex; /*Get the current ID*/ > pTxDes->Descriptor_ID = TxDesIndex; > - pMds->TxDesFrom[ TxDesIndex ] = 2;//Storing the information of source comming from > + pMds->TxDesFrom[TxDesIndex] = 2; /*Storing the > + information of source comming from*/ > pMds->TxDesIndex++; > pMds->TxDesIndex %= MAX_USB_TX_DESCRIPTOR; > > - MLME_GetNextPacket( adapter, pTxDes ); > + MLME_GetNextPacket(adapter, pTxDes); > > - // Copy header. 8byte USB + 24byte 802.11Hdr. Set TxRate, Preamble type > - Mds_HeaderCopy( adapter, pTxDes, XmitBufAddress ); > + /* Copy header. 8byte USB + 24byte 802.11Hdr. > + * Set TxRate, Preamble type */ > + Mds_HeaderCopy(adapter, pTxDes, XmitBufAddress); > > - // For speed up Key setting > + /* For speed up Key setting */ > if (pTxDes->EapFix) { > #ifdef _PE_TX_DUMP_ > - printk("35: EPA 4th frame detected. Size = %d\n", PacketSize); > + printk("35: EPA 4th frame detected. " > + "Size = %d\n", PacketSize); > #endif > pHwData->IsKeyPreSet = 1; > } > > - // Copy (fragment) frame body, and set USB, 802.11 hdr flag > - CurrentSize = Mds_BodyCopy(adapter, pTxDes, XmitBufAddress); > + /* Copy (fragment) frame body, > + * and set USB, 802.11 hdr flag*/ > + CurrentSize = Mds_BodyCopy(adapter, > + pTxDes, XmitBufAddress); > > - // Set RTS/CTS and Normal duration field into buffer > + /* Set RTS/CTS and Normal duration field into buffer*/ > Mds_DurationSet(adapter, pTxDes, XmitBufAddress); > > - //Shift to the next address > + /* Shift to the next address */ > XmitBufSize += CurrentSize; > XmitBufAddress += CurrentSize; > > #ifdef _IBSS_BEACON_SEQ_STICK_ > - if ((XmitBufAddress[ DOT_11_DA_OFFSET+8 ] & 0xfc) != MAC_SUBTYPE_MNGMNT_PROBE_REQUEST) // +8 for USB hdr > + if ((XmitBufAddress[DOT_11_DA_OFFSET+8] & 0xfc) != > + MAC_SUBTYPE_MNGMNT_PROBE_REQUEST) /* +8 for USB hdr*/ > #endif > pMds->TxToggle = true; > > - // Get packet to transmit completed, 1:TESTSTA 2:MLME 3: Ndis data > + /* Get packet to transmit completed, > + * 1:TESTSTA 2:MLME 3: Ndis data */ > MLME_SendComplete(adapter, 0, true); > > - // Software TSC count 20060214 > + /* Software TSC count 20060214 */ > pMds->TxTsc++; > if (pMds->TxTsc == 0) > pMds->TxTsc_2++; > > - FillCount++; // 20060928 > - } while (HAL_USB_MODE_BURST(pHwData)); // End of multiple MSDU copy loop. false = single true = multiple sending > + FillCount++; /* 20060928 */ > + /* End of multiple MSDU copy loop. false = single sending > + * true = multiple sending*/ > + } while (HAL_USB_MODE_BURST(pHwData)); > > - // Move to the next one, if necessary > + /* Move to the next one, if necessary */ > if (BufferFilled) { > - // size setting > - pMds->TxBufferSize[ FillIndex ] = XmitBufSize; > + /* size setting */ > + pMds->TxBufferSize[FillIndex] = XmitBufSize; > > - // 20060928 set Tx count > + /* 20060928 set Tx count */ > pMds->TxCountInBuffer[FillIndex] = FillCount; > > - // Set owner flag > + /* Set owner flag */ > pMds->TxOwner[FillIndex] = 1; > > pMds->TxFillIndex++; > @@ -534,14 +550,14 @@ Mds_Tx(struct wbsoft_priv * adapter) > } else > break; > > - if (!PacketSize) // No more pk for transmitting > + if (!PacketSize) /* No more pk for transmitting */ > break; > > - } while(true); > + } while (true); > > - // > - // Start to send by lower module > - // > + /* > + * Start to send by lower module > + */ > if (!pHwData->IsKeyPreSet) > Wb35Tx_start(adapter); > > @@ -549,30 +565,28 @@ Mds_Tx(struct wbsoft_priv * adapter) > atomic_dec(&pMds->TxThreadCount); > } > > -void > -Mds_SendComplete(struct wbsoft_priv * adapter, PT02_DESCRIPTOR pT02) > +void Mds_SendComplete(struct wbsoft_priv *adapter, PT02_DESCRIPTOR pT02) > { > - struct wb35_mds *pMds = &adapter->Mds; > - struct hw_data * pHwData = &adapter->sHwData; > - u8 PacketId = (u8)pT02->T02_Tx_PktID; > + struct wb35_mds *pMds = &adapter->Mds; > + struct hw_data *pHwData = &adapter->sHwData; > + u8 PacketId = (u8)pT02->T02_Tx_PktID; > unsigned char SendOK = true; > - u8 RetryCount, TxRate; > + u8 RetryCount, TxRate; > > - if (pT02->T02_IgnoreResult) // Don't care the result > + if (pT02->T02_IgnoreResult) /* Don't care the result */ > return; > if (pT02->T02_IsLastMpdu) { > - //TODO: DTO -- get the retry count and fragment count > - // Tx rate > - TxRate = pMds->TxRate[ PacketId ][ 0 ]; > + /*TODO: DTO -- get the retry count and fragment count Tx rate*/ > + TxRate = pMds->TxRate[PacketId][0]; > RetryCount = (u8)pT02->T02_MPDU_Cnt; > if (pT02->value & FLAG_ERROR_TX_MASK) { > SendOK = false; > > if (pT02->T02_transmit_abort || pT02->T02_out_of_MaxTxMSDULiftTime) { > - //retry error > + /* retry error */ > pHwData->dto_tx_retry_count += (RetryCount+1); > - //[for tx debug] > - if (RetryCount<7) > + /* [for tx debug] */ > + if (RetryCount < 7) > pHwData->tx_retry_count[RetryCount] += RetryCount; > else > pHwData->tx_retry_count[7] += RetryCount; > @@ -583,7 +597,7 @@ Mds_SendComplete(struct wbsoft_priv * adapter, PT02_DESCRIPTOR pT02) > } > pHwData->dto_tx_frag_count += (RetryCount+1); > > - //[for tx debug] > + /* [for tx debug] */ > if (pT02->T02_transmit_abort_due_to_TBTT) > pHwData->tx_TBTT_start_count++; > if (pT02->T02_transmit_without_encryption_due_to_wep_on_false) > @@ -596,8 +610,8 @@ Mds_SendComplete(struct wbsoft_priv * adapter, PT02_DESCRIPTOR pT02) > MTO_SetTxCount(adapter, TxRate, RetryCount); > } > > - // Clear send result buffer > - pMds->TxResult[ PacketId ] = 0; > + /* Clear send result buffer */ > + pMds->TxResult[PacketId] = 0; > } else > - pMds->TxResult[ PacketId ] |= ((u16)(pT02->value & 0x0ffff)); > + pMds->TxResult[PacketId] |= ((u16)(pT02->value & 0x0ffff)); > } -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/devel