1Only in ./Module: out.cap
2Only in ./Module: out.txt
3diff -ur ../rt2570-cvs-20051025/Module/rt2570sw.h ./Module/rt2570sw.h
4--- ../rt2570-cvs-20051025/Module/rt2570sw.h	2005-10-21 19:31:22.000000000 +0200
5+++ ./Module/rt2570sw.h	2005-11-04 11:31:47.000000000 +0100
6@@ -3699,4 +3699,55 @@
7
8 int USB_CallUSBD(PRT2570ADAPTER Adapter,
9                       IN PURB       Urb);
10+
11+#endif
12+
13+#ifndef _PRISMHEADER
14+#define _PRISMHEADER
15+
16+enum {
17+	DIDmsg_lnxind_wlansniffrm		= 0x00000044,
18+	DIDmsg_lnxind_wlansniffrm_hosttime	= 0x00010044,
19+	DIDmsg_lnxind_wlansniffrm_mactime	= 0x00020044,
20+	DIDmsg_lnxind_wlansniffrm_channel	= 0x00030044,
21+	DIDmsg_lnxind_wlansniffrm_rssi		= 0x00040044,
22+	DIDmsg_lnxind_wlansniffrm_sq		= 0x00050044,
23+	DIDmsg_lnxind_wlansniffrm_signal	= 0x00060044,
24+	DIDmsg_lnxind_wlansniffrm_noise		= 0x00070044,
25+	DIDmsg_lnxind_wlansniffrm_rate		= 0x00080044,
26+	DIDmsg_lnxind_wlansniffrm_istx		= 0x00090044,
27+	DIDmsg_lnxind_wlansniffrm_frmlen	= 0x000A0044
28+};
29+enum {
30+	P80211ENUM_msgitem_status_no_value	= 0x00
31+};
32+enum {
33+	P80211ENUM_truth_false			= 0x00,
34+	P80211ENUM_truth_true			= 0x01
35+};
36+
37+typedef struct {
38+	u_int32_t did;
39+	u_int16_t status;
40+	u_int16_t len;
41+	u_int32_t data;
42+} p80211item_uint32_t;
43+
44+typedef struct {
45+	u_int32_t msgcode;
46+	u_int32_t msglen;
47+#define WLAN_DEVNAMELEN_MAX 16
48+	u_int8_t devname[WLAN_DEVNAMELEN_MAX];
49+	p80211item_uint32_t hosttime;
50+	p80211item_uint32_t mactime;
51+	p80211item_uint32_t channel;
52+	p80211item_uint32_t rssi;
53+	p80211item_uint32_t sq;
54+	p80211item_uint32_t signal;
55+	p80211item_uint32_t noise;
56+	p80211item_uint32_t rate;
57+	p80211item_uint32_t istx;
58+	p80211item_uint32_t frmlen;
59+} wlan_ng_prism2_header;
60+
61 #endif
62diff -ur ../rt2570-cvs-20051025/Module/rtusb_data.c ./Module/rtusb_data.c
63--- ../rt2570-cvs-20051025/Module/rtusb_data.c	2005-09-21 01:43:50.000000000 +0200
64+++ ./Module/rtusb_data.c	2005-11-04 17:40:27.000000000 +0100
65@@ -40,6 +40,7 @@
66 	 0, /* RATE_1 */    1, /* RATE_2 */     2, /* RATE_5_5 */   3, /* RATE_11 */    // see BBP spec
67 	11, /* RATE_6 */   15, /* RATE_9 */    10, /* RATE_12 */   14, /* RATE_18 */    // see IEEE802.11a-1999 p.14
68 	 9, /* RATE_24 */  13, /* RATE_36 */    8, /* RATE_48 */    12  /* RATE_54 */ }; // see IEEE802.11a-1999 p.14
69+static	UINT	_11G_RATES[12] = { 0, 0, 0, 0, 6, 9, 12, 18, 24, 36, 48, 54 };
70 static	UCHAR	SNAP_802_1H[] = {0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00};
71 static	UCHAR	SNAP_BRIDGE_TUNNEL[] = {0xaa, 0xaa, 0x03, 0x00, 0x00, 0xf8};
72 static	UCHAR	EAPOL[] = {0x88, 0x8e};
73@@ -1672,6 +1673,7 @@
74 	NDIS_802_11_ENCRYPTION_STATUS	Cipher;
75 	struct sk_buff  *skb;
76 	PVOID			pManage;
77+	wlan_ng_prism2_header	*ph;
78
79 	pRxContext= (PRX_CONTEXT)pUrb->context;
80 	pAdapter = pRxContext->pAdapter;
81@@ -1709,6 +1711,57 @@
82  	        		struct sk_buff  *skb;
83  	       			if ((skb = __dev_alloc_skb(2048, GFP_DMA|GFP_ATOMIC)) != NULL)
84  	        		{
85+		// setup the wlan-ng prismheader
86+
87+		if (skb_headroom(skb) < sizeof(wlan_ng_prism2_header))
88+			pskb_expand_head(skb, sizeof(wlan_ng_prism2_header), 0, GFP_ATOMIC);
89+
90+		ph = (wlan_ng_prism2_header *)
91+			skb_push(skb, sizeof(wlan_ng_prism2_header));
92+		memset(ph, 0, sizeof(wlan_ng_prism2_header));
93+
94+		ph->msgcode	= DIDmsg_lnxind_wlansniffrm;
95+		ph->msglen	= sizeof(wlan_ng_prism2_header);
96+		strcpy(ph->devname, pAdapter->net->name);
97+
98+		ph->hosttime.did	= DIDmsg_lnxind_wlansniffrm_hosttime;
99+		ph->mactime.did		= DIDmsg_lnxind_wlansniffrm_mactime;
100+		ph->channel.did		= DIDmsg_lnxind_wlansniffrm_channel;
101+		ph->rssi.did		= DIDmsg_lnxind_wlansniffrm_rssi;
102+		ph->signal.did		= DIDmsg_lnxind_wlansniffrm_signal;
103+		ph->noise.did		= DIDmsg_lnxind_wlansniffrm_noise;
104+		ph->rate.did		= DIDmsg_lnxind_wlansniffrm_rate;
105+		ph->istx.did		= DIDmsg_lnxind_wlansniffrm_istx;
106+		ph->frmlen.did		= DIDmsg_lnxind_wlansniffrm_frmlen;
107+
108+		ph->hosttime.len	= 4;
109+		ph->mactime.len		= 4;
110+		ph->channel.len		= 4;
111+		ph->rssi.len		= 4;
112+		ph->signal.len		= 4;
113+		ph->noise.len		= 4;
114+		ph->rate.len		= 4;
115+		ph->istx.len		= 4;
116+		ph->frmlen.len		= 4;
117+
118+		ph->hosttime.data	= jiffies;
119+		ph->channel.data	= pAdapter->PortCfg.IbssConfig.Channel;
120+		ph->signal.data		= pRxD->BBR1;
121+		ph->noise.data		= pAdapter->PortCfg.LastR17Value;
122+		ph->rssi.data		= ph->signal.data - ph->noise.data;
123+		ph->frmlen.data		= pRxD->DataByteCnt;
124+
125+		if (pRxD->Ofdm == 1)
126+		{
127+			for (i = 4; i < 12; i++)
128+				if (pRxD->BBR0 == PlcpSignal[i])
129+					ph->rate.data = _11G_RATES[i] * 2;
130+		}
131+		else
132+			ph->rate.data = pRxD->BBR0 / 5;
133+
134+		// end prismheader setup
135+
136  	      				skb->dev = pAdapter->net;
137  	      				memcpy(skb_put(skb, pRxD->DataByteCnt-4), pData, pRxD->DataByteCnt-4);
138  	       				skb->mac.raw = skb->data;
139diff -ur ../rt2570-cvs-20051025/Module/rtusb_info.c ./Module/rtusb_info.c
140--- ../rt2570-cvs-20051025/Module/rtusb_info.c	2005-10-23 15:33:57.000000000 +0200
141+++ ./Module/rtusb_info.c	2005-11-04 11:31:47.000000000 +0100
142@@ -200,7 +200,9 @@
143 	pAdapter->PortCfg.IbssConfig.Channel = chan;
144 	DBGPRINT(RT_DEBUG_ERROR, "<==SIOCSIWFREQ[cmd=0x%x] (Channel=%d)\n", SIOCSIWFREQ, pAdapter->PortCfg.IbssConfig.Channel);
145
146-	if (pAdapter->PortCfg.BssType == BSS_MONITOR && pAdapter->PortCfg.MallowRFMONTx == TRUE)
147+	// CD: setting the channel in Monitor mode is unrelated to RFMONTx
148+
149+	if (pAdapter->PortCfg.BssType == BSS_MONITOR)
150 	{
151 		pAdapter->PortCfg.Channel = pAdapter->PortCfg.IbssConfig.Channel;
152 		AsicSwitchChannel(pAdapter, pAdapter->PortCfg.Channel);
153@@ -275,7 +277,7 @@
154 			pAdapter->PortCfg.BssType=BSS_MONITOR;
155 			RTUSBEnqueueInternalCmd(pAdapter, RT_OID_LINK_DOWN);
156 			pAdapter->bConfigChanged = TRUE;
157-		        pAdapter->net->type = 801;
158+			pAdapter->net->type = 802; // ARPHRD_IEEE80211_PRISM
159 			RTUSBWriteMACRegister(pAdapter, TXRX_CSR2, 0x4e);
160 			break;
161 		default:
162