⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rtl865x_fast.h

📁 Ralink RT61 SoftAP Driver source code. RT61:MiniPCI
💻 H
字号:
#ifndef __RTL865X_FAST_H__
#define __RTL865X_FAST_H__

#include "re865x/rtl865x/mbuf.h"
#include "re865x/rtl865x/rtl_glue.h"

#define __IRAM_AIRGO		__attribute__  ((section(".iram-airgo")))
#define __DRAM_AIRGO		__attribute__  ((section(".dram-airgo")))

#define PACKET_AIRGO	7

/* ============================ Define ============================ */

/* indicate RTK pointer's offset of CB field in socket buffer structure : It record the pointer of Packet header */
typedef struct rtl865x_extDev_mbufInfo_s
{
	struct rtl_pktHdr *pktHdr;	/* This pointer MUST be "cb[4]", or the corresponding code must be changed in rtlglue_mbufFreeCluster() */
	u16 pktType;

	union
	{
		struct
		{
			struct net_device *dev;
			u16 rxdesc;
			u16 drvOwn;
		} type_rxRing;
		struct
		{
			void* skb_data;
			void* skb_tail;
			u32 skb_len;
		} type_romeDrv;
	} un;

} rtl865x_extDev_mbufInfo_t;

#define RTL865X_MBUFINFO_CBOFFSET			4	/* This value can NOT be arbitrarily changed, please refer to the comment of the declaration about pktHdr in struct "rtl865x_extDev_mbufInfo_t" */

#define RTL865X_GET_PKTHDR(skb) \
	(((u8*)((skb)->cb) + RTL865X_MBUFINFO_CBOFFSET)) ?\
		(((rtl865x_extDev_mbufInfo_t*)((u8*)((skb)->cb) + RTL865X_MBUFINFO_CBOFFSET))->pktHdr)\
		: NULL
#define RTL865X_SET_PKTHDR(skb, pkthdr) \
	do{ \
		if (((u8*)((skb)->cb) + RTL865X_MBUFINFO_CBOFFSET))\
			(((rtl865x_extDev_mbufInfo_t*)((u8*)((skb)->cb) + RTL865X_MBUFINFO_CBOFFSET))->pktHdr) = (struct rtl_pktHdr*)(pkthdr); \
	} while(0)

#define RTL865X_GET_PKTTYPE(skb) \
	(((u8*)((skb)->cb) + RTL865X_MBUFINFO_CBOFFSET)) ?\
		(((rtl865x_extDev_mbufInfo_t*)((u8*)((skb)->cb) + RTL865X_MBUFINFO_CBOFFSET))->pktType)\
		: RTL865X_TYPE_RT61
#define RTL865X_SET_PKTTYPE(skb, type) \
	do{ \
		if (((u8*)((skb)->cb) + RTL865X_MBUFINFO_CBOFFSET))\
			(((rtl865x_extDev_mbufInfo_t*)((u8*)((skb)->cb) + RTL865X_MBUFINFO_CBOFFSET))->pktType) = (u16)(type); \
	} while(0)
#define RTL865X_TYPE_NONE		0x00
#define RTL865X_TYPE_RXRING		0x10
#define RTL865X_TYPE_PS			0x11
#define RTL865X_TYPE_ROMEDRV	0x12
#define RTL865X_TYPE_RUNOUTRX	0x13
#define RTL865X_TYPE_RT61		0x14

#define RTL865X_GET_RXDESC(skb) \
	(((rtl865x_extDev_mbufInfo_t*)((u8*)((skb)->cb) + RTL865X_MBUFINFO_CBOFFSET))->un.type_rxRing.rxdesc)
#define RTL865X_SET_RXDESC(skb, rxIdx) \
	do{ \
		(((rtl865x_extDev_mbufInfo_t*)((u8*)((skb)->cb) + RTL865X_MBUFINFO_CBOFFSET))->un.type_rxRing.rxdesc) = (u16)(rxIdx); \
	} while(0)
#define RTL865X_MBUF_MAX_RXDESC		0xffff

#define RTL865X_GET_DEVPTR(skb) \
	(((rtl865x_extDev_mbufInfo_t*)((u8*)((skb)->cb) + RTL865X_MBUFINFO_CBOFFSET))->un.type_rxRing.dev)
#define RTL865X_SET_DEVPTR(skb, Dev) \
	do{ \
		if (((u8*)((skb)->cb) + RTL865X_MBUFINFO_CBOFFSET))\
			(((rtl865x_extDev_mbufInfo_t*)((u8*)((skb)->cb) + RTL865X_MBUFINFO_CBOFFSET))->un.type_rxRing.dev) = (struct net_device*)(Dev); \
	} while(0)

#define RTL865X_GET_SKBOWNER(skb) \
	(((rtl865x_extDev_mbufInfo_t*)((u8*)((skb)->cb) + RTL865X_MBUFINFO_CBOFFSET))->un.type_rxRing.drvOwn)
#define RTL865X_SET_SKBOWNER(skb, owner) \
	do{ \
		if (((u8*)((skb)->cb) + RTL865X_MBUFINFO_CBOFFSET))\
			(((rtl865x_extDev_mbufInfo_t*)((u8*)((skb)->cb) + RTL865X_MBUFINFO_CBOFFSET))->un.type_rxRing.drvOwn) = (owner); \
	} while(0)
#define RTL865X_RXRING_OWN	0xab
#define RTL865X_DRIVER_OWN	0xac

#define RTL865X_GET_ROMEDRV_SKBINFO(skb, infoType) \
	(((rtl865x_extDev_mbufInfo_t*)((u8*)((skb)->cb) + RTL865X_MBUFINFO_CBOFFSET))->un.type_romeDrv.skb_##infoType)
#define RTL865X_SET_ROMEDRV_SKBINFO(skb, skbInfo, infoType) \
	do{ \
		if (((u8*)((skb)->cb) + RTL865X_MBUFINFO_CBOFFSET))\
			(((rtl865x_extDev_mbufInfo_t*)((u8*)((skb)->cb) + RTL865X_MBUFINFO_CBOFFSET))->un.type_romeDrv.skb_##infoType) = (skbInfo); \
	} while(0)



#define RTL865X_MBUF_CLUSTER_SIZE			2048 /* Size of each temporary Rx buffer.*/

/* magic number */
#define RTL865X_MBUF_MAGIC_EXTDEV	0x66
#define RTL865X_MBUF_MAGIC_NONE		0

/* uncache/cache mask */
#define UNCACHE_MASK			0x20000000
#define UNCACHE(x)				((unsigned int)x|UNCACHE_MASK)
#define CACHED(x)				((unsigned int)x & ~UNCACHE_MASK)


void rtl865x_extDev_regCallBack(u16 linkid);
void rtl865x_extDev_kfree_skb(struct sk_buff *skb, u32 actualFree);
void rtl865x_extDev_unregisterUcastTxDev(struct net_device *txDev);
int rtl865x_extDev_addHost(u8 *hostMac, u16 vid, unsigned int linkid);
int rtl865x_extDev_removeHost(u8 *hostMac, u16 vid);
struct sk_buff *rtl865x_extDev_alloc_skb (	u32 length,
												u32 headroom,
												u16 rxIdx,
												struct net_device *dev);


#endif /* __RTL865X_FAST_H__*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -