aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/rt2860/rt_main_dev.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging/rt2860/rt_main_dev.c')
-rw-r--r--drivers/staging/rt2860/rt_main_dev.c736
1 files changed, 0 insertions, 736 deletions
diff --git a/drivers/staging/rt2860/rt_main_dev.c b/drivers/staging/rt2860/rt_main_dev.c
deleted file mode 100644
index 236dd36d349a..000000000000
--- a/drivers/staging/rt2860/rt_main_dev.c
+++ /dev/null
@@ -1,736 +0,0 @@
-/*
- *************************************************************************
- * Ralink Tech Inc.
- * 5F., No.36, Taiyuan St., Jhubei City,
- * Hsinchu County 302,
- * Taiwan, R.O.C.
- *
- * (c) Copyright 2002-2007, Ralink Technology, Inc.
- *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the *
- * Free Software Foundation, Inc., *
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
- * *
- *************************************************************************
-
- Module Name:
- rt_main_dev.c
-
- Abstract:
- Create and register network interface.
-
- Revision History:
- Who When What
- Justin P. Mattock 11/07/2010 Fix typos in comments
- -------- ---------- ----------------------------------------------
-*/
-
-#include "rt_config.h"
-
-/*---------------------------------------------------------------------*/
-/* Private Variables Used */
-/*---------------------------------------------------------------------*/
-
-char *mac = ""; /* default 00:00:00:00:00:00 */
-char *hostname = ""; /* default CMPC */
-module_param(mac, charp, 0);
-MODULE_PARM_DESC(mac, "rt28xx: wireless mac addr");
-
-/*---------------------------------------------------------------------*/
-/* Prototypes of Functions Used */
-/*---------------------------------------------------------------------*/
-
-/* public function prototype */
-int rt28xx_close(IN struct net_device *net_dev);
-int rt28xx_open(struct net_device *net_dev);
-
-/* private function prototype */
-static int rt28xx_send_packets(IN struct sk_buff *skb_p,
- IN struct net_device *net_dev);
-
-static struct net_device_stats *RT28xx_get_ether_stats(IN struct net_device
- *net_dev);
-
-/*
-========================================================================
-Routine Description:
- Close raxx interface.
-
-Arguments:
- *net_dev the raxx interface pointer
-
-Return Value:
- 0 Open OK
- otherwise Open Fail
-
-Note:
- 1. if open fail, kernel will not call the close function.
- 2. Free memory for
- (1) Mlme Memory Handler: MlmeHalt()
- (2) TX & RX: RTMPFreeTxRxRingMemory()
- (3) BA Reordering: ba_reordering_resource_release()
-========================================================================
-*/
-int MainVirtualIF_close(IN struct net_device *net_dev)
-{
- struct rt_rtmp_adapter *pAd = NULL;
-
- GET_PAD_FROM_NET_DEV(pAd, net_dev);
-
- /* Sanity check for pAd */
- if (pAd == NULL)
- return 0; /* close ok */
-
- netif_carrier_off(pAd->net_dev);
- netif_stop_queue(pAd->net_dev);
-
- {
- BOOLEAN Cancelled;
-
- if (INFRA_ON(pAd) &&
- (!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST))) {
- struct rt_mlme_disassoc_req DisReq;
- struct rt_mlme_queue_elem *MsgElem =
- kmalloc(sizeof(struct rt_mlme_queue_elem),
- MEM_ALLOC_FLAG);
-
- if (MsgElem) {
- COPY_MAC_ADDR(DisReq.Addr,
- pAd->CommonCfg.Bssid);
- DisReq.Reason = REASON_DEAUTH_STA_LEAVING;
-
- MsgElem->Machine = ASSOC_STATE_MACHINE;
- MsgElem->MsgType = MT2_MLME_DISASSOC_REQ;
- MsgElem->MsgLen =
- sizeof(struct rt_mlme_disassoc_req);
- NdisMoveMemory(MsgElem->Msg, &DisReq,
- sizeof
- (struct rt_mlme_disassoc_req));
-
- /* Prevent to connect AP again in STAMlmePeriodicExec */
- pAd->MlmeAux.AutoReconnectSsidLen = 32;
- NdisZeroMemory(pAd->MlmeAux.AutoReconnectSsid,
- pAd->MlmeAux.
- AutoReconnectSsidLen);
-
- pAd->Mlme.CntlMachine.CurrState =
- CNTL_WAIT_OID_DISASSOC;
- MlmeDisassocReqAction(pAd, MsgElem);
- kfree(MsgElem);
- }
-
- RTMPusecDelay(1000);
- }
-
- RTMPCancelTimer(&pAd->StaCfg.StaQuickResponeForRateUpTimer,
- &Cancelled);
- RTMPCancelTimer(&pAd->StaCfg.WpaDisassocAndBlockAssocTimer,
- &Cancelled);
- }
-
- VIRTUAL_IF_DOWN(pAd);
-
- RT_MOD_DEC_USE_COUNT();
-
- return 0; /* close ok */
-}
-
-/*
-========================================================================
-Routine Description:
- Open raxx interface.
-
-Arguments:
- *net_dev the raxx interface pointer
-
-Return Value:
- 0 Open OK
- otherwise Open Fail
-
-Note:
- 1. if open fail, kernel will not call the close function.
- 2. Free memory for
- (1) Mlme Memory Handler: MlmeHalt()
- (2) TX & RX: RTMPFreeTxRxRingMemory()
- (3) BA Reordering: ba_reordering_resource_release()
-========================================================================
-*/
-int MainVirtualIF_open(IN struct net_device *net_dev)
-{
- struct rt_rtmp_adapter *pAd = NULL;
-
- GET_PAD_FROM_NET_DEV(pAd, net_dev);
-
- /* Sanity check for pAd */
- if (pAd == NULL)
- return 0; /* close ok */
-
- if (VIRTUAL_IF_UP(pAd) != 0)
- return -1;
-
- /* increase MODULE use count */
- RT_MOD_INC_USE_COUNT();
-
- netif_start_queue(net_dev);
- netif_carrier_on(net_dev);
- netif_wake_queue(net_dev);
-
- return 0;
-}
-
-/*
-========================================================================
-Routine Description:
- Close raxx interface.
-
-Arguments:
- *net_dev the raxx interface pointer
-
-Return Value:
- 0 Open OK
- otherwise Open Fail
-
-Note:
- 1. if open fail, kernel will not call the close function.
- 2. Free memory for
- (1) Mlme Memory Handler: MlmeHalt()
- (2) TX & RX: RTMPFreeTxRxRingMemory()
- (3) BA Reordering: ba_reordering_resource_release()
-========================================================================
-*/
-int rt28xx_close(struct net_device *dev)
-{
- struct net_device *net_dev = (struct net_device *)dev;
- struct rt_rtmp_adapter *pAd = NULL;
- BOOLEAN Cancelled;
- u32 i = 0;
-
-#ifdef RTMP_MAC_USB
- DECLARE_WAIT_QUEUE_HEAD_ONSTACK(unlink_wakeup);
- DECLARE_WAITQUEUE(wait, current);
-#endif /* RTMP_MAC_USB // */
-
- GET_PAD_FROM_NET_DEV(pAd, net_dev);
-
- DBGPRINT(RT_DEBUG_TRACE, ("===> rt28xx_close\n"));
-
- Cancelled = FALSE;
- /* Sanity check for pAd */
- if (pAd == NULL)
- return 0; /* close ok */
-
- {
-#ifdef RTMP_MAC_PCI
- RTMPPCIeLinkCtrlValueRestore(pAd, RESTORE_CLOSE);
-#endif /* RTMP_MAC_PCI // */
-
- /* If driver doesn't wake up firmware here, */
- /* NICLoadFirmware will hang forever when interface is up again. */
- if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_DOZE)) {
- AsicForceWakeup(pAd, TRUE);
- }
-#ifdef RTMP_MAC_USB
- RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_REMOVE_IN_PROGRESS);
-#endif /* RTMP_MAC_USB // */
-
- MlmeRadioOff(pAd);
-#ifdef RTMP_MAC_PCI
- pAd->bPCIclkOff = FALSE;
-#endif /* RTMP_MAC_PCI // */
- }
-
- RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS);
-
- for (i = 0; i < NUM_OF_TX_RING; i++) {
- while (pAd->DeQueueRunning[i] == TRUE) {
- DBGPRINT(RT_DEBUG_TRACE,
- ("Waiting for TxQueue[%d] done..........\n",
- i));
- RTMPusecDelay(1000);
- }
- }
-
-#ifdef RTMP_MAC_USB
- /* ensure there are no more active urbs. */
- add_wait_queue(&unlink_wakeup, &wait);
- pAd->wait = &unlink_wakeup;
-
- /* maybe wait for deletions to finish. */
- i = 0;
- /*while((i < 25) && atomic_read(&pAd->PendingRx) > 0) */
- while (i < 25) {
- unsigned long IrqFlags;
-
- RTMP_IRQ_LOCK(&pAd->BulkInLock, IrqFlags);
- if (pAd->PendingRx == 0) {
- RTMP_IRQ_UNLOCK(&pAd->BulkInLock, IrqFlags);
- break;
- }
- RTMP_IRQ_UNLOCK(&pAd->BulkInLock, IrqFlags);
-
- msleep(UNLINK_TIMEOUT_MS); /*Time in millisecond */
- i++;
- }
- pAd->wait = NULL;
- remove_wait_queue(&unlink_wakeup, &wait);
-#endif /* RTMP_MAC_USB // */
-
- /* Stop Mlme state machine */
- MlmeHalt(pAd);
-
- /* Close net tasklets */
- RtmpNetTaskExit(pAd);
-
- {
- MacTableReset(pAd);
- }
-
- MeasureReqTabExit(pAd);
- TpcReqTabExit(pAd);
-
- /* Close kernel threads */
- RtmpMgmtTaskExit(pAd);
-
-#ifdef RTMP_MAC_PCI
- {
- BOOLEAN brc;
- /* unsigned long Value; */
-
- if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_ACTIVE)) {
- RTMP_ASIC_INTERRUPT_DISABLE(pAd);
- }
- /* Receive packets to clear DMA index after disable interrupt. */
- /* RTMPHandleRxDoneInterrupt(pAd); */
- /* put radio off to save power when driver unloads. After radiooff, can't write/read register, so need to finish all. */
- /* register access before Radio off. */
-
- brc = RT28xxPciAsicRadioOff(pAd, RTMP_HALT, 0);
-
-/*In solution 3 of 3090F, the bPCIclkOff will be set to TRUE after calling RT28xxPciAsicRadioOff */
- pAd->bPCIclkOff = FALSE;
-
- if (brc == FALSE) {
- DBGPRINT(RT_DEBUG_ERROR,
- ("%s call RT28xxPciAsicRadioOff fail!\n",
- __func__));
- }
- }
-
-/*
- if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_ACTIVE))
- {
- RTMP_ASIC_INTERRUPT_DISABLE(pAd);
- }
-
- // Disable Rx, register value supposed will remain after reset
- NICIssueReset(pAd);
-*/
-#endif /* RTMP_MAC_PCI // */
-
- /* Free IRQ */
- if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_IN_USE)) {
-#ifdef RTMP_MAC_PCI
- /* Deregister interrupt function */
- RtmpOSIRQRelease(net_dev);
-#endif /* RTMP_MAC_PCI // */
- RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_IN_USE);
- }
- /* Free Ring or USB buffers */
- RTMPFreeTxRxRingMemory(pAd);
-
- RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS);
-
- /* Free BA reorder resource */
- ba_reordering_resource_release(pAd);
-
- RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_START_UP);
-
-/*+++Modify by woody to solve the bulk fail+++*/
- {
- }
-
- DBGPRINT(RT_DEBUG_TRACE, ("<=== rt28xx_close\n"));
- return 0; /* close ok */
-} /* End of rt28xx_close */
-
-/*
-========================================================================
-Routine Description:
- Open raxx interface.
-
-Arguments:
- *net_dev the raxx interface pointer
-
-Return Value:
- 0 Open OK
- otherwise Open Fail
-
-Note:
-========================================================================
-*/
-int rt28xx_open(struct net_device *dev)
-{
- struct net_device *net_dev = (struct net_device *)dev;
- struct rt_rtmp_adapter *pAd = NULL;
- int retval = 0;
- /*struct os_cookie *pObj; */
-
- GET_PAD_FROM_NET_DEV(pAd, net_dev);
-
- /* Sanity check for pAd */
- if (pAd == NULL) {
- /* if 1st open fail, pAd will be free;
- So the net_dev->ml_priv will be NULL in 2rd open */
- return -1;
- }
-
- if (net_dev->priv_flags == INT_MAIN) {
- if (pAd->OpMode == OPMODE_STA)
- net_dev->wireless_handlers =
- (struct iw_handler_def *)&rt28xx_iw_handler_def;
- }
- /* Request interrupt service routine for PCI device */
- /* register the interrupt routine with the os */
- RtmpOSIRQRequest(net_dev);
-
- /* Init IRQ parameters stored in pAd */
- RTMP_IRQ_INIT(pAd);
-
- /* Chip & other init */
- if (rt28xx_init(pAd, mac, hostname) == FALSE)
- goto err;
-
- /* Enable Interrupt */
- RTMP_IRQ_ENABLE(pAd);
-
- /* Now Enable RxTx */
- RTMPEnableRxTx(pAd);
- RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_START_UP);
-
- {
- u32 reg = 0;
- RTMP_IO_READ32(pAd, 0x1300, &reg); /* clear garbage interrupts */
- printk(KERN_DEBUG "0x1300 = %08x\n", reg);
- }
-
- {
-/* u32 reg; */
-/* u8 byte; */
-/* u16 tmp; */
-
-/* RTMP_IO_READ32(pAd, XIFS_TIME_CFG, &reg); */
-
-/* tmp = 0x0805; */
-/* reg = (reg & 0xffff0000) | tmp; */
-/* RTMP_IO_WRITE32(pAd, XIFS_TIME_CFG, reg); */
-
- }
-#ifdef RTMP_MAC_PCI
- RTMPInitPCIeLinkCtrlValue(pAd);
-#endif /* RTMP_MAC_PCI // */
-
- return retval;
-
-err:
-/*+++Add by shiang, move from rt28xx_init() to here. */
- RtmpOSIRQRelease(net_dev);
-/*---Add by shiang, move from rt28xx_init() to here. */
- return -1;
-} /* End of rt28xx_open */
-
-static const struct net_device_ops rt2860_netdev_ops = {
- .ndo_open = MainVirtualIF_open,
- .ndo_stop = MainVirtualIF_close,
- .ndo_do_ioctl = rt28xx_sta_ioctl,
- .ndo_get_stats = RT28xx_get_ether_stats,
- .ndo_validate_addr = NULL,
- .ndo_set_mac_address = eth_mac_addr,
- .ndo_change_mtu = eth_change_mtu,
- .ndo_start_xmit = rt28xx_send_packets,
-};
-
-struct net_device *RtmpPhyNetDevInit(struct rt_rtmp_adapter *pAd,
- struct rt_rtmp_os_netdev_op_hook *pNetDevHook)
-{
- struct net_device *net_dev = NULL;
-/* int Status; */
-
- net_dev =
- RtmpOSNetDevCreate(pAd, INT_MAIN, 0, sizeof(struct rt_rtmp_adapter *),
- INF_MAIN_DEV_NAME);
- if (net_dev == NULL) {
- printk
- ("RtmpPhyNetDevInit(): creation failed for main physical net device!\n");
- return NULL;
- }
-
- NdisZeroMemory((unsigned char *)pNetDevHook,
- sizeof(struct rt_rtmp_os_netdev_op_hook));
- pNetDevHook->netdev_ops = &rt2860_netdev_ops;
- pNetDevHook->priv_flags = INT_MAIN;
- pNetDevHook->needProtcted = FALSE;
-
- net_dev->ml_priv = (void *)pAd;
- pAd->net_dev = net_dev;
-
- return net_dev;
-
-}
-
-/*
-========================================================================
-Routine Description:
- The entry point for Linux kernel sent packet to our driver.
-
-Arguments:
- sk_buff *skb the pointer refer to a sk_buffer.
-
-Return Value:
- 0
-
-Note:
- This function is the entry point of Tx Path for Os delivery packet to
- our driver. You only can put OS-depened & STA/AP common handle procedures
- in here.
-========================================================================
-*/
-int rt28xx_packet_xmit(struct sk_buff *skb)
-{
- struct net_device *net_dev = skb->dev;
- struct rt_rtmp_adapter *pAd = NULL;
- int status = NETDEV_TX_OK;
- void *pPacket = (void *)skb;
-
- GET_PAD_FROM_NET_DEV(pAd, net_dev);
-
- /* RT2870STA does this in RTMPSendPackets() */
-
- {
- /* Drop send request since we are in monitor mode */
- if (MONITOR_ON(pAd)) {
- RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_FAILURE);
- goto done;
- }
- }
-
- /* EapolStart size is 18 */
- if (skb->len < 14) {
- /*printk("bad packet size: %d\n", pkt->len); */
- hex_dump("bad packet", skb->data, skb->len);
- RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_FAILURE);
- goto done;
- }
-
- RTMP_SET_PACKET_5VT(pPacket, 0);
- STASendPackets((void *)pAd, (void **)&pPacket, 1);
-
- status = NETDEV_TX_OK;
-done:
-
- return status;
-}
-
-/*
-========================================================================
-Routine Description:
- Send a packet to WLAN.
-
-Arguments:
- skb_p points to our adapter
- dev_p which WLAN network interface
-
-Return Value:
- 0: transmit successfully
- otherwise: transmit fail
-
-Note:
-========================================================================
-*/
-static int rt28xx_send_packets(IN struct sk_buff *skb_p,
- IN struct net_device *net_dev)
-{
- struct rt_rtmp_adapter *pAd = NULL;
-
- GET_PAD_FROM_NET_DEV(pAd, net_dev);
-
- if (!(net_dev->flags & IFF_UP)) {
- RELEASE_NDIS_PACKET(pAd, (void *)skb_p,
- NDIS_STATUS_FAILURE);
- return NETDEV_TX_OK;
- }
-
- NdisZeroMemory((u8 *)&skb_p->cb[CB_OFF], 15);
- RTMP_SET_PACKET_NET_DEVICE_MBSSID(skb_p, MAIN_MBSSID);
-
- return rt28xx_packet_xmit(skb_p);
-}
-
-/* This function will be called when query /proc */
-struct iw_statistics *rt28xx_get_wireless_stats(IN struct net_device *net_dev)
-{
- struct rt_rtmp_adapter *pAd = NULL;
-
- GET_PAD_FROM_NET_DEV(pAd, net_dev);
-
- DBGPRINT(RT_DEBUG_TRACE, ("rt28xx_get_wireless_stats --->\n"));
-
- pAd->iw_stats.status = 0; /* Status - device dependent for now */
-
- /* link quality */
- if (pAd->OpMode == OPMODE_STA)
- pAd->iw_stats.qual.qual =
- ((pAd->Mlme.ChannelQuality * 12) / 10 + 10);
-
- if (pAd->iw_stats.qual.qual > 100)
- pAd->iw_stats.qual.qual = 100;
-
- if (pAd->OpMode == OPMODE_STA) {
- pAd->iw_stats.qual.level =
- RTMPMaxRssi(pAd, pAd->StaCfg.RssiSample.LastRssi0,
- pAd->StaCfg.RssiSample.LastRssi1,
- pAd->StaCfg.RssiSample.LastRssi2);
- }
-
- pAd->iw_stats.qual.noise = pAd->BbpWriteLatch[66]; /* noise level (dBm) */
-
- pAd->iw_stats.qual.noise += 256 - 143;
- pAd->iw_stats.qual.updated = 1; /* Flags to know if updated */
-#ifdef IW_QUAL_DBM
- pAd->iw_stats.qual.updated |= IW_QUAL_DBM; /* Level + Noise are dBm */
-#endif /* IW_QUAL_DBM // */
-
- pAd->iw_stats.discard.nwid = 0; /* Rx : Wrong nwid/essid */
- pAd->iw_stats.miss.beacon = 0; /* Missed beacons/superframe */
-
- DBGPRINT(RT_DEBUG_TRACE, ("<--- rt28xx_get_wireless_stats\n"));
- return &pAd->iw_stats;
-}
-
-void tbtt_tasklet(unsigned long data)
-{
-/*#define MAX_TX_IN_TBTT (16) */
-
-}
-
-/*
- ========================================================================
-
- Routine Description:
- return ethernet statistics counter
-
- Arguments:
- net_dev Pointer to net_device
-
- Return Value:
- net_device_stats*
-
- Note:
-
- ========================================================================
-*/
-static struct net_device_stats *RT28xx_get_ether_stats(IN struct net_device
- *net_dev)
-{
- struct rt_rtmp_adapter *pAd = NULL;
-
- if (net_dev)
- GET_PAD_FROM_NET_DEV(pAd, net_dev);
-
- if (pAd) {
-
- pAd->stats.rx_packets =
- pAd->WlanCounters.ReceivedFragmentCount.QuadPart;
- pAd->stats.tx_packets =
- pAd->WlanCounters.TransmittedFragmentCount.QuadPart;
-
- pAd->stats.rx_bytes = pAd->RalinkCounters.ReceivedByteCount;
- pAd->stats.tx_bytes = pAd->RalinkCounters.TransmittedByteCount;
-
- pAd->stats.rx_errors = pAd->Counters8023.RxErrors;
- pAd->stats.tx_errors = pAd->Counters8023.TxErrors;
-
- pAd->stats.rx_dropped = 0;
- pAd->stats.tx_dropped = 0;
-
- pAd->stats.multicast = pAd->WlanCounters.MulticastReceivedFrameCount.QuadPart; /* multicast packets received */
- pAd->stats.collisions = pAd->Counters8023.OneCollision + pAd->Counters8023.MoreCollisions; /* Collision packets */
-
- pAd->stats.rx_length_errors = 0;
- pAd->stats.rx_over_errors = pAd->Counters8023.RxNoBuffer; /* receiver ring buff overflow */
- pAd->stats.rx_crc_errors = 0; /*pAd->WlanCounters.FCSErrorCount; // recved pkt with crc error */
- pAd->stats.rx_frame_errors = pAd->Counters8023.RcvAlignmentErrors; /* recv'd frame alignment error */
- pAd->stats.rx_fifo_errors = pAd->Counters8023.RxNoBuffer; /* recv'r fifo overrun */
- pAd->stats.rx_missed_errors = 0; /* receiver missed packet */
-
- /* detailed tx_errors */
- pAd->stats.tx_aborted_errors = 0;
- pAd->stats.tx_carrier_errors = 0;
- pAd->stats.tx_fifo_errors = 0;
- pAd->stats.tx_heartbeat_errors = 0;
- pAd->stats.tx_window_errors = 0;
-
- /* for cslip etc */
- pAd->stats.rx_compressed = 0;
- pAd->stats.tx_compressed = 0;
-
- return &pAd->stats;
- } else
- return NULL;
-}
-
-BOOLEAN RtmpPhyNetDevExit(struct rt_rtmp_adapter *pAd, struct net_device *net_dev)
-{
-
- /* Unregister network device */
- if (net_dev != NULL) {
- printk
- ("RtmpOSNetDevDetach(): RtmpOSNetDeviceDetach(), dev->name=%s!\n",
- net_dev->name);
- RtmpOSNetDevDetach(net_dev);
- }
-
- return TRUE;
-
-}
-
-/*
-========================================================================
-Routine Description:
- Allocate memory for adapter control block.
-
-Arguments:
- pAd Pointer to our adapter
-
-Return Value:
- NDIS_STATUS_SUCCESS
- NDIS_STATUS_FAILURE
- NDIS_STATUS_RESOURCES
-
-Note:
-========================================================================
-*/
-int AdapterBlockAllocateMemory(void *handle, void ** ppAd)
-{
-
- *ppAd = vmalloc(sizeof(struct rt_rtmp_adapter));
- /* pci_alloc_consistent(pci_dev, sizeof(struct rt_rtmp_adapter), phy_addr); */
-
- if (*ppAd) {
- NdisZeroMemory(*ppAd, sizeof(struct rt_rtmp_adapter));
- ((struct rt_rtmp_adapter *)*ppAd)->OS_Cookie = handle;
- return NDIS_STATUS_SUCCESS;
- } else {
- return NDIS_STATUS_FAILURE;
- }
-}