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

📄 kcompat.h

📁 Intel 82546系列lan driver源码
💻 H
📖 第 1 页 / 共 4 页
字号:
#define KC_USEC_PER_SEC	1000000L#define usecs_to_jiffies _kc_usecs_to_jiffiesstatic inline unsigned int _kc_jiffies_to_usecs(const unsigned long j){#if HZ <= KC_USEC_PER_SEC && !(KC_USEC_PER_SEC % HZ)	return (KC_USEC_PER_SEC / HZ) * j;#elif HZ > KC_USEC_PER_SEC && !(HZ % KC_USEC_PER_SEC)	return (j + (HZ / KC_USEC_PER_SEC) - 1)/(HZ / KC_USEC_PER_SEC);#else	return (j * KC_USEC_PER_SEC) / HZ;#endif}static inline unsigned long _kc_usecs_to_jiffies(const unsigned int m){	if (m > _kc_jiffies_to_usecs(MAX_JIFFY_OFFSET))		return MAX_JIFFY_OFFSET;#if HZ <= KC_USEC_PER_SEC && !(KC_USEC_PER_SEC % HZ)	return (m + (KC_USEC_PER_SEC / HZ) - 1) / (KC_USEC_PER_SEC / HZ);#elif HZ > KC_USEC_PER_SEC && !(HZ % KC_USEC_PER_SEC)	return m * (HZ / KC_USEC_PER_SEC);#else	return (m * HZ + KC_USEC_PER_SEC - 1) / KC_USEC_PER_SEC;#endif}#endif /* < 2.6.11 *//*****************************************************************************/#if ( LINUX_VERSION_CODE < KERNEL_VERSION(2,6,12) )#include <linux/reboot.h>#define USE_REBOOT_NOTIFIER/* Generic MII registers. */#define MII_CTRL1000        0x09        /* 1000BASE-T control          */#define MII_STAT1000        0x0a        /* 1000BASE-T status           *//* Advertisement control register. */#define ADVERTISE_PAUSE_CAP     0x0400  /* Try for pause               */#define ADVERTISE_PAUSE_ASYM    0x0800  /* Try for asymmetric pause     *//* 1000BASE-T Control register */#define ADVERTISE_1000FULL      0x0200  /* Advertise 1000BASE-T full duplex */#endif/*****************************************************************************/#if ( LINUX_VERSION_CODE < KERNEL_VERSION(2,6,14) )#define pm_message_t u32#ifndef kzalloc#define kzalloc _kc_kzallocextern void *_kc_kzalloc(size_t size, int flags);#endif/* Generic MII registers. */#define MII_ESTATUS	    0x0f	/* Extended Status *//* Basic mode status register. */#define BMSR_ESTATEN		0x0100	/* Extended Status in R15 *//* Extended status register. */#define ESTATUS_1000_TFULL	0x2000	/* Can do 1000BT Full */#define ESTATUS_1000_THALF	0x1000	/* Can do 1000BT Half */#endif/*****************************************************************************/#if ( LINUX_VERSION_CODE < KERNEL_VERSION(2,6,15) )#ifndef device_can_wakeup#define device_can_wakeup(dev)	(1)#endif#ifndef device_set_wakeup_enable#define device_set_wakeup_enable(dev, val)	do{}while(0)#endif#endif /* < 2.6.15 *//*****************************************************************************/#if ( LINUX_VERSION_CODE < KERNEL_VERSION(2,6,16) )#undef HAVE_PCI_ERS#else /* 2.6.16 and above */#undef HAVE_PCI_ERS#define HAVE_PCI_ERS#endif/*****************************************************************************/#if ( LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18) )#ifndef IRQF_PROBE_SHARED#ifdef SA_PROBEIRQ#define IRQF_PROBE_SHARED SA_PROBEIRQ#else#define IRQF_PROBE_SHARED 0#endif#endif#ifndef IRQF_SHARED#define IRQF_SHARED SA_SHIRQ#endif#ifndef ARRAY_SIZE#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))#endif#ifndef netdev_alloc_skb#define netdev_alloc_skb _kc_netdev_alloc_skbextern struct sk_buff *_kc_netdev_alloc_skb(struct net_device *dev,                                            unsigned int length);#endif#ifndef skb_is_gso#ifdef NETIF_F_TSO#define skb_is_gso _kc_skb_is_gsostatic inline int _kc_skb_is_gso(const struct sk_buff *skb){	return skb_shinfo(skb)->gso_size;}#else#define skb_is_gso(a) 0#endif#endif#endif /* < 2.6.18 *//*****************************************************************************/#if ( LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19) )#ifndef DIV_ROUND_UP#define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))#endif#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0) )#ifndef RHEL_RELEASE_CODE#define RHEL_RELEASE_CODE 0#endif#ifndef RHEL_RELEASE_VERSION#define RHEL_RELEASE_VERSION(a,b) 0#endif#ifndef AX_RELEASE_CODE#define AX_RELEASE_CODE 0#endif#ifndef AX_RELEASE_VERSION#define AX_RELEASE_VERSION(a,b) 0#endif#if (!(( RHEL_RELEASE_CODE > RHEL_RELEASE_VERSION(4,4) ) && ( RHEL_RELEASE_CODE < RHEL_RELEASE_VERSION(5,0) ) || ( RHEL_RELEASE_CODE > RHEL_RELEASE_VERSION(5,0) ) || (AX_RELEASE_CODE > AX_RELEASE_VERSION(3,0))))typedef irqreturn_t (*irq_handler_t)(int, void*, struct pt_regs *);#endiftypedef irqreturn_t (*new_handler_t)(int, void*);static inline irqreturn_t _kc_request_irq(unsigned int irq, new_handler_t handler, unsigned long flags, const char *devname, void *dev_id)#else /* 2.4.x */typedef void (*irq_handler_t)(int, void*, struct pt_regs *);typedef void (*new_handler_t)(int, void*);static inline int _kc_request_irq(unsigned int irq, new_handler_t handler, unsigned long flags, const char *devname, void *dev_id)#endif /* >= 2.5.x */{	irq_handler_t new_handler = (irq_handler_t) handler;	return request_irq(irq, new_handler, flags, devname, dev_id);}#undef request_irq#define request_irq(irq, handler, flags, devname, dev_id) _kc_request_irq((irq), (handler), (flags), (devname), (dev_id))#define irq_handler_t new_handler_t/* pci_restore_state and pci_save_state handles MSI/PCIE from 2.6.19 */#define PCIE_CONFIG_SPACE_LEN 256#define PCI_CONFIG_SPACE_LEN 64#define PCIE_LINK_STATUS 0x12#ifdef DRIVER_E1000E#define pci_config_space_ich8lan() { \	if (adapter->flags & FLAG_IS_ICH) \		size = PCIE_CONFIG_SPACE_LEN; \}#else#define pci_config_space_ich8lan() do {} while (0)#endif#undef pci_save_stateextern int _kc_pci_save_state(struct pci_dev *);#define pci_save_state(pdev) _kc_pci_save_state(pdev)#undef pci_restore_stateextern void _kc_pci_restore_state(struct pci_dev *);#define pci_restore_state(pdev) _kc_pci_restore_state(pdev)#ifdef HAVE_PCI_ERS#undef free_netdevextern void _kc_free_netdev(struct net_device *);#define free_netdev(netdev) _kc_free_netdev(netdev)#endif#define pci_enable_pcie_error_reporting(dev) do {} while (0)#define pci_disable_pcie_error_reporting(dev) do {} while (0)#define pci_cleanup_aer_uncorrect_error_status(dev) do {} while (0)#else /* 2.6.19 */#include <linux/aer.h>#endif /* < 2.6.19 *//*****************************************************************************/#if ( LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20) )#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,28) )#undef INIT_WORK#define INIT_WORK(_work, _func) \do { \	INIT_LIST_HEAD(&(_work)->entry); \	(_work)->pending = 0; \	(_work)->func = (void (*)(void *))_func; \	(_work)->data = _work; \	init_timer(&(_work)->timer); \} while (0)#endif#ifndef PCI_VDEVICE#define PCI_VDEVICE(ven, dev)        \	PCI_VENDOR_ID_##ven, (dev),  \	PCI_ANY_ID, PCI_ANY_ID, 0, 0#endif#ifndef round_jiffies#define round_jiffies(x) x#endif#define csum_offset csum#endif /* < 2.6.20 *//*****************************************************************************/#if ( LINUX_VERSION_CODE < KERNEL_VERSION(2,6,21) )#define vlan_group_get_device(vg, id) (vg->vlan_devices[id])#define vlan_group_set_device(vg, id, dev) if (vg) vg->vlan_devices[id] = dev;#define pci_channel_offline(pdev) (pdev->error_state && \	pdev->error_state != pci_channel_io_normal)#define pci_request_selected_regions(pdev, bars, name) \        pci_request_regions(pdev, name)#define pci_release_selected_regions(pdev, bars) pci_release_regions(pdev);#endif /* < 2.6.21 *//*****************************************************************************/#if ( LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22) )#define tcp_hdr(skb) (skb->h.th)#define tcp_hdrlen(skb) (skb->h.th->doff << 2)#define skb_transport_offset(skb) (skb->h.raw - skb->data)#define skb_transport_header(skb) (skb->h.raw)#define ipv6_hdr(skb) (skb->nh.ipv6h)#define ip_hdr(skb) (skb->nh.iph)#define skb_network_offset(skb) (skb->nh.raw - skb->data)#define skb_network_header(skb) (skb->nh.raw)#define skb_tail_pointer(skb) skb->tail#define skb_copy_to_linear_data_offset(skb, offset, from, len) \                                 memcpy(skb->data + offset, from, len)#define skb_network_header_len(skb) (skb->h.raw - skb->nh.raw)#define pci_register_driver pci_module_init#define skb_mac_header(skb) skb->mac.raw#ifdef NETIF_F_MULTI_QUEUE#ifndef alloc_etherdev_mq#define alloc_etherdev_mq(_a, _b) alloc_etherdev(_a)#endif#endif /* NETIF_F_MULTI_QUEUE */#ifndef ETH_FCS_LEN#define ETH_FCS_LEN 4#endif#define cancel_work_sync(x) flush_scheduled_work()#endif /* < 2.6.22 *//*****************************************************************************/#if ( LINUX_VERSION_CODE > KERNEL_VERSION(2,6,22) )#undef ETHTOOL_GPERMADDR#undef SET_MODULE_OWNER#define SET_MODULE_OWNER(dev) do { } while (0)#endif /* > 2.6.22 *//*****************************************************************************/#if ( LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24) )/* NAPI API changes in 2.6.24 break everything */struct napi_struct {	/* used to look up the real NAPI polling routine */	int (*poll)(struct napi_struct *, int);	struct net_device poll_dev;	int weight;};#ifdef NAPIextern int __kc_adapter_clean(struct net_device *, int *);#define netif_rx_complete(netdev, napi) netif_rx_complete(netdev)#define netif_rx_schedule_prep(netdev, napi) netif_rx_schedule_prep(netdev)#define netif_rx_schedule(netdev, napi) netif_rx_schedule(netdev)#define __netif_rx_schedule(netdev, napi) __netif_rx_schedule(netdev)#define napi_enable(napi) netif_poll_enable(adapter->netdev)#define napi_disable(napi) netif_poll_disable(adapter->netdev)#define netif_napi_add(_netdev, _napi, _poll, _weight) \	do { \		struct napi_struct *__napi = (_napi); \		_netdev->poll = &(__kc_adapter_clean); \		_netdev->weight = (_weight); \		__napi->poll = &(_poll); \		__napi->weight = (_weight); \		netif_poll_disable(_netdev); \	} while (0)#define netif_napi_del(_a) do {} while (0)#else /* NAPI */#define netif_napi_add(_netdev, _napi, _poll, _weight) \	do { \		struct napi_struct *__napi = _napi; \		_netdev->poll = &(_poll); \		_netdev->weight = (_weight); \		__napi->poll = &(_poll); \		__napi->weight = (_weight); \	} while (0)#define netif_napi_del(_a) do {} while (0)#endif /* NAPI */#undef dev_get_by_name#define dev_get_by_name(_a, _b) dev_get_by_name(_b)#define __netif_subqueue_stopped(_a, _b) netif_subqueue_stopped(_a, _b)#endif /* < 2.6.24 *//*****************************************************************************/#if ( LINUX_VERSION_CODE > KERNEL_VERSION(2,6,24) )#include <linux/pm_qos_params.h>#endif /* > 2.6.24 *//*****************************************************************************/#if ( LINUX_VERSION_CODE < KERNEL_VERSION(2,6,25) )#define PM_QOS_CPU_DMA_LATENCY	1#if ( LINUX_VERSION_CODE > KERNEL_VERSION(2,6,18) )#include <linux/latency.h>#define PM_QOS_DEFAULT_VALUE	INFINITE_LATENCY#define pm_qos_add_requirement(pm_qos_class, name, value) \		set_acceptable_latency(name, value)#define pm_qos_remove_requirement(pm_qos_class, name) \		remove_acceptable_latency(name)#define pm_qos_update_requirement(pm_qos_class, name, value) \		modify_acceptable_latency(name, value)#else#define PM_QOS_DEFAULT_VALUE	-1#define pm_qos_add_requirement(pm_qos_class, name, value)#define pm_qos_remove_requirement(pm_qos_class, name)#define pm_qos_update_requirement(pm_qos_class, name, value) { \	if (value != PM_QOS_DEFAULT_VALUE) { \		printk(KERN_WARNING "%s: unable to set PM QoS requirement\n", \			pci_name(adapter->pdev)); \	} \}#endif /* > 2.6.18 */#define pci_enable_device_mem(pdev) pci_enable_device(pdev)#endif /* < 2.6.25 *//*****************************************************************************/#if ( LINUX_VERSION_CODE < KERNEL_VERSION(2,6,26) )#else /* < 2.6.26 */#include <linux/pci-aspm.h>#define HAVE_NETDEV_VLAN_FEATURES#endif /* < 2.6.26 *//*****************************************************************************/#if ( LINUX_VERSION_CODE < KERNEL_VERSION(2,6,27) )#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,15) )#undef device_set_wakeup_enable#define device_set_wakeup_enable(dev, val) \	do { \		u16 pmc = 0; \		int pm = pci_find_capability(adapter->pdev, PCI_CAP_ID_PM); \		if (pm) { \			pci_read_config_word(adapter->pdev, pm + PCI_PM_PMC, \				&pmc); \		} \		if (val && (pmc >> 11)) \			(dev)->power.can_wakeup = !!(val); \		(dev)->power.should_wakeup = !!(val); \	} while (0)#endif /* 2.6.15 through 2.6.27 */#ifndef netif_napi_del#define netif_napi_del(_a) do {} while (0)#ifdef NAPI#ifdef CONFIG_NETPOLL#undef netif_napi_del#define netif_napi_del(_a) list_del(&(_a)->dev_list);#endif#endif#endif /* netif_napi_del */#ifndef pci_dma_mapping_error#define pci_dma_mapping_error(pdev, dma_addr) pci_dma_mapping_error(dma_addr)#endif#ifdef CONFIG_NETDEVICES_MULTIQUEUE#endif#ifdef HAVE_TX_MQextern void _kc_netif_tx_stop_all_queues(struct net_device *);extern void _kc_netif_tx_wake_all_queues(struct net_device *);extern void _kc_netif_tx_start_all_queues(struct net_device *);#define netif_tx_stop_all_queues(a) _kc_netif_tx_stop_all_queues(a)#define netif_tx_wake_all_queues(a) _kc_netif_tx_wake_all_queues(a)#define netif_tx_start_all_queues(a) _kc_netif_tx_start_all_queues(a)#undef netif_stop_subqueue#define netif_stop_subqueue(_ndev,_qi) do { \	if (netif_is_multiqueue((_ndev))) \		netif_stop_subqueue((_ndev), (_qi)); \	else \		netif_stop_queue((_ndev)); \	} while (0)#undef netif_start_subqueue#define netif_start_subqueue(_ndev,_qi) do { \	if (netif_is_multiqueue((_ndev))) \		netif_start_subqueue((_ndev), (_qi)); \	else \		netif_start_queue((_ndev)); \	} while (0)#else /* CONFIG_NETDEVICES_MULTIQUEUE */#define netif_tx_stop_all_queues(a) netif_stop_queue(a)#define netif_tx_wake_all_queues(a) netif_wake_queue(a)#define netif_tx_start_all_queues(a) netif_start_queue(a)#define netif_stop_subqueue(_ndev,_qi) netif_stop_queue((_ndev))#define netif_start_subqueue(_ndev,_qi) netif_start_queue((_ndev))#endif /* CONFIG_NETDEVICES_MULTIQUEUE */#ifndef NETIF_F_MULTI_QUEUE#define NETIF_F_MULTI_QUEUE 0#define netif_is_multiqueue(a) 0#define netif_wake_subqueue(a, b)#endif /* NETIF_F_MULTI_QUEUE */#else /* < 2.6.27 */#define HAVE_TX_MQ#endif /* < 2.6.27 */#endif /* _KCOMPAT_H_ */

⌨️ 快捷键说明

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