diff -ur ../rt2500-cvs-2005112305/Module/rtmp_data.c ./Module/rtmp_data.c --- ../rt2500-cvs-2005112305/Module/rtmp_data.c 2005-11-09 04:33:20.000000000 +0100 +++ ./Module/rtmp_data.c 2005-11-23 14:39:33.000000000 +0100 @@ -1137,6 +1137,9 @@ if ((skb = __dev_alloc_skb(2048, GFP_DMA|GFP_ATOMIC)) != NULL) { + if (pAdapter->PortCfg.MallowRFMONTx == TRUE) + goto rfmontx_80211_receive; + // setup the wlan-ng prismheader if (skb_headroom(skb) < sizeof(wlan_ng_prism2_header)) @@ -1188,6 +1191,8 @@ // end prismheader setup + rfmontx_80211_receive: + skb->dev = pAdapter->net_dev; memcpy(skb_put(skb, pRxD->DataByteCnt), pData, pRxD->DataByteCnt); skb->mac.raw = skb->data; diff -ur ../rt2500-cvs-2005112305/Module/rtmp_info.c ./Module/rtmp_info.c --- ../rt2500-cvs-2005112305/Module/rtmp_info.c 2005-11-19 16:48:46.000000000 +0100 +++ ./Module/rtmp_info.c 2005-11-23 15:22:15.000000000 +0100 @@ -1973,7 +1973,11 @@ { if (pAdapter->PortCfg.BssType == BSS_MONITOR) { - pAdapter->net_dev->type = 802; // ARPHRD_IEEE80211_PRISM + if (pAdapter->PortCfg.MallowRFMONTx == TRUE) + pAdapter->net_dev->type = 801; // ARPHRD_IEEE80211 + else + pAdapter->net_dev->type = 802; // ARPHRD_IEEE80211_PRISM + RTMP_IO_WRITE32(pAdapter, RXCSR0, 0x46); } else if (pAdapter->bAcceptPromiscuous == TRUE) @@ -3828,9 +3832,15 @@ value = *pvalue; if (value == 1) + { pAdapter->PortCfg.MallowRFMONTx = TRUE; + pAdapter->net_dev->type = 801; // ARPHRD_IEEE80211 + } else if (!value) + { pAdapter->PortCfg.MallowRFMONTx = FALSE; + pAdapter->net_dev->type = 802; // ARPHRD_IEEE80211_PRISM + } else return -EINVAL; }