/* * Copyright (C) 2012 Realtek Semiconductor Corp. * All Rights Reserved. * * This program is the proprietary software of Realtek Semiconductor * Corporation and/or its licensors, and only be used, duplicated, * modified or distributed under the authorized license from Realtek. * * ANY USE OF THE SOFTWARE OTHER THAN AS AUTHORIZED UNDER * THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. */ #ifndef __RTK_RG_FWDENGINE_H__ #define __RTK_RG_FWDENGINE_H__ #ifdef __KERNEL__ #include <linux/skbuff.h> #else #define VLAN_HLEN 4 #define VLAN_ETH_ALEN 6 struct sk_buff { struct sk_buff *next; struct sk_buff *prev; unsigned int len; unsigned char *data; unsigned short vlan_tci; }; #endif #include <rtk_rg_liteRomeDriver.h> #include <rtk_rg_internal.h> //#include <rtk_rg_acl.h> extern struct net_device* decideRxDevice(struct re_private *cp, struct rx_info *pRxInfo); //#ifdef CONFIG_RTL8686NIC //extern int rtk_rg_fwdEngine_xmit (struct sk_buff *skb, void *void_ptx, void *void_ptxMask); //#endif //extern int _rtk_rg_portBindingLookup(int srcPort, int srcExtPort, int vid, rtk_rg_sipDipClassification_t sipDipClass, rtk_rg_pktHdr_t *pPktHdr); #if defined(CONFIG_XDSL_NEW_HWNAT_DRIVER) && defined(CONFIG_XDSL_ROMEDRIVER) extern int re8670_rx_skb (struct re_private *cp, struct sk_buff *skb, struct rx_info *pRxInfo); #endif extern int _rtk_rg_l3lookup(ipaddr_t ip); extern int _rtk_rg_v6L3lookup(unsigned char *ipv6); //typedef int (*p_nicTxCallBack)(void*, rtk_rg_txdesc_t*, int); //typedef unsigned char (*p_nicRxCallBack)(void*, rtk_rg_rxdesc_t*); extern void rg_proc_init(void); extern int _rtk_rg_aclDecisionClear(rtk_rg_pktHdr_t *pPktHdr); #ifdef __KERNEL__ rtk_rg_fwdEngineReturn_t rtk_rg_fwdEngineInput(struct re_private *cp, struct sk_buff *net_buf, void *pRxDescPtr); int rtk_rg_fwdEngine_xmit(struct sk_buff *skb, struct net_device *dev); int fwdEngine_rx_skb(struct re_private *cp, struct sk_buff *skb,struct rx_info *pRxInfo); #ifdef CONFIG_SMP void _rtk_rg_tasklet_queue_func(struct rg_private *rg_data); #endif #endif void _rtk_rg_fwdEngine_captureRxPkts(struct sk_buff* skb); void _rtk_rg_fwdEngine_captureToPsPkts(struct sk_buff* skb); int fwdEngine_pkt_tx_testing(void); /* Function Name: * rtk_rg_tx_setting * Description: * Read tx information of netowrk buffer and set to tx descriptor data structure. * Input: * Output: * buf - [in]<tab>Netowrk buffer. * pTxInfo - [in]<tab>Tx descriptor data structure.<nl>[out]<tab>None. * Return: * RT_ERR_RG_OK * Note: * buf->l3cs - set to pTxInfo->opts1.bit.cputag_ipcs.<nl> * buf->l4cs - set to pTxInfo->opts1.bit.cputag_l4cs.<nl> * buf->txmsk - set to pTxInfo->opts3.bit.tx_portmask.<nl> * buf->cpu_prisel - set to pTxInfo->opts2.bit.aspri.<nl> * bufvcpu_priority - set to pTxInfo->opts2.bit.cputag_pri.<nl> * buf->keep - set to pTxInfo->opts1.bit.keep.<nl> * skb->l34keep - set to pTxInfo->opts3.bit.L34_keep.<nl> * buf->extspa - set to pTxInfo->opts3.bit.extspa.<nl> * buf->pppoeAct - set to pTxInfo->opts2.bit.tx_pppoe_action.<nl> * buf->pppoeIdx - set to pTxInfo->opts2.bit.tx_pppoe_idx.<nl> * buf->l2br - set to pTxInfo->opts1.bit.blu.<nl> */ void _rtk_rg_fwdEngineTxDescSetting(void *pTxInfo,void *ptx,void *ptxMask); rtk_rg_successFailReturn_t rtk_rg_rome_driver_init(void); #endif