1diff -ur ../rt2500-cvs-20050724/Module/rtmp_data.c ./Module/rtmp_data.c 2--- ../rt2500-cvs-20050724/Module/rtmp_data.c 2005-07-15 17:40:02.000000000 +0200 3+++ ./Module/rtmp_data.c 2005-07-26 19:04:28.000000000 +0200 4@@ -2741,6 +2741,23 @@ 5 return (NDIS_STATUS_FAILURE); 6 } 7 8+ if (pAdapter->PortCfg.BssType == BSS_MONITOR) 9+ { 10+ pAdapter->TxRing[pAdapter->CurEncryptIndex].FrameType = BTYPE_DATA; 11+ pDest = (PUCHAR) pAdapter->TxRing[pAdapter->CurEncryptIndex].va_data_addr; 12+ pTxD = (PTXD_STRUC) pAdapter->TxRing[pAdapter->CurEncryptIndex].va_addr; 13+ MlmeSetPsmBit(pAdapter, PWR_ACTIVE); 14+ memcpy(pDest,skb->data,skb->len); 15+ RTMPWriteTxDescriptor(pTxD, TRUE, CIPHER_NONE, FALSE, FALSE, FALSE, SHORT_RETRY, IFS_BACKOFF, pAdapter->PortCfg.TxRate, 4, skb->len, pAdapter->PortCfg.TxPreambleInUsed, AccessCategory); 16+ 17+ pAdapter->CurEncryptIndex++; 18+ if (pAdapter->CurEncryptIndex >= TX_RING_SIZE) 19+ pAdapter->CurEncryptIndex = 0; 20+ pAdapter->RalinkCounters.EncryptCount++; 21+ 22+ goto skip_all_this_shit; 23+ } 24+ 25 if (EnableTxBurst == 1) 26 FrameGap = IFS_SIFS; 27 else 28@@ -2779,6 +2796,7 @@ 29 30 // 31 // Start making 802.11 frame header 32+ // this whole code is just a pathetic mess 33 // 34 memset(&Header_802_11, 0, sizeof(HEADER_802_11)); // Initialize 802.11 header for each fragment 35 if (INFRA_ON(pAdapter)) 36@@ -3411,6 +3429,7 @@ 37 38 } while (NumberRequired > 0); 39 40+skip_all_this_shit: 41 42 // Kick Encrypt Control Register at the end of all ring buffer preparation 43 RTMP_IO_WRITE32(pAdapter, SECCSR1, 0x1); 44diff -ur ../rt2500-cvs-20050724/Module/rtmp_main.c ./Module/rtmp_main.c 45--- ../rt2500-cvs-20050724/Module/rtmp_main.c 2005-07-15 17:40:02.000000000 +0200 46+++ ./Module/rtmp_main.c 2005-07-26 19:03:46.000000000 +0200 47@@ -354,6 +354,7 @@ 48 49 DBGPRINT(RT_DEBUG_INFO, "<==== RTMPSendPackets\n"); 50 51+/* 52 if (pAdapter->PortCfg.BssType == BSS_MONITOR) 53 { 54 dev_kfree_skb_irq(skb); 55@@ -368,7 +369,7 @@ 56 // And Mibss for Ad-hoc mode setup 57 dev_kfree_skb_irq(skb); 58 } 59- else 60+ else*/ 61 { 62 // This function has to manage NdisSendComplete return call within its routine 63 // NdisSendComplete will acknowledge upper layer in two steps. 64