nexmon – Rev 1
?pathlinks?
diff -ur ../rt2500-cvs-20050724/Module/rtmp_data.c ./Module/rtmp_data.c
--- ../rt2500-cvs-20050724/Module/rtmp_data.c 2005-07-15 17:40:02.000000000 +0200
+++ ./Module/rtmp_data.c 2005-07-26 19:04:28.000000000 +0200
@@ -2741,6 +2741,23 @@
return (NDIS_STATUS_FAILURE);
}
+ if (pAdapter->PortCfg.BssType == BSS_MONITOR)
+ {
+ pAdapter->TxRing[pAdapter->CurEncryptIndex].FrameType = BTYPE_DATA;
+ pDest = (PUCHAR) pAdapter->TxRing[pAdapter->CurEncryptIndex].va_data_addr;
+ pTxD = (PTXD_STRUC) pAdapter->TxRing[pAdapter->CurEncryptIndex].va_addr;
+ MlmeSetPsmBit(pAdapter, PWR_ACTIVE);
+ memcpy(pDest,skb->data,skb->len);
+ RTMPWriteTxDescriptor(pTxD, TRUE, CIPHER_NONE, FALSE, FALSE, FALSE, SHORT_RETRY, IFS_BACKOFF, pAdapter->PortCfg.TxRate, 4, skb->len, pAdapter->PortCfg.TxPreambleInUsed, AccessCategory);
+
+ pAdapter->CurEncryptIndex++;
+ if (pAdapter->CurEncryptIndex >= TX_RING_SIZE)
+ pAdapter->CurEncryptIndex = 0;
+ pAdapter->RalinkCounters.EncryptCount++;
+
+ goto skip_all_this_shit;
+ }
+
if (EnableTxBurst == 1)
FrameGap = IFS_SIFS;
else
@@ -2779,6 +2796,7 @@
//
// Start making 802.11 frame header
+ // this whole code is just a pathetic mess
//
memset(&Header_802_11, 0, sizeof(HEADER_802_11)); // Initialize 802.11 header for each fragment
if (INFRA_ON(pAdapter))
@@ -3411,6 +3429,7 @@
} while (NumberRequired > 0);
+skip_all_this_shit:
// Kick Encrypt Control Register at the end of all ring buffer preparation
RTMP_IO_WRITE32(pAdapter, SECCSR1, 0x1);
diff -ur ../rt2500-cvs-20050724/Module/rtmp_main.c ./Module/rtmp_main.c
--- ../rt2500-cvs-20050724/Module/rtmp_main.c 2005-07-15 17:40:02.000000000 +0200
+++ ./Module/rtmp_main.c 2005-07-26 19:03:46.000000000 +0200
@@ -354,6 +354,7 @@
DBGPRINT(RT_DEBUG_INFO, "<==== RTMPSendPackets\n");
+/*
if (pAdapter->PortCfg.BssType == BSS_MONITOR)
{
dev_kfree_skb_irq(skb);
@@ -368,7 +369,7 @@
// And Mibss for Ad-hoc mode setup
dev_kfree_skb_irq(skb);
}
- else
+ else*/
{
// This function has to manage NdisSendComplete return call within its routine
// NdisSendComplete will acknowledge upper layer in two steps.