Added include/linux/netdevice.h
[compat-rdma/compat.git] / include / linux / netdevice.h
1 #ifndef _COMPAT_LINUX_NETDEVICE_H
2 #define _COMPAT_LINUX_NETDEVICE_H 1
3
4 #include "../../compat/config.h"
5
6 #include_next <linux/netdevice.h>
7
8 #ifndef SET_ETHTOOL_OPS
9 #define SET_ETHTOOL_OPS(netdev,ops) \
10     ( (netdev)->ethtool_ops = (ops) )
11 #endif
12
13 #if !defined(HAVE_NETDEV_EXTENDED_HW_FEATURES)     && \
14     !defined(HAVE_NETDEV_OPS_EXT_NDO_FIX_FEATURES) && \
15     !defined(HAVE_NETDEV_OPS_EXT_NDO_SET_FEATURES) && \
16     !defined(HAVE_NDO_SET_FEATURES)
17 #define LEGACY_ETHTOOL_OPS
18 #endif
19
20 #ifndef NETDEV_BONDING_INFO
21 #define NETDEV_BONDING_INFO     0x0019
22 #endif
23
24
25 #ifndef HAVE_NETDEV_MASTER_UPPER_DEV_GET_RCU
26 #define netdev_master_upper_dev_get_rcu(x) (x)->master
27 #endif
28
29 #if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 18)
30 #ifdef HAVE_ALLOC_ETHERDEV_MQ
31 #ifndef HAVE_NETIF_SET_REAL_NUM_TX_QUEUES
32 static inline void netif_set_real_num_tx_queues(struct net_device *netdev,
33                                                 unsigned int txq)
34 {
35         netdev->real_num_tx_queues = txq;
36 }
37 #endif
38 #endif
39 #endif /* LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 18) */
40
41 #ifndef HAVE_NETDEV_RSS_KEY_FILL
42 static inline void netdev_rss_key_fill(void *addr, size_t len)
43 {
44         __be32 *hkey;
45
46         hkey = (__be32 *)addr;
47         hkey[0] = cpu_to_be32(0xD181C62C);
48         hkey[1] = cpu_to_be32(0xF7F4DB5B);
49         hkey[2] = cpu_to_be32(0x1983A2FC);
50         hkey[3] = cpu_to_be32(0x943E1ADB);
51         hkey[4] = cpu_to_be32(0xD9389E6B);
52         hkey[5] = cpu_to_be32(0xD1039C2C);
53         hkey[6] = cpu_to_be32(0xA74499AD);
54         hkey[7] = cpu_to_be32(0x593D56D9);
55         hkey[8] = cpu_to_be32(0xF3253C06);
56         hkey[9] = cpu_to_be32(0x2ADC1FFC);
57 }
58 #endif
59
60 #ifndef NAPI_POLL_WEIGHT
61 /* Default NAPI poll() weight
62  * Device drivers are strongly advised to not use bigger value
63  */
64 #define NAPI_POLL_WEIGHT 64
65 #endif
66
67 #ifndef NETDEV_JOIN
68 #define NETDEV_JOIN           0x0014
69 #endif
70
71 #ifndef NETDEV_MASTER_UPPER_DEV_LINK_4_PARAMS
72 #define netdev_master_upper_dev_link(a,b,c,d) netdev_master_upper_dev_link(a,b)
73 #endif
74
75 #ifdef HAVE_ALLOC_NETDEV_MQS_6_PARAMS
76 #define alloc_netdev_mqs(a, b, c, d, e) alloc_netdev_mqs(a, b, NET_NAME_UNKNOWN, c, d, e)
77 #endif
78
79 #ifdef alloc_netdev_mq
80 #undef alloc_netdev_mq
81 #define alloc_netdev_mq(sizeof_priv, name, setup, count) \
82     alloc_netdev_mqs(sizeof_priv, name, setup, count, count)
83 #endif
84
85 #ifdef alloc_netdev
86 #undef alloc_netdev
87 #define alloc_netdev(sizeof_priv, name, name_assign_type, setup) \
88         alloc_netdev_mqs(sizeof_priv, name, setup, 1, 1)
89 #endif
90
91 #ifndef HAVE_NETIF_TRANS_UPDATE
92 /* legacy drivers only, netdev_start_xmit() sets txq->trans_start */
93 static inline void netif_trans_update(struct net_device *dev)
94 {
95         struct netdev_queue *txq = netdev_get_tx_queue(dev, 0);
96
97         if (txq->trans_start != jiffies)
98                 txq->trans_start = jiffies;
99 }
100 #endif
101
102 #endif  /* _COMPAT_LINUX_NETDEVICE_H */