diff -ur ../rt2570-cvs-2005112305/Module/rtusb_data.c ./Module/rtusb_data.c --- ../rt2570-cvs-2005112305/Module/rtusb_data.c 2005-11-04 23:53:18.000000000 +0100 +++ ./Module/rtusb_data.c 2005-11-23 14:44:16.000000000 +0100 @@ -1711,6 +1711,9 @@ struct sk_buff *skb; 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)) @@ -1762,6 +1765,8 @@ // end prismheader setup + rfmontx_80211_receive: + skb->dev = pAdapter->net; memcpy(skb_put(skb, pRxD->DataByteCnt-4), pData, pRxD->DataByteCnt-4); skb->mac.raw = skb->data; diff -ur ../rt2570-cvs-2005112305/Module/rtusb_info.c ./Module/rtusb_info.c --- ../rt2570-cvs-2005112305/Module/rtusb_info.c 2005-11-20 22:54:28.000000000 +0100 +++ ./Module/rtusb_info.c 2005-11-23 14:51:47.000000000 +0100 @@ -277,7 +277,10 @@ pAdapter->PortCfg.BssType=BSS_MONITOR; RTUSBEnqueueInternalCmd(pAdapter, RT_OID_LINK_DOWN); pAdapter->bConfigChanged = TRUE; - pAdapter->net->type = 802; // ARPHRD_IEEE80211_PRISM + if (pAdapter->PortCfg.MallowRFMONTx == TRUE) + pAdapter->net->type = 801; // ARPHRD_IEEE80211 + else + pAdapter->net->type = 802; // ARPHRD_IEEE80211_PRISM RTUSBWriteMACRegister(pAdapter, TXRX_CSR2, 0x4e); break; default: @@ -1132,9 +1135,11 @@ { case 1: pAdapter->PortCfg.MallowRFMONTx = TRUE; + pAdapter->net->type = 801; // ARPHRD_IEEE80211 break; case 0: pAdapter->PortCfg.MallowRFMONTx = FALSE; + pAdapter->net->type = 802; // ARPHRD_IEEE80211_PRISM break; default: return -EOPNOTSUPP;