NETIF_F_HW_CSUM
(NETIF_F_RXCSUM | NETIF_F_HW_CSUM |
(NETIF_F_RXCSUM | NETIF_F_HW_CSUM |
(NETIF_F_RXCSUM | NETIF_F_HW_CSUM |
xpnet_device->features = NETIF_F_HW_CSUM;
dev->hw_features |= NETIF_F_SG | NETIF_F_HW_CSUM;
dev->features |= NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_FRAGLIST;
dev->hw_features |= NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_FRAGLIST;
dev->features = NETIF_F_HW_CSUM;
dev->features |= NETIF_F_HW_CSUM | NETIF_F_HIGHDMA;
self->ndev->vlan_features |= NETIF_F_HW_CSUM | NETIF_F_RXCSUM |
.hw_features = NETIF_F_HW_CSUM | \
.hw_features = NETIF_F_HW_CSUM | \
.hw_features = NETIF_F_HW_CSUM | \
ndev->hw_features |= NETIF_F_HW_CSUM | NETIF_F_RXCSUM;
ndev->features |= NETIF_F_HW_CSUM | NETIF_F_RXCSUM;
if (ndev->features & NETIF_F_HW_CSUM) {
if (!(changed & (NETIF_F_RXCSUM | NETIF_F_HW_CSUM)))
if (changed & (NETIF_F_RXCSUM | NETIF_F_HW_CSUM))
NETIF_F_HW_CSUM |
NETIF_F_HW_CSUM |
netdev->hw_features = NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_TSO |
netdev->features = NETIF_F_HW_CSUM;
netdev->hw_features = NETIF_F_HW_CSUM | NETIF_F_SG | NETIF_F_TSO |
dev->features |= NETIF_F_SG | NETIF_F_HIGHDMA | NETIF_F_HW_CSUM |
if ((bp->dev->features & NETIF_F_HW_CSUM) &&
if (!(ndev->features & NETIF_F_HW_CSUM) ||
if (bp->dev->features & NETIF_F_HW_CSUM)
if (features & NETIF_F_HW_CSUM)
if (changed & NETIF_F_HW_CSUM)
dev->hw_features |= NETIF_F_HW_CSUM | NETIF_F_RXCSUM;
if ((request & NETIF_F_HW_CSUM) &&
!(lio->dev_capability & NETIF_F_HW_CSUM))
request &= ~NETIF_F_HW_CSUM;
| NETIF_F_HW_CSUM | NETIF_F_SG
if ((request & NETIF_F_HW_CSUM) &&
!(lio->dev_capability & NETIF_F_HW_CSUM))
request &= ~NETIF_F_HW_CSUM;
| NETIF_F_HW_CSUM | NETIF_F_SG
dev->features |= NETIF_F_SG | NETIF_F_HW_CSUM;
netdev->hw_features |= NETIF_F_SG | NETIF_F_HW_CSUM;
NETIF_F_HW_CSUM |
netdev->hw_features = NETIF_F_RXCSUM | NETIF_F_HW_CSUM |
netdev->hw_features &= ~NETIF_F_HW_CSUM;
netdev->hw_features &= ~NETIF_F_HW_CSUM;
netdev->hw_features &= ~(NETIF_F_HW_CSUM | NETIF_F_RXCSUM);
NETIF_F_HW_CSUM | NETIF_F_TSO | NETIF_F_TSO6 |
NETIF_F_HW_CSUM | NETIF_F_TSO | NETIF_F_TSO6 |
ndev->vlan_features = NETIF_F_SG | NETIF_F_HW_CSUM |
NETIF_F_HW_CSUM | NETIF_F_TSO | NETIF_F_TSO6 |
NETIF_F_HW_CSUM | NETIF_F_TSO | NETIF_F_TSO6 |
ndev->vlan_features = NETIF_F_SG | NETIF_F_HW_CSUM |
#define VLAN_FEAT (NETIF_F_SG | NETIF_F_HW_CSUM | TSO_FLAGS | \
netdev->hw_features |= NETIF_F_HW_CSUM | TSO_FLAGS;
dev->hw_features |= NETIF_F_HW_CSUM;
netdev->features |= NETIF_F_HW_CSUM;
NETIF_F_HW_CSUM |
NETIF_F_HW_CSUM |
NETIF_F_HW_CSUM);
NETIF_F_HW_CSUM);
NETIF_F_HW_CSUM |
netdev->mpls_features |= NETIF_F_HW_CSUM;
netdev->mpls_features = NETIF_F_HW_CSUM |
netdev->hw_features |= NETIF_F_HW_CSUM;
((features & NETIF_F_HW_CSUM) && (features & NETIF_F_ALL_TSO))) {
if (netdev->features & NETIF_F_HW_CSUM)
if ((tx_ring->netdev->features & NETIF_F_HW_CSUM) &&
return features & ~(NETIF_F_HW_CSUM |
return features & ~(NETIF_F_HW_CSUM |
NETIF_F_HW_CSUM;
netdev->mpls_features |= NETIF_F_HW_CSUM;
return features & ~(NETIF_F_HW_CSUM |
return features & ~(NETIF_F_HW_CSUM |
NETIF_F_HW_CSUM |
netdev->mpls_features |= NETIF_F_HW_CSUM;
return features & ~(NETIF_F_HW_CSUM |
return features & ~(NETIF_F_HW_CSUM |
netdev->features |= NETIF_F_HW_CSUM;
netdev->mpls_features |= NETIF_F_HW_CSUM;
return features & ~(NETIF_F_HW_CSUM |
return features & ~(NETIF_F_HW_CSUM |
NETIF_F_HW_CSUM;
NETIF_F_HW_CSUM;
return features & ~(NETIF_F_HW_CSUM |
return features & ~(NETIF_F_HW_CSUM |
NETIF_F_HW_CSUM |
NETIF_F_HW_CSUM;
netdev->vlan_features |= NETIF_F_HW_CSUM;
netdev->mpls_features |= NETIF_F_HW_CSUM;
netdev->hw_enc_features |= NETIF_F_HW_CSUM;
NETIF_F_HW_CSUM |
NETIF_F_HW_CSUM | NETIF_F_RXCSUM;
mgp->features = NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_TSO;
lower_features |= NETIF_F_HW_CSUM;
if (features & NETIF_F_HW_CSUM)
NETIF_F_HW_CSUM |
netdev->hw_enc_features |= NETIF_F_HW_CSUM;
netdev->features = NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_RXCSUM |
netdev->vlan_features |= NETIF_F_SG | NETIF_F_HW_CSUM |
dev->features |= NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_HIGHDMA;
if (changed & NETIF_F_HW_CSUM) {
if (features & NETIF_F_HW_CSUM)
.net_hw_features = NETIF_F_RXCSUM | NETIF_F_HW_CSUM,
.net_features = NETIF_F_RXCSUM | NETIF_F_HW_CSUM,
.vlan_features = NETIF_F_RXCSUM | NETIF_F_HW_CSUM,
bool tx_enable = ndev->features & NETIF_F_HW_CSUM;
ndev->features &= ~NETIF_F_HW_CSUM;
net_dev->vlan_features |= NETIF_F_HW_CSUM | NETIF_F_SG |
#define EF100_OFFLOAD_FEATURES (NETIF_F_HW_CSUM | NETIF_F_RXCSUM | \
if (likely(efx->net_dev->features & NETIF_F_HW_CSUM))
net_dev->vlan_features |= (NETIF_F_HW_CSUM | NETIF_F_SG |
net_dev->vlan_features |= (NETIF_F_HW_CSUM | NETIF_F_SG |
net_dev->vlan_features |= (NETIF_F_HW_CSUM | NETIF_F_SG |
if (efx->type->offload_features & (NETIF_F_IPV6_CSUM | NETIF_F_HW_CSUM))
dev->features |= NETIF_F_HW_CSUM | NETIF_F_SG;
dev->hw_features = NETIF_F_HW_CSUM | NETIF_F_SG;
dev->hw_features = NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_RXHASH;
dev->hw_features = NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_RXCSUM;
dev->hw_features = NETIF_F_SG | NETIF_F_HW_CSUM;
NETIF_F_HW_CSUM | NETIF_F_SG;
NETIF_F_HW_CSUM |
port->ndev->features &= ~NETIF_F_HW_CSUM;
dev->features |= NETIF_F_SG|NETIF_F_HW_CSUM;
NETIF_F_HW_CSUM;
ndev->features |= NETIF_F_HW_CSUM; /* Can checksum all the packets. */
ndev->features |= NETIF_F_HW_CSUM;
dev->features |= NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_FRAGLIST;
dev->hw_features |= NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_FRAGLIST;
#define IFB_FEATURES (NETIF_F_HW_CSUM | NETIF_F_SG | NETIF_F_FRAGLIST | \
(NETIF_F_SG | NETIF_F_HW_CSUM | \
(NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_HIGHDMA | NETIF_F_FRAGLIST | \
#define TUN_OFFLOADS (NETIF_F_HW_CSUM | NETIF_F_TSO_ECN | NETIF_F_TSO | \
| NETIF_F_HW_CSUM
(NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_GSO_SOFTWARE | \
(NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_HIGHDMA | NETIF_F_FRAGLIST | \
#define TUN_OFFLOADS (NETIF_F_HW_CSUM | NETIF_F_TSO_ECN | NETIF_F_TSO | \
NETIF_F_HW_CSUM |
NETIF_F_HW_CSUM |
NETIF_F_HW_CSUM |
dev->mpls_features = NETIF_F_HW_CSUM | NETIF_F_GSO_SOFTWARE;
feature_mask = NETIF_F_HW_CSUM;
#define TUN_USER_FEATURES (NETIF_F_HW_CSUM|NETIF_F_TSO_ECN|NETIF_F_TSO| \
features |= NETIF_F_HW_CSUM;
dev->net->features |= NETIF_F_HW_CSUM;
#define VETH_FEATURES (NETIF_F_SG | NETIF_F_FRAGLIST | NETIF_F_HW_CSUM | \
dev->mpls_features = NETIF_F_HW_CSUM | NETIF_F_GSO_SOFTWARE;
dev->hw_features |= NETIF_F_HW_CSUM | NETIF_F_SG;
dev->features |= NETIF_F_HW_CSUM | NETIF_F_SG;
NETIF_F_HW_CSUM | NETIF_F_HW_VLAN_CTAG_TX |
NETIF_F_HW_CSUM | NETIF_F_HW_VLAN_CTAG_TX |
NETIF_F_HW_CSUM | NETIF_F_HW_VLAN_CTAG_TX |
NETIF_F_HW_CSUM | NETIF_F_HW_VLAN_CTAG_TX |
dev->features |= NETIF_F_RXCSUM | NETIF_F_HW_CSUM | NETIF_F_SCTP_CRC;
dev->features |= NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_FRAGLIST;
dev->hw_features |= NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_FRAGLIST;
enum { WG_NETDEV_FEATURES = NETIF_F_HW_CSUM | NETIF_F_RXCSUM |
ar->hw->netdev_features = NETIF_F_HW_CSUM;
ar->hw->netdev_features = NETIF_F_HW_CSUM;
hw->netdev_features = NETIF_F_HW_CSUM;
ndev->hw_features = NETIF_F_HW_CSUM | NETIF_F_RXCSUM |
dev->features |= NETIF_F_HW_CSUM;
dev->hw_features |= NETIF_F_HW_CSUM;
features &= NETIF_F_SG | NETIF_F_HIGHDMA | NETIF_F_HW_CSUM |
NETIF_F_HW_CSUM)
#define MASTER_UPPER_DEV_VLAN_FEATURES (NETIF_F_HW_CSUM | NETIF_F_SG | \
#define MASTER_UPPER_DEV_ENC_FEATURES (NETIF_F_HW_CSUM | NETIF_F_SG | \
#define MASTER_UPPER_DEV_MPLS_FEATURES (NETIF_F_HW_CSUM | NETIF_F_SG | \
if (features & NETIF_F_HW_CSUM) {
if ((f1 ^ f2) & NETIF_F_HW_CSUM) {
if (f1 & NETIF_F_HW_CSUM)
#define FAILOVER_VLAN_FEATURES (NETIF_F_HW_CSUM | NETIF_F_SG | \
#define FAILOVER_ENC_FEATURES (NETIF_F_HW_CSUM | NETIF_F_SG | \
return (ret & ~NETIF_F_CSUM_MASK) | NETIF_F_HW_CSUM;
dev->hw_features = NETIF_F_HW_CSUM | NETIF_F_SG |
lower_features |= NETIF_F_HW_CSUM;
NETIF_F_GSO_MASK | NETIF_F_HW_CSUM)
bool hw_csum = features & NETIF_F_HW_CSUM;
if ((features & NETIF_F_HW_CSUM) &&
if ((features & NETIF_F_TSO) && !(features & NETIF_F_HW_CSUM) &&
if ((features & NETIF_F_TSO6) && !(features & NETIF_F_HW_CSUM) &&
if (mask & NETIF_F_HW_CSUM)
if (all & NETIF_F_HW_CSUM)
all &= ~(NETIF_F_CSUM_MASK & ~NETIF_F_HW_CSUM);
if (features & NETIF_F_HW_CSUM)
features = NETIF_F_SG | NETIF_F_HW_CSUM;
} else if (odev->features & (NETIF_F_HW_CSUM | NETIF_F_IP_CSUM)) {
} else if (odev->features & (NETIF_F_HW_CSUM | NETIF_F_IPV6_CSUM)) {
sk->sk_route_caps |= NETIF_F_SG | NETIF_F_HW_CSUM;
NETIF_F_GSO_MASK | NETIF_F_HW_CSUM |
(skb->dev->features & NETIF_F_HW_CSUM));
NETIF_F_HW_CSUM)
rt->dst.dev->features & (NETIF_F_HW_CSUM | NETIF_F_IP_CSUM) &&
NETIF_F_HW_CSUM)
(is_ipv6 ? (NETIF_F_HW_CSUM | NETIF_F_IPV6_CSUM) :
(NETIF_F_HW_CSUM | NETIF_F_IP_CSUM))));
features |= NETIF_F_HW_CSUM;
features |= NETIF_F_HW_CSUM;
NETIF_F_HW_CSUM)
rt->dst.dev->features & (NETIF_F_IPV6_CSUM | NETIF_F_HW_CSUM))
NETIF_F_HW_CSUM)
NETIF_F_HW_CSUM)
features |= NETIF_F_HW_CSUM;
NETIF_F_HW_CSUM | NETIF_F_SG | \
NETIF_F_HW_CSUM | NETIF_F_GSO_SOFTWARE |
segs = skb_segment(skb, (features | NETIF_F_HW_CSUM) & ~NETIF_F_SG);
NETIF_F_HW_CSUM)