Blame view
include/linux/netdev_features.h
10.3 KB
2874c5fd2 treewide: Replace... |
1 |
/* SPDX-License-Identifier: GPL-2.0-or-later */ |
a59e2ecb8 net: split netdev... |
2 3 |
/* * Network device features. |
a59e2ecb8 net: split netdev... |
4 5 6 |
*/ #ifndef _LINUX_NETDEV_FEATURES_H #define _LINUX_NETDEV_FEATURES_H |
c8f44affb net: introduce an... |
7 |
#include <linux/types.h> |
8681ef1f3 net: Add header f... |
8 |
#include <linux/bitops.h> |
3b89ea9c5 net: Fix for_each... |
9 |
#include <asm/byteorder.h> |
c8f44affb net: introduce an... |
10 |
|
a861a8b23 net: extend netde... |
11 |
typedef u64 netdev_features_t; |
c8f44affb net: introduce an... |
12 |
|
a19f2a6df net: Define enum ... |
13 14 15 |
enum { NETIF_F_SG_BIT, /* Scatter/gather IO. */ NETIF_F_IP_CSUM_BIT, /* Can checksum TCP/UDP over IPv4. */ |
34324dc2b net: remove NETIF... |
16 |
__UNUSED_NETIF_F_1, |
a19f2a6df net: Define enum ... |
17 18 19 20 |
NETIF_F_HW_CSUM_BIT, /* Can checksum all the packets. */ NETIF_F_IPV6_CSUM_BIT, /* Can checksum TCP/UDP over IPV6 */ NETIF_F_HIGHDMA_BIT, /* Can DMA to high memory. */ NETIF_F_FRAGLIST_BIT, /* Scatter/gather IO. */ |
f646968f8 net: vlan: rename... |
21 22 23 |
NETIF_F_HW_VLAN_CTAG_TX_BIT, /* Transmit VLAN CTAG HW acceleration */ NETIF_F_HW_VLAN_CTAG_RX_BIT, /* Receive VLAN CTAG HW acceleration */ NETIF_F_HW_VLAN_CTAG_FILTER_BIT,/* Receive filtering on VLAN CTAGs */ |
a19f2a6df net: Define enum ... |
24 25 26 |
NETIF_F_VLAN_CHALLENGED_BIT, /* Device cannot handle VLAN packets */ NETIF_F_GSO_BIT, /* Enable software GSO. */ NETIF_F_LLTX_BIT, /* LockLess TX - deprecated. Please */ |
a59e2ecb8 net: split netdev... |
27 |
/* do not use LLTX in new drivers */ |
a19f2a6df net: Define enum ... |
28 29 30 31 32 33 34 |
NETIF_F_NETNS_LOCAL_BIT, /* Does not change network namespaces */ NETIF_F_GRO_BIT, /* Generic receive offload */ NETIF_F_LRO_BIT, /* large receive offload */ /**/NETIF_F_GSO_SHIFT, /* keep the order of SKB_GSO_* bits */ NETIF_F_TSO_BIT /* ... TCPv4 segmentation */ = NETIF_F_GSO_SHIFT, |
a19f2a6df net: Define enum ... |
35 36 |
NETIF_F_GSO_ROBUST_BIT, /* ... ->SKB_GSO_DODGY */ NETIF_F_TSO_ECN_BIT, /* ... TCP ECN support */ |
cbc53e08a GSO: Add GSO type... |
37 |
NETIF_F_TSO_MANGLEID_BIT, /* ... IPV4 ID mangling allowed */ |
a19f2a6df net: Define enum ... |
38 39 |
NETIF_F_TSO6_BIT, /* ... TCPv6 segmentation */ NETIF_F_FSO_BIT, /* ... FCoE segmentation */ |
68c331631 v4 GRE: Add TCP s... |
40 |
NETIF_F_GSO_GRE_BIT, /* ... GRE with TSO */ |
4749c09c3 gre: Call gso_mak... |
41 |
NETIF_F_GSO_GRE_CSUM_BIT, /* ... GRE with csum with TSO */ |
7e13318da net: define gso t... |
42 43 |
NETIF_F_GSO_IPXIP4_BIT, /* ... IP4 or IP6 over IP4 with TSO */ NETIF_F_GSO_IPXIP6_BIT, /* ... IP4 or IP6 over IP6 with TSO */ |
731362674 tunneling: Add ge... |
44 |
NETIF_F_GSO_UDP_TUNNEL_BIT, /* ... UDP TUNNEL with TSO */ |
0f4f4ffa7 net: Add GSO supp... |
45 |
NETIF_F_GSO_UDP_TUNNEL_CSUM_BIT,/* ... UDP TUNNEL with TSO & CSUM */ |
802ab55ad GSO: Support part... |
46 47 48 49 |
NETIF_F_GSO_PARTIAL_BIT, /* ... Only segment inner-most L4 * in hardware and all other * headers in software. */ |
e585f2363 udp: Changes to u... |
50 |
NETIF_F_GSO_TUNNEL_REMCSUM_BIT, /* ... TUNNEL with TSO & REMCSUM */ |
90017accf sctp: Add GSO sup... |
51 |
NETIF_F_GSO_SCTP_BIT, /* ... SCTP fragmentation */ |
c7ef8f0c0 net: Add ESP offl... |
52 |
NETIF_F_GSO_ESP_BIT, /* ... ESP with TSO */ |
0c19f846d net: accept UFO d... |
53 |
NETIF_F_GSO_UDP_BIT, /* ... UFO, deprecated except tuntap */ |
83aa025f5 udp: add gso supp... |
54 |
NETIF_F_GSO_UDP_L4_BIT, /* ... UDP payload GSO (not UFO) */ |
3b3358326 net: Add fraglist... |
55 |
NETIF_F_GSO_FRAGLIST_BIT, /* ... Fraglist GSO */ |
731362674 tunneling: Add ge... |
56 |
/**/NETIF_F_GSO_LAST = /* last bit, see GSO_MASK */ |
3b3358326 net: Add fraglist... |
57 |
NETIF_F_GSO_FRAGLIST_BIT, |
a19f2a6df net: Define enum ... |
58 59 |
NETIF_F_FCOE_CRC_BIT, /* FCoE CRC32 */ |
53692b1de sctp: Rename NETI... |
60 |
NETIF_F_SCTP_CRC_BIT, /* SCTP checksum offload */ |
a19f2a6df net: Define enum ... |
61 62 63 64 65 66 |
NETIF_F_FCOE_MTU_BIT, /* Supports max FCoE MTU, 2158 bytes*/ NETIF_F_NTUPLE_BIT, /* N-tuple filters supported */ NETIF_F_RXHASH_BIT, /* Receive hashing offload */ NETIF_F_RXCSUM_BIT, /* Receive checksumming offload */ NETIF_F_NOCACHE_COPY_BIT, /* Use no-cache copyfromuser */ NETIF_F_LOOPBACK_BIT, /* Enable loopback */ |
36eabda3d net: Support RXFC... |
67 |
NETIF_F_RXFCS_BIT, /* Append FCS to skb pkt data */ |
5e0c03c8c net: Support RX-A... |
68 |
NETIF_F_RXALL_BIT, /* Receive errored frames too */ |
4ada8db38 net: Restore NETI... |
69 70 71 |
NETIF_F_HW_VLAN_STAG_TX_BIT, /* Transmit VLAN STAG HW acceleration */ NETIF_F_HW_VLAN_STAG_RX_BIT, /* Receive VLAN STAG HW acceleration */ NETIF_F_HW_VLAN_STAG_FILTER_BIT,/* Receive filtering on VLAN STAGs */ |
a6cc0cfa7 net: Add layer 2 ... |
72 |
NETIF_F_HW_L2FW_DOFFLOAD_BIT, /* Allow L2 Forwarding in Hardware */ |
a19f2a6df net: Define enum ... |
73 |
|
1c78c64e9 net: add tc offlo... |
74 |
NETIF_F_HW_TC_BIT, /* Offload TC infrastructure */ |
c7ef8f0c0 net: Add ESP offl... |
75 76 |
NETIF_F_HW_ESP_BIT, /* Hardware ESP transformation offload */ NETIF_F_HW_ESP_TX_CSUM_BIT, /* ESP with TX checksum offload */ |
c1de6c51f sdk_dpaa: update ... |
77 |
NETIF_F_HW_ACCEL_MQ_BIT, /* Hardware-accelerated multiqueue */ |
d764a122c net: add new netd... |
78 |
NETIF_F_RX_UDP_TUNNEL_PORT_BIT, /* Offload of RX port for UDP tunnels */ |
2342a8512 net: Add TLS TX o... |
79 |
NETIF_F_HW_TLS_TX_BIT, /* Hardware TLS TX offload */ |
14136564c net: Add TLS RX o... |
80 |
NETIF_F_HW_TLS_RX_BIT, /* Hardware TLS RX offload */ |
1c78c64e9 net: add tc offlo... |
81 |
|
fb1f5f79a net: Introduce NE... |
82 |
NETIF_F_GRO_HW_BIT, /* Hardware Generic receive offload */ |
e0be6bea2 ethtool: enable I... |
83 |
NETIF_F_HW_TLS_RECORD_BIT, /* Offload TLS record */ |
3b3358326 net: Add fraglist... |
84 |
NETIF_F_GRO_FRAGLIST_BIT, /* Fraglist GRO */ |
fb1f5f79a net: Introduce NE... |
85 |
|
5908220b2 net: introduce th... |
86 |
NETIF_F_HW_MACSEC_BIT, /* Offload MACsec operations */ |
a19f2a6df net: Define enum ... |
87 88 89 90 |
/* * Add your fresh new feature above and remember to update * netdev_features_strings[] in net/core/ethtool.c and maybe * some feature mask #defines below. Please also describe it |
ea5bacaa2 docs: networking:... |
91 |
* in Documentation/networking/netdev-features.rst. |
a19f2a6df net: Define enum ... |
92 |
*/ |
a59e2ecb8 net: split netdev... |
93 |
|
a19f2a6df net: Define enum ... |
94 95 |
/**/NETDEV_FEATURE_COUNT }; |
a59e2ecb8 net: split netdev... |
96 |
|
a19f2a6df net: Define enum ... |
97 98 99 100 101 102 103 104 105 |
/* copy'n'paste compression ;) */ #define __NETIF_F_BIT(bit) ((netdev_features_t)1 << (bit)) #define __NETIF_F(name) __NETIF_F_BIT(NETIF_F_##name##_BIT) #define NETIF_F_FCOE_CRC __NETIF_F(FCOE_CRC) #define NETIF_F_FCOE_MTU __NETIF_F(FCOE_MTU) #define NETIF_F_FRAGLIST __NETIF_F(FRAGLIST) #define NETIF_F_FSO __NETIF_F(FSO) #define NETIF_F_GRO __NETIF_F(GRO) |
fb1f5f79a net: Introduce NE... |
106 |
#define NETIF_F_GRO_HW __NETIF_F(GRO_HW) |
a19f2a6df net: Define enum ... |
107 108 109 110 |
#define NETIF_F_GSO __NETIF_F(GSO) #define NETIF_F_GSO_ROBUST __NETIF_F(GSO_ROBUST) #define NETIF_F_HIGHDMA __NETIF_F(HIGHDMA) #define NETIF_F_HW_CSUM __NETIF_F(HW_CSUM) |
f646968f8 net: vlan: rename... |
111 112 113 |
#define NETIF_F_HW_VLAN_CTAG_FILTER __NETIF_F(HW_VLAN_CTAG_FILTER) #define NETIF_F_HW_VLAN_CTAG_RX __NETIF_F(HW_VLAN_CTAG_RX) #define NETIF_F_HW_VLAN_CTAG_TX __NETIF_F(HW_VLAN_CTAG_TX) |
a19f2a6df net: Define enum ... |
114 115 116 117 118 119 120 |
#define NETIF_F_IP_CSUM __NETIF_F(IP_CSUM) #define NETIF_F_IPV6_CSUM __NETIF_F(IPV6_CSUM) #define NETIF_F_LLTX __NETIF_F(LLTX) #define NETIF_F_LOOPBACK __NETIF_F(LOOPBACK) #define NETIF_F_LRO __NETIF_F(LRO) #define NETIF_F_NETNS_LOCAL __NETIF_F(NETNS_LOCAL) #define NETIF_F_NOCACHE_COPY __NETIF_F(NOCACHE_COPY) |
a19f2a6df net: Define enum ... |
121 122 123 |
#define NETIF_F_NTUPLE __NETIF_F(NTUPLE) #define NETIF_F_RXCSUM __NETIF_F(RXCSUM) #define NETIF_F_RXHASH __NETIF_F(RXHASH) |
53692b1de sctp: Rename NETI... |
124 |
#define NETIF_F_SCTP_CRC __NETIF_F(SCTP_CRC) |
a19f2a6df net: Define enum ... |
125 126 127 128 |
#define NETIF_F_SG __NETIF_F(SG) #define NETIF_F_TSO6 __NETIF_F(TSO6) #define NETIF_F_TSO_ECN __NETIF_F(TSO_ECN) #define NETIF_F_TSO __NETIF_F(TSO) |
a19f2a6df net: Define enum ... |
129 |
#define NETIF_F_VLAN_CHALLENGED __NETIF_F(VLAN_CHALLENGED) |
36eabda3d net: Support RXFC... |
130 |
#define NETIF_F_RXFCS __NETIF_F(RXFCS) |
5e0c03c8c net: Support RX-A... |
131 |
#define NETIF_F_RXALL __NETIF_F(RXALL) |
a362db3d6 net: fix some typ... |
132 |
#define NETIF_F_GSO_GRE __NETIF_F(GSO_GRE) |
4749c09c3 gre: Call gso_mak... |
133 |
#define NETIF_F_GSO_GRE_CSUM __NETIF_F(GSO_GRE_CSUM) |
7e13318da net: define gso t... |
134 135 |
#define NETIF_F_GSO_IPXIP4 __NETIF_F(GSO_IPXIP4) #define NETIF_F_GSO_IPXIP6 __NETIF_F(GSO_IPXIP6) |
a362db3d6 net: fix some typ... |
136 |
#define NETIF_F_GSO_UDP_TUNNEL __NETIF_F(GSO_UDP_TUNNEL) |
4b28252ca net: Fix GSO cons... |
137 |
#define NETIF_F_GSO_UDP_TUNNEL_CSUM __NETIF_F(GSO_UDP_TUNNEL_CSUM) |
cbc53e08a GSO: Add GSO type... |
138 |
#define NETIF_F_TSO_MANGLEID __NETIF_F(TSO_MANGLEID) |
802ab55ad GSO: Support part... |
139 |
#define NETIF_F_GSO_PARTIAL __NETIF_F(GSO_PARTIAL) |
e585f2363 udp: Changes to u... |
140 |
#define NETIF_F_GSO_TUNNEL_REMCSUM __NETIF_F(GSO_TUNNEL_REMCSUM) |
90017accf sctp: Add GSO sup... |
141 |
#define NETIF_F_GSO_SCTP __NETIF_F(GSO_SCTP) |
c7ef8f0c0 net: Add ESP offl... |
142 |
#define NETIF_F_GSO_ESP __NETIF_F(GSO_ESP) |
0c19f846d net: accept UFO d... |
143 |
#define NETIF_F_GSO_UDP __NETIF_F(GSO_UDP) |
4ada8db38 net: Restore NETI... |
144 145 146 |
#define NETIF_F_HW_VLAN_STAG_FILTER __NETIF_F(HW_VLAN_STAG_FILTER) #define NETIF_F_HW_VLAN_STAG_RX __NETIF_F(HW_VLAN_STAG_RX) #define NETIF_F_HW_VLAN_STAG_TX __NETIF_F(HW_VLAN_STAG_TX) |
a6cc0cfa7 net: Add layer 2 ... |
147 |
#define NETIF_F_HW_L2FW_DOFFLOAD __NETIF_F(HW_L2FW_DOFFLOAD) |
1c78c64e9 net: add tc offlo... |
148 |
#define NETIF_F_HW_TC __NETIF_F(HW_TC) |
c7ef8f0c0 net: Add ESP offl... |
149 150 |
#define NETIF_F_HW_ESP __NETIF_F(HW_ESP) #define NETIF_F_HW_ESP_TX_CSUM __NETIF_F(HW_ESP_TX_CSUM) |
c1de6c51f sdk_dpaa: update ... |
151 |
#define NETIF_F_HW_ACCEL_MQ __NETIF_F(HW_ACCEL_MQ) |
d764a122c net: add new netd... |
152 |
#define NETIF_F_RX_UDP_TUNNEL_PORT __NETIF_F(RX_UDP_TUNNEL_PORT) |
e0be6bea2 ethtool: enable I... |
153 |
#define NETIF_F_HW_TLS_RECORD __NETIF_F(HW_TLS_RECORD) |
83aa025f5 udp: add gso supp... |
154 |
#define NETIF_F_GSO_UDP_L4 __NETIF_F(GSO_UDP_L4) |
2342a8512 net: Add TLS TX o... |
155 |
#define NETIF_F_HW_TLS_TX __NETIF_F(HW_TLS_TX) |
14136564c net: Add TLS RX o... |
156 |
#define NETIF_F_HW_TLS_RX __NETIF_F(HW_TLS_RX) |
3b3358326 net: Add fraglist... |
157 158 |
#define NETIF_F_GRO_FRAGLIST __NETIF_F(GRO_FRAGLIST) #define NETIF_F_GSO_FRAGLIST __NETIF_F(GSO_FRAGLIST) |
5908220b2 net: introduce th... |
159 |
#define NETIF_F_HW_MACSEC __NETIF_F(HW_MACSEC) |
a59e2ecb8 net: split netdev... |
160 |
|
3b89ea9c5 net: Fix for_each... |
161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 |
/* Finds the next feature with the highest number of the range of start till 0. */ static inline int find_next_netdev_feature(u64 feature, unsigned long start) { /* like BITMAP_LAST_WORD_MASK() for u64 * this sets the most significant 64 - start to 0. */ feature &= ~0ULL >> (-start & ((sizeof(feature) * 8) - 1)); return fls64(feature) - 1; } /* This goes for the MSB to the LSB through the set feature bits, * mask_addr should be a u64 and bit an int */ #define for_each_netdev_feature(mask_addr, bit) \ for ((bit) = find_next_netdev_feature((mask_addr), \ NETDEV_FEATURE_COUNT); \ (bit) >= 0; \ (bit) = find_next_netdev_feature((mask_addr), (bit) - 1)) |
fd867d51f net/core: generic... |
181 |
|
a59e2ecb8 net: split netdev... |
182 183 184 185 |
/* Features valid for ethtool to change */ /* = all defined minus driver/device-class-related */ #define NETIF_F_NEVER_CHANGE (NETIF_F_VLAN_CHALLENGED | \ NETIF_F_LLTX | NETIF_F_NETNS_LOCAL) |
a19f2a6df net: Define enum ... |
186 187 188 189 190 191 192 193 194 |
/* remember that ((t)1 << t_BITS) is undefined in C99 */ #define NETIF_F_ETHTOOL_BITS ((__NETIF_F_BIT(NETDEV_FEATURE_COUNT - 1) | \ (__NETIF_F_BIT(NETDEV_FEATURE_COUNT - 1) - 1)) & \ ~NETIF_F_NEVER_CHANGE) /* Segmentation offload feature mask */ #define NETIF_F_GSO_MASK (__NETIF_F_BIT(NETIF_F_GSO_LAST + 1) - \ __NETIF_F_BIT(NETIF_F_GSO_SHIFT)) |
a59e2ecb8 net: split netdev... |
195 |
|
83896b0bd net: Fix broken N... |
196 |
/* List of IP checksum features. Note that NETIF_F_HW_CSUM should not be |
a188222b6 net: Rename NETIF... |
197 198 199 |
* set in features when NETIF_F_IP_CSUM or NETIF_F_IPV6_CSUM are set-- * this would be contradictory */ |
c8cd0989b net: Eliminate NE... |
200 201 |
#define NETIF_F_CSUM_MASK (NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM | \ NETIF_F_HW_CSUM) |
a59e2ecb8 net: split netdev... |
202 |
|
756ca8744 netdev_features: ... |
203 204 |
#define NETIF_F_ALL_TSO (NETIF_F_TSO | NETIF_F_TSO6 | \ NETIF_F_TSO_ECN | NETIF_F_TSO_MANGLEID) |
a59e2ecb8 net: split netdev... |
205 206 207 |
#define NETIF_F_ALL_FCOE (NETIF_F_FCOE_CRC | NETIF_F_FCOE_MTU | \ NETIF_F_FSO) |
b1c20f0b9 netdev_features: ... |
208 |
/* List of features with software fallbacks. */ |
d9d30adf5 net: Kill NETIF_F... |
209 |
#define NETIF_F_GSO_SOFTWARE (NETIF_F_ALL_TSO | \ |
90017accf sctp: Add GSO sup... |
210 |
NETIF_F_GSO_SCTP) |
b1c20f0b9 netdev_features: ... |
211 |
|
a59e2ecb8 net: split netdev... |
212 213 214 215 216 217 |
/* * If one device supports one of these features, then enable them * for all in netdev_increment_features. */ #define NETIF_F_ONE_FOR_ALL (NETIF_F_GSO_SOFTWARE | NETIF_F_GSO_ROBUST | \ NETIF_F_SG | NETIF_F_HIGHDMA | \ |
7889cbee8 switchdev: remove... |
218 |
NETIF_F_FRAGLIST | NETIF_F_VLAN_CHALLENGED) |
aafb3e98b netdev: introduce... |
219 |
|
a59e2ecb8 net: split netdev... |
220 221 222 223 224 |
/* * If one device doesn't support one of these features, then disable it * for all in netdev_increment_features. */ #define NETIF_F_ALL_FOR_ALL (NETIF_F_NOCACHE_COPY | NETIF_F_FSO) |
fd867d51f net/core: generic... |
225 226 227 228 229 |
/* * If upper/master device has these features disabled, they must be disabled * on all lower/slave devices as well. */ #define NETIF_F_UPPER_DISABLES NETIF_F_LRO |
a59e2ecb8 net: split netdev... |
230 231 |
/* changeable features with no special hardware requirements */ #define NETIF_F_SOFT_FEATURES (NETIF_F_GSO | NETIF_F_GRO) |
1a3c998f3 net: Add a netdev... |
232 233 |
/* Changeable features with no special hardware requirements that defaults to off. */ #define NETIF_F_SOFT_FEATURES_OFF NETIF_F_GRO_FRAGLIST |
2adb956b0 vlan: Warn the us... |
234 235 236 237 238 239 |
#define NETIF_F_VLAN_FEATURES (NETIF_F_HW_VLAN_CTAG_FILTER | \ NETIF_F_HW_VLAN_CTAG_RX | \ NETIF_F_HW_VLAN_CTAG_TX | \ NETIF_F_HW_VLAN_STAG_FILTER | \ NETIF_F_HW_VLAN_STAG_RX | \ NETIF_F_HW_VLAN_STAG_TX) |
f6eec614d openvswitch: Enab... |
240 241 |
#define NETIF_F_GSO_ENCAP_ALL (NETIF_F_GSO_GRE | \ NETIF_F_GSO_GRE_CSUM | \ |
7e13318da net: define gso t... |
242 243 |
NETIF_F_GSO_IPXIP4 | \ NETIF_F_GSO_IPXIP6 | \ |
f6eec614d openvswitch: Enab... |
244 |
NETIF_F_GSO_UDP_TUNNEL | \ |
59b93b41e net: Remove MPLS ... |
245 |
NETIF_F_GSO_UDP_TUNNEL_CSUM) |
f6eec614d openvswitch: Enab... |
246 |
|
a59e2ecb8 net: split netdev... |
247 |
#endif /* _LINUX_NETDEV_FEATURES_H */ |