本文整理汇总了C++中GET_PAD_FROM_NET_DEV函数的典型用法代码示例。如果您正苦于以下问题:C++ GET_PAD_FROM_NET_DEV函数的具体用法?C++ GET_PAD_FROM_NET_DEV怎么用?C++ GET_PAD_FROM_NET_DEV使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了GET_PAD_FROM_NET_DEV函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: rt28xx_ioctl
INT rt28xx_ioctl(
IN PNET_DEV net_dev,
IN OUT struct ifreq *rq,
IN INT cmd)
{
RTMP_ADAPTER *pAd = NULL;
INT ret = 0;
GET_PAD_FROM_NET_DEV(pAd, net_dev);
if (pAd == NULL)
{
/* if 1st open fail, pAd will be free;
So the net_dev->priv will be NULL in 2rd open */
return -ENETDOWN;
}
#ifdef CONFIG_STA_SUPPORT
IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
{
ret = rt28xx_sta_ioctl(net_dev, rq, cmd);
}
#endif // CONFIG_STA_SUPPORT //
return ret;
}
开发者ID:jhbsz,项目名称:ralink_2860xx,代码行数:27,代码来源:rt_main_dev.c
示例2: GET_PAD_FROM_NET_DEV
// This function will be called when query /proc
struct iw_statistics *rt28xx_get_wireless_stats(
IN struct net_device *net_dev)
{
PRTMP_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
pAd->iw_stats.qual.qual = ((pAd->Mlme.ChannelQuality * 12)/10 + 10);
if(pAd->iw_stats.qual.qual > 100)
pAd->iw_stats.qual.qual = 100;
#ifdef CONFIG_STA_SUPPORT
if (pAd->OpMode == OPMODE_STA)
pAd->iw_stats.qual.level = RTMPMaxRssi(pAd, pAd->StaCfg.RssiSample.LastRssi0, pAd->StaCfg.RssiSample.LastRssi1, pAd->StaCfg.RssiSample.LastRssi2);
#endif // CONFIG_STA_SUPPORT //
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;
}
开发者ID:esironal,项目名称:mywdtvlive,代码行数:36,代码来源:rt_main_dev.c
示例3: RtmpOSIRQRelease
int RtmpOSIRQRelease(IN PNET_DEV pNetDev)
{
struct net_device *net_dev = pNetDev;
PRTMP_ADAPTER pAd = NULL;
GET_PAD_FROM_NET_DEV(pAd, net_dev);
ASSERT(pAd);
#ifdef RTMP_PCI_SUPPORT
if (pAd->infType == RTMP_DEV_INF_PCI || pAd->infType == RTMP_DEV_INF_PCIE)
{
POS_COOKIE pObj = (POS_COOKIE)(pAd->OS_Cookie);
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
synchronize_irq(pObj->pci_dev->irq);
#endif
free_irq(pObj->pci_dev->irq, (net_dev));
RTMP_MSI_DISABLE(pAd);
}
#endif // RTMP_PCI_SUPPORT //
#ifdef RTMP_RBUS_SUPPORT
if (pAd->infType == RTMP_DEV_INF_RBUS)
{
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
synchronize_irq(net_dev->irq);
#endif
free_irq(net_dev->irq, (net_dev));
}
#endif // RTMP_RBUS_SUPPORT //
return 0;
}
开发者ID:qwerty1023,项目名称:wive-rtnl-firmware,代码行数:33,代码来源:rt_main_dev.c
示例4: RtmpOSIRQRequest
/*******************************************************************************
Device IRQ related functions.
*******************************************************************************/
int RtmpOSIRQRequest(IN PNET_DEV pNetDev)
{
#if defined(RTMP_PCI_SUPPORT) || defined(RTMP_RBUS_SUPPORT)
struct net_device *net_dev = pNetDev;
#endif
PRTMP_ADAPTER pAd = NULL;
int retval = 0;
GET_PAD_FROM_NET_DEV(pAd, pNetDev);
ASSERT(pAd);
#ifdef RTMP_PCI_SUPPORT
if (pAd->infType == RTMP_DEV_INF_PCI || pAd->infType == RTMP_DEV_INF_PCIE)
{
POS_COOKIE _pObj = (POS_COOKIE)(pAd->OS_Cookie);
RTMP_MSI_ENABLE(pAd);
retval = request_irq(_pObj->pci_dev->irq, rt2860_interrupt, SA_SHIRQ, (net_dev)->name, (net_dev));
if (retval != 0)
printk("RT2860: request_irq ERROR(%d)\n", retval);
}
#endif // RTMP_PCI_SUPPORT //
return retval;
}
开发者ID:jhbsz,项目名称:ralink_2860xx,代码行数:33,代码来源:rt_main_dev.c
示例5: rt2860_suspend
static int rt2860_suspend(
struct pci_dev *pci_dev,
pm_message_t state)
{
struct net_device *net_dev = pci_get_drvdata(pci_dev);
PRTMP_ADAPTER pAd = (PRTMP_ADAPTER)NULL;
INT32 retval = 0;
DBGPRINT(RT_DEBUG_TRACE, ("===> rt2860_suspend()\n"));
if (net_dev == NULL)
{
DBGPRINT(RT_DEBUG_ERROR, ("net_dev == NULL!\n"));
}
else
{
GET_PAD_FROM_NET_DEV(pAd, net_dev);
/* we can not use IFF_UP because ra0 down but ra1 up */
/* and 1 suspend/resume function for 1 module, not for each interface */
/* so Linux will call suspend/resume function once */
if (VIRTUAL_IF_NUM(pAd) > 0)
{
// avoid users do suspend after interface is down
// stop interface
netif_carrier_off(net_dev);
netif_stop_queue(net_dev);
// mark device as removed from system and therefore no longer available
netif_device_detach(net_dev);
// mark halt flag
RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS);
RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_RADIO_OFF);
// take down the device
rt28xx_close((PNET_DEV)net_dev);
RT_MOD_DEC_USE_COUNT();
}
}
#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,10)
// reference to http://vovo2000.com/type-lab/linux/kernel-api/linux-kernel-api.html
// enable device to generate PME# when suspended
// pci_choose_state(): Choose the power state of a PCI device to be suspended
retval = pci_enable_wake(pci_dev, pci_choose_state(pci_dev, state), 1);
// save the PCI configuration space of a device before suspending
pci_save_state(pci_dev);
// disable PCI device after use
pci_disable_device(pci_dev);
retval = pci_set_power_state(pci_dev, pci_choose_state(pci_dev, state));
#endif
DBGPRINT(RT_DEBUG_TRACE, ("<=== rt2860_suspend()\n"));
return retval;
}
开发者ID:jaskcon,项目名称:rt3090,代码行数:60,代码来源:pci_main_dev.c
示例6: MlmeHalt
/*
========================================================================
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)
{
RTMP_ADAPTER *pAd = NULL;
GET_PAD_FROM_NET_DEV(pAd, net_dev);
// Sanity check for pAd
if (pAd == NULL)
return 0; // close ok
#ifdef CONFIG_AP_SUPPORT
pAd->ApCfg.MBSSID[MAIN_MBSSID].bBcnSntReq = TRUE;
#endif // CONFIG_AP_SUPPORT //
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;
}
开发者ID:jing-git,项目名称:rt-n56u,代码行数:45,代码来源:rt_main_dev.c
示例7: rt28xx_packet_xmit
/*
========================================================================
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;
PRTMP_ADAPTER pAd = NULL;
int status = 0;
PNDIS_PACKET pPacket = (PNDIS_PACKET) skb;
GET_PAD_FROM_NET_DEV(pAd, net_dev);
/* RT2870STA does this in RTMPSendPackets() */
#ifdef RALINK_ATE
if (ATE_ON(pAd))
{
RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_RESOURCES);
return 0;
}
#endif // RALINK_ATE //
// 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;
}
#if !defined(CONFIG_RA_NAT_NONE) // ASUS EXT
/* add tx hook point*/
if(ra_sw_nat_hook_tx!= NULL)
{
unsigned long flags;
ra_sw_nat_hook_tx(pPacket);
}
#endif
RTMP_SET_PACKET_5VT(pPacket, 0);
// MiniportMMRequest(pAd, pkt->data, pkt->len);
#ifdef CONFIG_5VT_ENHANCE
if (*(int*)(skb->cb) == BRIDGE_TAG) {
RTMP_SET_PACKET_5VT(pPacket, 1);
}
#endif
#ifdef CONFIG_AP_SUPPORT
IF_DEV_CONFIG_OPMODE_ON_AP(pAd)
APSendPackets((NDIS_HANDLE)pAd, (PPNDIS_PACKET) &pPacket, 1);
#endif // CONFIG_AP_SUPPORT //
status = 0;
done:
return status;
}
开发者ID:zyubin,项目名称:asus-rt-n56u-firmware,代码行数:75,代码来源:rt_main_dev.c
示例8: rt2860_remove_one
static VOID __devexit rt2860_remove_one(
IN struct pci_dev *pci_dev)
{
PNET_DEV net_dev = pci_get_drvdata(pci_dev);
RTMP_ADAPTER *pAd = NULL;
ULONG csr_addr = net_dev->base_addr; // pAd->CSRBaseAddress;
GET_PAD_FROM_NET_DEV(pAd, net_dev);
DBGPRINT(RT_DEBUG_TRACE, ("===> rt2860_remove_one\n"));
if (pAd != NULL)
{
// Unregister/Free all allocated net_device.
RtmpPhyNetDevExit(pAd, net_dev);
// Unmap CSR base address
iounmap((char *)(csr_addr));
// release memory region
release_mem_region(pci_resource_start(pci_dev, 0), pci_resource_len(pci_dev, 0));
#ifdef RT_CFG80211_SUPPORT
CFG80211_UnRegister(pAd, net_dev);
#endif // RT_CFG80211_SUPPORT //
#ifdef CREDENTIAL_STORE
NdisFreeSpinLock(&pAd->StaCtIf.Lock);
#endif /* CREDENTIAL_STORE */
// Free RTMP_ADAPTER related structures.
RtmpRaDevCtrlExit(pAd);
}
else
{
// Unregister network device
RtmpOSNetDevDetach(net_dev);
// Unmap CSR base address
iounmap((char *)(net_dev->base_addr));
// release memory region
release_mem_region(pci_resource_start(pci_dev, 0), pci_resource_len(pci_dev, 0));
}
// Free the root net_device
RtmpOSNetDevFree(net_dev);
#ifdef VENDOR_FEATURE4_SUPPORT
{
extern ULONG OS_NumOfMemAlloc, OS_NumOfMemFree;
DBGPRINT(RT_DEBUG_TRACE, ("OS_NumOfMemAlloc = %ld, OS_NumOfMemFree = %ld\n",
OS_NumOfMemAlloc, OS_NumOfMemFree));
}
#endif // VENDOR_FEATURE4_SUPPORT //
}
开发者ID:jaskcon,项目名称:rt3090,代码行数:57,代码来源:pci_main_dev.c
示例9: GET_PAD_FROM_NET_DEV
// This function will be called when query /proc
struct iw_statistics *rt28xx_get_wireless_stats(
IN struct net_device *net_dev)
{
PRTMP_ADAPTER pAd = NULL;
GET_PAD_FROM_NET_DEV(pAd, net_dev);
DBGPRINT(RT_DEBUG_TRACE, ("rt28xx_get_wireless_stats --->\n"));
//check if the interface is down
if(!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_IN_USE))
return NULL;
pAd->iw_stats.status = 0; // Status - device dependent for now
// link quality
#ifdef CONFIG_STA_SUPPORT
if (pAd->OpMode == OPMODE_STA)
pAd->iw_stats.qual.qual = ((pAd->Mlme.ChannelQuality * 12)/10 + 10);
#endif // CONFIG_STA_SUPPORT //
if(pAd->iw_stats.qual.qual > 100)
pAd->iw_stats.qual.qual = 100;
#ifdef CONFIG_STA_SUPPORT
if (pAd->OpMode == OPMODE_STA)
{
pAd->iw_stats.qual.level =
RTMPMaxRssi(pAd, pAd->StaCfg.RssiSample.AvgRssi0,
pAd->StaCfg.RssiSample.AvgRssi1,
pAd->StaCfg.RssiSample.AvgRssi2);
}
#endif // CONFIG_STA_SUPPORT //
#ifdef CONFIG_STA_SUPPORT
pAd->iw_stats.qual.noise = RTMPMaxRssi(pAd, pAd->StaCfg.RssiSample.AvgRssi0,
pAd->StaCfg.RssiSample.AvgRssi1,
pAd->StaCfg.RssiSample.AvgRssi2) -
RTMPMinSnr(pAd, pAd->StaCfg.RssiSample.AvgSnr0,
pAd->StaCfg.RssiSample.AvgSnr1);
#endif // CONFIG_STA_SUPPORT //
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;
}
开发者ID:jhbsz,项目名称:ralink_2860xx,代码行数:55,代码来源:rt_main_dev.c
示例10: RtmpOSIRQRelease
int RtmpOSIRQRelease(IN PNET_DEV pNetDev)
{
struct net_device *net_dev = pNetDev;
PRTMP_ADAPTER pAd = NULL;
GET_PAD_FROM_NET_DEV(pAd, net_dev);
ASSERT(pAd);
return 0;
}
开发者ID:vanhoefm,项目名称:rt2870linux,代码行数:13,代码来源:rt_main_dev.c
示例11: rt2860_remove_one
static VOID __devexit rt2860_remove_one(
IN struct pci_dev *pci_dev)
{
PNET_DEV net_dev = pci_get_drvdata(pci_dev);
RTMP_ADAPTER *pAd = NULL;
ULONG csr_addr = net_dev->base_addr; // pAd->CSRBaseAddress;
GET_PAD_FROM_NET_DEV(pAd, net_dev);
DBGPRINT(RT_DEBUG_TRACE, ("===> rt2860_remove_one\n"));
if (pAd != NULL)
{
// Unregister/Free all allocated net_device.
RtmpPhyNetDevExit(pAd, net_dev);
// Unmap CSR base address
iounmap((char *)(csr_addr));
// release memory region
release_mem_region(pci_resource_start(pci_dev, 0), pci_resource_len(pci_dev, 0));
#ifdef RT_CFG80211_SUPPORT
CFG80211_UnRegister(pAd, net_dev);
#endif // RT_CFG80211_SUPPORT //
// Free RTMP_ADAPTER related structures.
RtmpRaDevCtrlExit(pAd);
}
else
{
// Unregister network device
RtmpOSNetDevDetach(net_dev);
// Unmap CSR base address
iounmap((char *)(net_dev->base_addr));
// release memory region
release_mem_region(pci_resource_start(pci_dev, 0), pci_resource_len(pci_dev, 0));
}
// Free the root net_device
RtmpOSNetDevFree(net_dev);
}
开发者ID:mrtos,项目名称:Logitech-Revue,代码行数:46,代码来源:pci_main_dev.c
示例12: rt2860_remove_one
static VOID __devexit rt2860_remove_one(struct pci_dev *pci_dev)
{
PNET_DEV net_dev = pci_get_drvdata(pci_dev);
VOID *pAd = NULL;
ULONG csr_addr = net_dev->base_addr;
GET_PAD_FROM_NET_DEV(pAd, net_dev);
DBGPRINT(RT_DEBUG_TRACE, ("===> rt2860_remove_one\n"));
if (pAd != NULL)
{
/* Unregister/Free all allocated net_device. */
RtmpPhyNetDevExit(pAd, net_dev);
#ifdef RT_CFG80211_SUPPORT
RTMP_DRIVER_80211_UNREGISTER(pAd, net_dev);
#endif /* RT_CFG80211_SUPPORT */
/* Free RTMP_ADAPTER related structures. */
RtmpRaDevCtrlExit(pAd);
/* Unmap CSR base address */
iounmap((char *)(csr_addr));
/* release memory region */
release_mem_region(pci_resource_start(pci_dev, 0), pci_resource_len(pci_dev, 0));
}
else
{
/* Unregister network device */
RtmpOSNetDevDetach(net_dev);
/* Unmap CSR base address */
iounmap((char *)(net_dev->base_addr));
/* release memory region */
release_mem_region(pci_resource_start(pci_dev, 0), pci_resource_len(pci_dev, 0));
}
/* Free the root net_device */
RtmpOSNetDevFree(net_dev);
wl_proc_exit();
}
开发者ID:jing-git,项目名称:rt-n56u,代码行数:46,代码来源:pci_main_dev.c
示例13: RtmpOSIRQRequest
/*******************************************************************************
Device IRQ related functions.
*******************************************************************************/
int RtmpOSIRQRequest(IN PNET_DEV pNetDev)
{
struct net_device *net_dev = NULL;
PRTMP_ADAPTER pAd = NULL;
int retval = 0;
net_dev = pNetDev;
GET_PAD_FROM_NET_DEV(pAd, pNetDev);
ASSERT(pAd);
return retval;
}
开发者ID:vanhoefm,项目名称:rt2870linux,代码行数:22,代码来源:rt_main_dev.c
示例14: rt_pci_remove
static VOID DEVEXIT rt_pci_remove(struct pci_dev *pci_dev)
{
PNET_DEV net_dev = pci_get_drvdata(pci_dev);
VOID *pAd = NULL;
ULONG csr_addr = net_dev->base_addr;
GET_PAD_FROM_NET_DEV(pAd, net_dev);
MTWF_LOG(DBG_CAT_ALL, DBG_SUBCAT_ALL, DBG_LVL_TRACE, ("===> %s()\n", __FUNCTION__));
if (pAd != NULL)
{
/* Unregister/Free all allocated net_device. */
RtmpPhyNetDevExit(pAd, net_dev);
#ifdef RT_CFG80211_SUPPORT
RTMP_DRIVER_80211_UNREGISTER(pAd, net_dev);
#endif /* RT_CFG80211_SUPPORT */
/* Free RTMP_ADAPTER related structures. */
RtmpRaDevCtrlExit(pAd);
/* Unmap CSR base address */
iounmap((char *)(csr_addr));
/* release memory region */
release_mem_region(pci_resource_start(pci_dev, 0), pci_resource_len(pci_dev, 0));
}
else
{
/* Unregister network device */
RtmpOSNetDevDetach(net_dev);
/* Unmap CSR base address */
iounmap((char *)(net_dev->base_addr));
/* release memory region */
release_mem_region(pci_resource_start(pci_dev, 0), pci_resource_len(pci_dev, 0));
}
/* Free the root net_device */
RtmpOSNetDevFree(net_dev);
}
开发者ID:AnyoeDove,项目名称:mtk-sources,代码行数:44,代码来源:pci_main_dev.c
示例15: rt28xx_send_packets
/*
========================================================================
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)
{
RTMP_ADAPTER *pAd = NULL;
GET_PAD_FROM_NET_DEV(pAd, net_dev);
if (!(net_dev->flags & IFF_UP))
{
RELEASE_NDIS_PACKET(pAd, (PNDIS_PACKET)skb_p, NDIS_STATUS_FAILURE);
return 0;
}
NdisZeroMemory((PUCHAR)&skb_p->cb[CB_OFF], 15);
RTMP_SET_PACKET_NET_DEVICE_MBSSID(skb_p, MAIN_MBSSID);
return rt28xx_packet_xmit(skb_p);
}
开发者ID:esironal,项目名称:mywdtvlive,代码行数:35,代码来源:rt_main_dev.c
示例16: rt2860_interrupt
rt2860_interrupt(int irq, void *dev_instance, struct pt_regs *regs)
#endif
{
struct net_device *net_dev = (struct net_device *) dev_instance;
VOID *pAd = NULL;
/* INT_SOURCE_CSR_STRUC IntSource; */
/* POS_COOKIE pObj; */
#ifdef MULTI_CORE_SUPPORT
unsigned long flags=0;
#endif // MULTI_CORE_SUPPORT //
GET_PAD_FROM_NET_DEV(pAd, net_dev);
RTMPHandleInterrupt(pAd);
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
return IRQ_HANDLED;
#endif
}
开发者ID:Sleuthhound,项目名称:RT28XX-RT539X-Linux-driver,代码行数:20,代码来源:rt_pci_rbus.c
示例17: rt28xx_send_packets
/*
========================================================================
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)
{
RTMP_ADAPTER *pAd = NULL;
GET_PAD_FROM_NET_DEV(pAd, net_dev);
if (!(RTMP_OS_NETDEV_STATE_RUNNING(net_dev)))
{
RELEASE_NDIS_PACKET(pAd, (PNDIS_PACKET)skb_p, NDIS_STATUS_FAILURE);
return 0;
}
NdisZeroMemory((PUCHAR)&skb_p->cb[CB_OFF], 15);
RTMP_SET_PACKET_NET_DEVICE_MBSSID(skb_p, MAIN_MBSSID);
MEM_DBG_PKT_ALLOC_INC(pAd);
return rt28xx_packet_xmit(skb_p);
}
开发者ID:jing-git,项目名称:rt-n56u,代码行数:37,代码来源:rt_main_dev.c
示例18: MlmeHalt
/*
========================================================================
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)
{
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);
VIRTUAL_IF_DOWN(pAd);
RT_MOD_DEC_USE_COUNT();
return 0; // close ok
}
开发者ID:esironal,项目名称:mywdtvlive,代码行数:41,代码来源:rt_main_dev.c
示例19: rt2860_remove_one
static void __devexit rt2860_remove_one(IN struct pci_dev *pci_dev)
{
struct net_device *net_dev = pci_get_drvdata(pci_dev);
struct rt_rtmp_adapter *pAd = NULL;
unsigned long csr_addr = net_dev->base_addr; /* pAd->CSRBaseAddress; */
GET_PAD_FROM_NET_DEV(pAd, net_dev);
DBGPRINT(RT_DEBUG_TRACE, ("===> rt2860_remove_one\n"));
if (pAd != NULL) {
/* Unregister/Free all allocated net_device. */
RtmpPhyNetDevExit(pAd, net_dev);
/* Unmap CSR base address */
iounmap((char *)(csr_addr));
/* release memory region */
release_mem_region(pci_resource_start(pci_dev, 0),
pci_resource_len(pci_dev, 0));
/* Free struct rt_rtmp_adapter related structures. */
RtmpRaDevCtrlExit(pAd);
} else {
/* Unregister network device */
RtmpOSNetDevDetach(net_dev);
/* Unmap CSR base address */
iounmap((char *)(net_dev->base_addr));
/* release memory region */
release_mem_region(pci_resource_start(pci_dev, 0),
pci_resource_len(pci_dev, 0));
}
/* Free the root net_device */
RtmpOSNetDevFree(net_dev);
}
开发者ID:A2109devs,项目名称:lenovo_a2109a_kernel,代码行数:40,代码来源:pci_main_dev.c
示例20: MlmeHalt
/*
========================================================================
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)
{
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;
}
开发者ID:jhbsz,项目名称:ralink_2860xx,代码行数:42,代码来源:rt_main_dev.c
注:本文中的GET_PAD_FROM_NET_DEV函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论