346afa26149be63c516b4f315ef680d10a60b7c0
[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 #ifndef HAVE_NETIF_KEEP_DST
30 /* This device needs to keep skb dst for qdisc enqueue or ndo_start_xmit() */
31 static inline void netif_keep_dst(struct net_device *dev)
32 {
33         /* IFF_XMIT_DST_RELEASE_PERM   = 1<<17 */
34         dev->priv_flags &= ~(IFF_XMIT_DST_RELEASE | (1<<17) );
35 }
36 #endif
37
38 #if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 18)
39 #ifdef HAVE_ALLOC_ETHERDEV_MQ
40 #ifndef HAVE_NETIF_SET_REAL_NUM_TX_QUEUES
41 static inline void netif_set_real_num_tx_queues(struct net_device *netdev,
42                                                 unsigned int txq)
43 {
44         netdev->real_num_tx_queues = txq;
45 }
46 #endif
47 #endif
48 #endif /* LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 18) */
49
50 #ifndef HAVE_NETDEV_RSS_KEY_FILL
51 static inline void netdev_rss_key_fill(void *addr, size_t len)
52 {
53         __be32 *hkey;
54
55         hkey = (__be32 *)addr;
56         hkey[0] = cpu_to_be32(0xD181C62C);
57         hkey[1] = cpu_to_be32(0xF7F4DB5B);
58         hkey[2] = cpu_to_be32(0x1983A2FC);
59         hkey[3] = cpu_to_be32(0x943E1ADB);
60         hkey[4] = cpu_to_be32(0xD9389E6B);
61         hkey[5] = cpu_to_be32(0xD1039C2C);
62         hkey[6] = cpu_to_be32(0xA74499AD);
63         hkey[7] = cpu_to_be32(0x593D56D9);
64         hkey[8] = cpu_to_be32(0xF3253C06);
65         hkey[9] = cpu_to_be32(0x2ADC1FFC);
66 }
67 #endif
68
69 #ifndef NAPI_POLL_WEIGHT
70 /* Default NAPI poll() weight
71  * Device drivers are strongly advised to not use bigger value
72  */
73 #define NAPI_POLL_WEIGHT 64
74 #endif
75
76 #ifndef NETDEV_JOIN
77 #define NETDEV_JOIN           0x0014
78 #endif
79
80 #ifndef NETDEV_MASTER_UPPER_DEV_LINK_4_PARAMS
81 #define netdev_master_upper_dev_link(a,b,c,d) netdev_master_upper_dev_link(a,b)
82 #endif
83
84 #ifdef HAVE_ALLOC_NETDEV_MQS_6_PARAMS
85 #define alloc_netdev_mqs(a, b, c, d, e) alloc_netdev_mqs(a, b, NET_NAME_UNKNOWN, c, d, e)
86 #endif
87
88 #ifdef alloc_netdev_mq
89 #undef alloc_netdev_mq
90 #define alloc_netdev_mq(sizeof_priv, name, setup, count) \
91     alloc_netdev_mqs(sizeof_priv, name, setup, count, count)
92 #endif
93
94 #ifdef alloc_netdev
95 #undef alloc_netdev
96 #define alloc_netdev(sizeof_priv, name, name_assign_type, setup) \
97         alloc_netdev_mqs(sizeof_priv, name, setup, 1, 1)
98 #endif
99
100 #ifndef HAVE_NETIF_TRANS_UPDATE
101 /* legacy drivers only, netdev_start_xmit() sets txq->trans_start */
102 static inline void netif_trans_update(struct net_device *dev)
103 {
104         struct netdev_queue *txq = netdev_get_tx_queue(dev, 0);
105
106         if (txq->trans_start != jiffies)
107                 txq->trans_start = jiffies;
108 }
109 #endif
110
111 #endif  /* _COMPAT_LINUX_NETDEVICE_H */