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