| .. | .. |
|---|
| 1 | +/* SPDX-License-Identifier: GPL-2.0-or-later */ |
|---|
| 1 | 2 | /* |
|---|
| 2 | 3 | * Network device features. |
|---|
| 3 | | - * |
|---|
| 4 | | - * |
|---|
| 5 | | - * This program is free software; you can redistribute it and/or |
|---|
| 6 | | - * modify it under the terms of the GNU General Public License |
|---|
| 7 | | - * as published by the Free Software Foundation; either version |
|---|
| 8 | | - * 2 of the License, or (at your option) any later version. |
|---|
| 9 | 4 | */ |
|---|
| 10 | 5 | #ifndef _LINUX_NETDEV_FEATURES_H |
|---|
| 11 | 6 | #define _LINUX_NETDEV_FEATURES_H |
|---|
| .. | .. |
|---|
| 58 | 53 | NETIF_F_GSO_ESP_BIT, /* ... ESP with TSO */ |
|---|
| 59 | 54 | NETIF_F_GSO_UDP_BIT, /* ... UFO, deprecated except tuntap */ |
|---|
| 60 | 55 | NETIF_F_GSO_UDP_L4_BIT, /* ... UDP payload GSO (not UFO) */ |
|---|
| 56 | + NETIF_F_GSO_FRAGLIST_BIT, /* ... Fraglist GSO */ |
|---|
| 61 | 57 | /**/NETIF_F_GSO_LAST = /* last bit, see GSO_MASK */ |
|---|
| 62 | | - NETIF_F_GSO_UDP_L4_BIT, |
|---|
| 58 | + NETIF_F_GSO_FRAGLIST_BIT, |
|---|
| 63 | 59 | |
|---|
| 64 | 60 | NETIF_F_FCOE_CRC_BIT, /* FCoE CRC32 */ |
|---|
| 65 | 61 | NETIF_F_SCTP_CRC_BIT, /* SCTP checksum offload */ |
|---|
| .. | .. |
|---|
| 85 | 81 | |
|---|
| 86 | 82 | NETIF_F_GRO_HW_BIT, /* Hardware Generic receive offload */ |
|---|
| 87 | 83 | NETIF_F_HW_TLS_RECORD_BIT, /* Offload TLS record */ |
|---|
| 84 | + NETIF_F_GRO_FRAGLIST_BIT, /* Fraglist GRO */ |
|---|
| 85 | + |
|---|
| 86 | + NETIF_F_HW_MACSEC_BIT, /* Offload MACsec operations */ |
|---|
| 88 | 87 | |
|---|
| 89 | 88 | /* |
|---|
| 90 | 89 | * Add your fresh new feature above and remember to update |
|---|
| 91 | 90 | * netdev_features_strings[] in net/ethtool/common.c and maybe |
|---|
| 92 | 91 | * some feature mask #defines below. Please also describe it |
|---|
| 93 | | - * in Documentation/networking/netdev-features.txt. |
|---|
| 92 | + * in Documentation/networking/netdev-features.rst. |
|---|
| 94 | 93 | */ |
|---|
| 95 | 94 | |
|---|
| 96 | 95 | /**/NETDEV_FEATURE_COUNT |
|---|
| .. | .. |
|---|
| 155 | 154 | #define NETIF_F_GSO_UDP_L4 __NETIF_F(GSO_UDP_L4) |
|---|
| 156 | 155 | #define NETIF_F_HW_TLS_TX __NETIF_F(HW_TLS_TX) |
|---|
| 157 | 156 | #define NETIF_F_HW_TLS_RX __NETIF_F(HW_TLS_RX) |
|---|
| 157 | +#define NETIF_F_GRO_FRAGLIST __NETIF_F(GRO_FRAGLIST) |
|---|
| 158 | +#define NETIF_F_GSO_FRAGLIST __NETIF_F(GSO_FRAGLIST) |
|---|
| 159 | +#define NETIF_F_HW_MACSEC __NETIF_F(HW_MACSEC) |
|---|
| 158 | 160 | |
|---|
| 159 | | -/* Finds the next feature with the highest number of the range of start till 0. |
|---|
| 161 | +/* Finds the next feature with the highest number of the range of start-1 till 0. |
|---|
| 160 | 162 | */ |
|---|
| 161 | 163 | static inline int find_next_netdev_feature(u64 feature, unsigned long start) |
|---|
| 162 | 164 | { |
|---|
| .. | .. |
|---|
| 175 | 177 | for ((bit) = find_next_netdev_feature((mask_addr), \ |
|---|
| 176 | 178 | NETDEV_FEATURE_COUNT); \ |
|---|
| 177 | 179 | (bit) >= 0; \ |
|---|
| 178 | | - (bit) = find_next_netdev_feature((mask_addr), (bit) - 1)) |
|---|
| 180 | + (bit) = find_next_netdev_feature((mask_addr), (bit))) |
|---|
| 179 | 181 | |
|---|
| 180 | 182 | /* Features valid for ethtool to change */ |
|---|
| 181 | 183 | /* = all defined minus driver/device-class-related */ |
|---|
| .. | .. |
|---|
| 191 | 193 | #define NETIF_F_GSO_MASK (__NETIF_F_BIT(NETIF_F_GSO_LAST + 1) - \ |
|---|
| 192 | 194 | __NETIF_F_BIT(NETIF_F_GSO_SHIFT)) |
|---|
| 193 | 195 | |
|---|
| 194 | | -/* List of IP checksum features. Note that NETIF_F_ HW_CSUM should not be |
|---|
| 196 | +/* List of IP checksum features. Note that NETIF_F_HW_CSUM should not be |
|---|
| 195 | 197 | * set in features when NETIF_F_IP_CSUM or NETIF_F_IPV6_CSUM are set-- |
|---|
| 196 | 198 | * this would be contradictory |
|---|
| 197 | 199 | */ |
|---|
| .. | .. |
|---|
| 231 | 233 | /* changeable features with no special hardware requirements */ |
|---|
| 232 | 234 | #define NETIF_F_SOFT_FEATURES (NETIF_F_GSO | NETIF_F_GRO) |
|---|
| 233 | 235 | |
|---|
| 236 | +/* Changeable features with no special hardware requirements that defaults to off. */ |
|---|
| 237 | +#define NETIF_F_SOFT_FEATURES_OFF NETIF_F_GRO_FRAGLIST |
|---|
| 238 | + |
|---|
| 234 | 239 | #define NETIF_F_VLAN_FEATURES (NETIF_F_HW_VLAN_CTAG_FILTER | \ |
|---|
| 235 | 240 | NETIF_F_HW_VLAN_CTAG_RX | \ |
|---|
| 236 | 241 | NETIF_F_HW_VLAN_CTAG_TX | \ |
|---|