mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-21 17:01:57 +07:00
net: Rename NETIF_F_ALL_CSUM to NETIF_F_CSUM_MASK
The name NETIF_F_ALL_CSUM is a misnomer. This does not correspond to the set of features for offloading all checksums. This is a mask of the checksum offload related features bits. It is incorrect to set both NETIF_F_HW_CSUM and NETIF_F_IP_CSUM or NETIF_F_IPV6 at the same time for features of a device. This patch: - Changes instances of NETIF_F_ALL_CSUM to NETIF_F_CSUM_MASK (where NETIF_F_ALL_CSUM is being used as a mask). - Changes bonding, sfc/efx, ipvlan, macvlan, vlan, and team drivers to use NEITF_F_HW_CSUM in features list instead of NETIF_F_ALL_CSUM. Signed-off-by: Tom Herbert <tom@herbertland.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
253aab0597
commit
a188222b6e
@ -1067,12 +1067,12 @@ static netdev_features_t bond_fix_features(struct net_device *dev,
|
|||||||
return features;
|
return features;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define BOND_VLAN_FEATURES (NETIF_F_ALL_CSUM | NETIF_F_SG | \
|
#define BOND_VLAN_FEATURES (NETIF_F_HW_CSUM | NETIF_F_SG | \
|
||||||
NETIF_F_FRAGLIST | NETIF_F_ALL_TSO | \
|
NETIF_F_FRAGLIST | NETIF_F_ALL_TSO | \
|
||||||
NETIF_F_HIGHDMA | NETIF_F_LRO)
|
NETIF_F_HIGHDMA | NETIF_F_LRO)
|
||||||
|
|
||||||
#define BOND_ENC_FEATURES (NETIF_F_ALL_CSUM | NETIF_F_SG | NETIF_F_RXCSUM |\
|
#define BOND_ENC_FEATURES (NETIF_F_HW_CSUM | NETIF_F_SG | \
|
||||||
NETIF_F_ALL_TSO)
|
NETIF_F_RXCSUM | NETIF_F_ALL_TSO)
|
||||||
|
|
||||||
static void bond_compute_features(struct bonding *bond)
|
static void bond_compute_features(struct bonding *bond)
|
||||||
{
|
{
|
||||||
@ -4182,7 +4182,6 @@ void bond_setup(struct net_device *bond_dev)
|
|||||||
NETIF_F_HW_VLAN_CTAG_RX |
|
NETIF_F_HW_VLAN_CTAG_RX |
|
||||||
NETIF_F_HW_VLAN_CTAG_FILTER;
|
NETIF_F_HW_VLAN_CTAG_FILTER;
|
||||||
|
|
||||||
bond_dev->hw_features &= ~(NETIF_F_ALL_CSUM & ~NETIF_F_HW_CSUM);
|
|
||||||
bond_dev->hw_features |= NETIF_F_GSO_ENCAP_ALL;
|
bond_dev->hw_features |= NETIF_F_GSO_ENCAP_ALL;
|
||||||
bond_dev->features |= bond_dev->hw_features;
|
bond_dev->features |= bond_dev->hw_features;
|
||||||
}
|
}
|
||||||
|
@ -5289,7 +5289,7 @@ static netdev_features_t be_features_check(struct sk_buff *skb,
|
|||||||
skb->inner_protocol != htons(ETH_P_TEB) ||
|
skb->inner_protocol != htons(ETH_P_TEB) ||
|
||||||
skb_inner_mac_header(skb) - skb_transport_header(skb) !=
|
skb_inner_mac_header(skb) - skb_transport_header(skb) !=
|
||||||
sizeof(struct udphdr) + sizeof(struct vxlanhdr))
|
sizeof(struct udphdr) + sizeof(struct vxlanhdr))
|
||||||
return features & ~(NETIF_F_ALL_CSUM | NETIF_F_GSO_MASK);
|
return features & ~(NETIF_F_CSUM_MASK | NETIF_F_GSO_MASK);
|
||||||
|
|
||||||
return features;
|
return features;
|
||||||
}
|
}
|
||||||
|
@ -763,7 +763,7 @@ static netdev_features_t ibmveth_fix_features(struct net_device *dev,
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
if (!(features & NETIF_F_RXCSUM))
|
if (!(features & NETIF_F_RXCSUM))
|
||||||
features &= ~NETIF_F_ALL_CSUM;
|
features &= ~NETIF_F_CSUM_MASK;
|
||||||
|
|
||||||
return features;
|
return features;
|
||||||
}
|
}
|
||||||
@ -928,7 +928,8 @@ static int ibmveth_set_features(struct net_device *dev,
|
|||||||
rc1 = ibmveth_set_csum_offload(dev, rx_csum);
|
rc1 = ibmveth_set_csum_offload(dev, rx_csum);
|
||||||
if (rc1 && !adapter->rx_csum)
|
if (rc1 && !adapter->rx_csum)
|
||||||
dev->features =
|
dev->features =
|
||||||
features & ~(NETIF_F_ALL_CSUM | NETIF_F_RXCSUM);
|
features & ~(NETIF_F_CSUM_MASK |
|
||||||
|
NETIF_F_RXCSUM);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (large_send != adapter->large_send) {
|
if (large_send != adapter->large_send) {
|
||||||
|
@ -1357,7 +1357,7 @@ static netdev_features_t fm10k_features_check(struct sk_buff *skb,
|
|||||||
if (!skb->encapsulation || fm10k_tx_encap_offload(skb))
|
if (!skb->encapsulation || fm10k_tx_encap_offload(skb))
|
||||||
return features;
|
return features;
|
||||||
|
|
||||||
return features & ~(NETIF_F_ALL_CSUM | NETIF_F_GSO_MASK);
|
return features & ~(NETIF_F_CSUM_MASK | NETIF_F_GSO_MASK);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct net_device_ops fm10k_netdev_ops = {
|
static const struct net_device_ops fm10k_netdev_ops = {
|
||||||
|
@ -8766,7 +8766,7 @@ static netdev_features_t i40e_features_check(struct sk_buff *skb,
|
|||||||
if (skb->encapsulation &&
|
if (skb->encapsulation &&
|
||||||
(skb_inner_mac_header(skb) - skb_transport_header(skb) >
|
(skb_inner_mac_header(skb) - skb_transport_header(skb) >
|
||||||
I40E_MAX_TUNNEL_HDR_LEN))
|
I40E_MAX_TUNNEL_HDR_LEN))
|
||||||
return features & ~(NETIF_F_ALL_CSUM | NETIF_F_GSO_MASK);
|
return features & ~(NETIF_F_CSUM_MASK | NETIF_F_GSO_MASK);
|
||||||
|
|
||||||
return features;
|
return features;
|
||||||
}
|
}
|
||||||
|
@ -8598,7 +8598,7 @@ ixgbe_features_check(struct sk_buff *skb, struct net_device *dev,
|
|||||||
|
|
||||||
if (unlikely(skb_inner_mac_header(skb) - skb_transport_header(skb) >
|
if (unlikely(skb_inner_mac_header(skb) - skb_transport_header(skb) >
|
||||||
IXGBE_MAX_TUNNEL_HDR_LEN))
|
IXGBE_MAX_TUNNEL_HDR_LEN))
|
||||||
return features & ~NETIF_F_ALL_CSUM;
|
return features & ~NETIF_F_CSUM_MASK;
|
||||||
|
|
||||||
return features;
|
return features;
|
||||||
}
|
}
|
||||||
|
@ -2753,7 +2753,7 @@ static netdev_features_t
|
|||||||
jme_fix_features(struct net_device *netdev, netdev_features_t features)
|
jme_fix_features(struct net_device *netdev, netdev_features_t features)
|
||||||
{
|
{
|
||||||
if (netdev->mtu > 1900)
|
if (netdev->mtu > 1900)
|
||||||
features &= ~(NETIF_F_ALL_TSO | NETIF_F_ALL_CSUM);
|
features &= ~(NETIF_F_ALL_TSO | NETIF_F_CSUM_MASK);
|
||||||
return features;
|
return features;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4380,7 +4380,7 @@ static netdev_features_t sky2_fix_features(struct net_device *dev,
|
|||||||
*/
|
*/
|
||||||
if (dev->mtu > ETH_DATA_LEN && hw->chip_id == CHIP_ID_YUKON_EC_U) {
|
if (dev->mtu > ETH_DATA_LEN && hw->chip_id == CHIP_ID_YUKON_EC_U) {
|
||||||
netdev_info(dev, "checksum offload not possible with jumbo frames\n");
|
netdev_info(dev, "checksum offload not possible with jumbo frames\n");
|
||||||
features &= ~(NETIF_F_TSO|NETIF_F_SG|NETIF_F_ALL_CSUM);
|
features &= ~(NETIF_F_TSO | NETIF_F_SG | NETIF_F_CSUM_MASK);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Some hardware requires receive checksum for RSS to work. */
|
/* Some hardware requires receive checksum for RSS to work. */
|
||||||
|
@ -2071,7 +2071,7 @@ nfp_net_features_check(struct sk_buff *skb, struct net_device *dev,
|
|||||||
l4_hdr = ipv6_hdr(skb)->nexthdr;
|
l4_hdr = ipv6_hdr(skb)->nexthdr;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return features & ~(NETIF_F_ALL_CSUM | NETIF_F_GSO_MASK);
|
return features & ~(NETIF_F_CSUM_MASK | NETIF_F_GSO_MASK);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (skb->inner_protocol_type != ENCAP_TYPE_ETHER ||
|
if (skb->inner_protocol_type != ENCAP_TYPE_ETHER ||
|
||||||
@ -2080,7 +2080,7 @@ nfp_net_features_check(struct sk_buff *skb, struct net_device *dev,
|
|||||||
(l4_hdr == IPPROTO_UDP &&
|
(l4_hdr == IPPROTO_UDP &&
|
||||||
(skb_inner_mac_header(skb) - skb_transport_header(skb) !=
|
(skb_inner_mac_header(skb) - skb_transport_header(skb) !=
|
||||||
sizeof(struct udphdr) + sizeof(struct vxlanhdr))))
|
sizeof(struct udphdr) + sizeof(struct vxlanhdr))))
|
||||||
return features & ~(NETIF_F_ALL_CSUM | NETIF_F_GSO_MASK);
|
return features & ~(NETIF_F_CSUM_MASK | NETIF_F_GSO_MASK);
|
||||||
|
|
||||||
return features;
|
return features;
|
||||||
}
|
}
|
||||||
|
@ -500,7 +500,7 @@ void pch_gbe_check_options(struct pch_gbe_adapter *adapter)
|
|||||||
val = XsumTX;
|
val = XsumTX;
|
||||||
pch_gbe_validate_option(&val, &opt, adapter);
|
pch_gbe_validate_option(&val, &opt, adapter);
|
||||||
if (!val)
|
if (!val)
|
||||||
dev->features &= ~NETIF_F_ALL_CSUM;
|
dev->features &= ~NETIF_F_CSUM_MASK;
|
||||||
}
|
}
|
||||||
{ /* Flow Control */
|
{ /* Flow Control */
|
||||||
static const struct pch_gbe_option opt = {
|
static const struct pch_gbe_option opt = {
|
||||||
|
@ -3131,7 +3131,7 @@ static int efx_pci_probe(struct pci_dev *pci_dev,
|
|||||||
if (efx->type->offload_features & NETIF_F_V6_CSUM)
|
if (efx->type->offload_features & NETIF_F_V6_CSUM)
|
||||||
net_dev->features |= NETIF_F_TSO6;
|
net_dev->features |= NETIF_F_TSO6;
|
||||||
/* Mask for features that also apply to VLAN devices */
|
/* Mask for features that also apply to VLAN devices */
|
||||||
net_dev->vlan_features |= (NETIF_F_ALL_CSUM | NETIF_F_SG |
|
net_dev->vlan_features |= (NETIF_F_HW_CSUM | NETIF_F_SG |
|
||||||
NETIF_F_HIGHDMA | NETIF_F_ALL_TSO |
|
NETIF_F_HIGHDMA | NETIF_F_ALL_TSO |
|
||||||
NETIF_F_RXCSUM);
|
NETIF_F_RXCSUM);
|
||||||
/* All offloads can be toggled */
|
/* All offloads can be toggled */
|
||||||
|
@ -2402,7 +2402,7 @@ static netdev_features_t stmmac_fix_features(struct net_device *dev,
|
|||||||
features &= ~NETIF_F_RXCSUM;
|
features &= ~NETIF_F_RXCSUM;
|
||||||
|
|
||||||
if (!priv->plat->tx_coe)
|
if (!priv->plat->tx_coe)
|
||||||
features &= ~NETIF_F_ALL_CSUM;
|
features &= ~NETIF_F_CSUM_MASK;
|
||||||
|
|
||||||
/* Some GMAC devices have a bugged Jumbo frame support that
|
/* Some GMAC devices have a bugged Jumbo frame support that
|
||||||
* needs to have the Tx COE disabled for oversized frames
|
* needs to have the Tx COE disabled for oversized frames
|
||||||
@ -2410,7 +2410,7 @@ static netdev_features_t stmmac_fix_features(struct net_device *dev,
|
|||||||
* the TX csum insertionin the TDES and not use SF.
|
* the TX csum insertionin the TDES and not use SF.
|
||||||
*/
|
*/
|
||||||
if (priv->plat->bugged_jumbo && (dev->mtu > ETH_DATA_LEN))
|
if (priv->plat->bugged_jumbo && (dev->mtu > ETH_DATA_LEN))
|
||||||
features &= ~NETIF_F_ALL_CSUM;
|
features &= ~NETIF_F_CSUM_MASK;
|
||||||
|
|
||||||
return features;
|
return features;
|
||||||
}
|
}
|
||||||
|
@ -88,7 +88,7 @@ static struct lock_class_key ipvlan_netdev_xmit_lock_key;
|
|||||||
static struct lock_class_key ipvlan_netdev_addr_lock_key;
|
static struct lock_class_key ipvlan_netdev_addr_lock_key;
|
||||||
|
|
||||||
#define IPVLAN_FEATURES \
|
#define IPVLAN_FEATURES \
|
||||||
(NETIF_F_SG | NETIF_F_ALL_CSUM | NETIF_F_HIGHDMA | NETIF_F_FRAGLIST | \
|
(NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_HIGHDMA | NETIF_F_FRAGLIST | \
|
||||||
NETIF_F_GSO | NETIF_F_TSO | NETIF_F_UFO | NETIF_F_GSO_ROBUST | \
|
NETIF_F_GSO | NETIF_F_TSO | NETIF_F_UFO | NETIF_F_GSO_ROBUST | \
|
||||||
NETIF_F_TSO_ECN | NETIF_F_TSO6 | NETIF_F_GRO | NETIF_F_RXCSUM | \
|
NETIF_F_TSO_ECN | NETIF_F_TSO6 | NETIF_F_GRO | NETIF_F_RXCSUM | \
|
||||||
NETIF_F_HW_VLAN_CTAG_FILTER | NETIF_F_HW_VLAN_STAG_FILTER)
|
NETIF_F_HW_VLAN_CTAG_FILTER | NETIF_F_HW_VLAN_STAG_FILTER)
|
||||||
|
@ -762,7 +762,7 @@ static struct lock_class_key macvlan_netdev_addr_lock_key;
|
|||||||
NETIF_F_GSO_ROBUST)
|
NETIF_F_GSO_ROBUST)
|
||||||
|
|
||||||
#define MACVLAN_FEATURES \
|
#define MACVLAN_FEATURES \
|
||||||
(NETIF_F_SG | NETIF_F_ALL_CSUM | NETIF_F_HIGHDMA | NETIF_F_FRAGLIST | \
|
(NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_HIGHDMA | NETIF_F_FRAGLIST | \
|
||||||
NETIF_F_GSO | NETIF_F_TSO | NETIF_F_UFO | NETIF_F_LRO | \
|
NETIF_F_GSO | NETIF_F_TSO | NETIF_F_UFO | NETIF_F_LRO | \
|
||||||
NETIF_F_TSO_ECN | NETIF_F_TSO6 | NETIF_F_GRO | NETIF_F_RXCSUM | \
|
NETIF_F_TSO_ECN | NETIF_F_TSO6 | NETIF_F_GRO | NETIF_F_RXCSUM | \
|
||||||
NETIF_F_HW_VLAN_CTAG_FILTER | NETIF_F_HW_VLAN_STAG_FILTER)
|
NETIF_F_HW_VLAN_CTAG_FILTER | NETIF_F_HW_VLAN_STAG_FILTER)
|
||||||
|
@ -388,7 +388,7 @@ static rx_handler_result_t macvtap_handle_frame(struct sk_buff **pskb)
|
|||||||
* check, we either support them all or none.
|
* check, we either support them all or none.
|
||||||
*/
|
*/
|
||||||
if (skb->ip_summed == CHECKSUM_PARTIAL &&
|
if (skb->ip_summed == CHECKSUM_PARTIAL &&
|
||||||
!(features & NETIF_F_ALL_CSUM) &&
|
!(features & NETIF_F_CSUM_MASK) &&
|
||||||
skb_checksum_help(skb))
|
skb_checksum_help(skb))
|
||||||
goto drop;
|
goto drop;
|
||||||
skb_queue_tail(&q->sk.sk_receive_queue, skb);
|
skb_queue_tail(&q->sk.sk_receive_queue, skb);
|
||||||
|
@ -981,7 +981,7 @@ static void team_port_disable(struct team *team,
|
|||||||
team_lower_state_changed(port);
|
team_lower_state_changed(port);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define TEAM_VLAN_FEATURES (NETIF_F_ALL_CSUM | NETIF_F_SG | \
|
#define TEAM_VLAN_FEATURES (NETIF_F_HW_CSUM | NETIF_F_SG | \
|
||||||
NETIF_F_FRAGLIST | NETIF_F_ALL_TSO | \
|
NETIF_F_FRAGLIST | NETIF_F_ALL_TSO | \
|
||||||
NETIF_F_HIGHDMA | NETIF_F_LRO)
|
NETIF_F_HIGHDMA | NETIF_F_LRO)
|
||||||
|
|
||||||
@ -2091,7 +2091,6 @@ static void team_setup(struct net_device *dev)
|
|||||||
NETIF_F_HW_VLAN_CTAG_RX |
|
NETIF_F_HW_VLAN_CTAG_RX |
|
||||||
NETIF_F_HW_VLAN_CTAG_FILTER;
|
NETIF_F_HW_VLAN_CTAG_FILTER;
|
||||||
|
|
||||||
dev->hw_features &= ~(NETIF_F_ALL_CSUM & ~NETIF_F_HW_CSUM);
|
|
||||||
dev->features |= dev->hw_features;
|
dev->features |= dev->hw_features;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1986,7 +1986,7 @@ rtl8152_features_check(struct sk_buff *skb, struct net_device *dev,
|
|||||||
int offset = skb_transport_offset(skb);
|
int offset = skb_transport_offset(skb);
|
||||||
|
|
||||||
if ((mss || skb->ip_summed == CHECKSUM_PARTIAL) && offset > max_offset)
|
if ((mss || skb->ip_summed == CHECKSUM_PARTIAL) && offset > max_offset)
|
||||||
features &= ~(NETIF_F_ALL_CSUM | NETIF_F_GSO_MASK);
|
features &= ~(NETIF_F_CSUM_MASK | NETIF_F_GSO_MASK);
|
||||||
else if ((skb->len + sizeof(struct tx_desc)) > agg_buf_sz)
|
else if ((skb->len + sizeof(struct tx_desc)) > agg_buf_sz)
|
||||||
features &= ~NETIF_F_GSO_MASK;
|
features &= ~NETIF_F_GSO_MASK;
|
||||||
|
|
||||||
|
@ -69,7 +69,7 @@ ksocknal_lib_zc_capable(ksock_conn_t *conn)
|
|||||||
|
|
||||||
/* ZC if the socket supports scatter/gather and doesn't need software
|
/* ZC if the socket supports scatter/gather and doesn't need software
|
||||||
* checksums */
|
* checksums */
|
||||||
return ((caps & NETIF_F_SG) != 0 && (caps & NETIF_F_ALL_CSUM) != 0);
|
return ((caps & NETIF_F_SG) != 0 && (caps & NETIF_F_CSUM_MASK) != 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
@ -149,7 +149,12 @@ enum {
|
|||||||
#define NETIF_F_GEN_CSUM NETIF_F_HW_CSUM
|
#define NETIF_F_GEN_CSUM NETIF_F_HW_CSUM
|
||||||
#define NETIF_F_V4_CSUM (NETIF_F_GEN_CSUM | NETIF_F_IP_CSUM)
|
#define NETIF_F_V4_CSUM (NETIF_F_GEN_CSUM | NETIF_F_IP_CSUM)
|
||||||
#define NETIF_F_V6_CSUM (NETIF_F_GEN_CSUM | NETIF_F_IPV6_CSUM)
|
#define NETIF_F_V6_CSUM (NETIF_F_GEN_CSUM | NETIF_F_IPV6_CSUM)
|
||||||
#define NETIF_F_ALL_CSUM (NETIF_F_V4_CSUM | NETIF_F_V6_CSUM)
|
|
||||||
|
/* List of IP checksum features. Note that NETIF_HW_CSUM should not be
|
||||||
|
* set in features when NETIF_F_IP_CSUM or NETIF_F_IPV6_CSUM are set--
|
||||||
|
* this would be contradictory
|
||||||
|
*/
|
||||||
|
#define NETIF_F_CSUM_MASK (NETIF_F_V4_CSUM | NETIF_F_V6_CSUM)
|
||||||
|
|
||||||
#define NETIF_F_ALL_TSO (NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_TSO_ECN)
|
#define NETIF_F_ALL_TSO (NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_TSO_ECN)
|
||||||
|
|
||||||
|
@ -3763,12 +3763,12 @@ static inline netdev_features_t netdev_intersect_features(netdev_features_t f1,
|
|||||||
netdev_features_t f2)
|
netdev_features_t f2)
|
||||||
{
|
{
|
||||||
if (f1 & NETIF_F_GEN_CSUM)
|
if (f1 & NETIF_F_GEN_CSUM)
|
||||||
f1 |= (NETIF_F_ALL_CSUM & ~NETIF_F_GEN_CSUM);
|
f1 |= (NETIF_F_CSUM_MASK & ~NETIF_F_GEN_CSUM);
|
||||||
if (f2 & NETIF_F_GEN_CSUM)
|
if (f2 & NETIF_F_GEN_CSUM)
|
||||||
f2 |= (NETIF_F_ALL_CSUM & ~NETIF_F_GEN_CSUM);
|
f2 |= (NETIF_F_CSUM_MASK & ~NETIF_F_GEN_CSUM);
|
||||||
f1 &= f2;
|
f1 &= f2;
|
||||||
if (f1 & NETIF_F_GEN_CSUM)
|
if (f1 & NETIF_F_GEN_CSUM)
|
||||||
f1 &= ~(NETIF_F_ALL_CSUM & ~NETIF_F_GEN_CSUM);
|
f1 &= ~(NETIF_F_CSUM_MASK & ~NETIF_F_GEN_CSUM);
|
||||||
|
|
||||||
return f1;
|
return f1;
|
||||||
}
|
}
|
||||||
|
@ -232,7 +232,7 @@ static inline netdev_features_t vxlan_features_check(struct sk_buff *skb,
|
|||||||
skb->inner_protocol != htons(ETH_P_TEB) ||
|
skb->inner_protocol != htons(ETH_P_TEB) ||
|
||||||
(skb_inner_mac_header(skb) - skb_transport_header(skb) !=
|
(skb_inner_mac_header(skb) - skb_transport_header(skb) !=
|
||||||
sizeof(struct udphdr) + sizeof(struct vxlanhdr))))
|
sizeof(struct udphdr) + sizeof(struct vxlanhdr))))
|
||||||
return features & ~(NETIF_F_ALL_CSUM | NETIF_F_GSO_MASK);
|
return features & ~(NETIF_F_CSUM_MASK | NETIF_F_GSO_MASK);
|
||||||
|
|
||||||
return features;
|
return features;
|
||||||
}
|
}
|
||||||
|
@ -543,7 +543,7 @@ static int vlan_dev_init(struct net_device *dev)
|
|||||||
(1<<__LINK_STATE_DORMANT))) |
|
(1<<__LINK_STATE_DORMANT))) |
|
||||||
(1<<__LINK_STATE_PRESENT);
|
(1<<__LINK_STATE_PRESENT);
|
||||||
|
|
||||||
dev->hw_features = NETIF_F_ALL_CSUM | NETIF_F_SG |
|
dev->hw_features = NETIF_F_HW_CSUM | NETIF_F_SG |
|
||||||
NETIF_F_FRAGLIST | NETIF_F_GSO_SOFTWARE |
|
NETIF_F_FRAGLIST | NETIF_F_GSO_SOFTWARE |
|
||||||
NETIF_F_HIGHDMA | NETIF_F_SCTP_CRC |
|
NETIF_F_HIGHDMA | NETIF_F_SCTP_CRC |
|
||||||
NETIF_F_ALL_FCOE;
|
NETIF_F_ALL_FCOE;
|
||||||
|
@ -2645,7 +2645,7 @@ static netdev_features_t harmonize_features(struct sk_buff *skb,
|
|||||||
|
|
||||||
if (skb->ip_summed != CHECKSUM_NONE &&
|
if (skb->ip_summed != CHECKSUM_NONE &&
|
||||||
!can_checksum_protocol(features, type)) {
|
!can_checksum_protocol(features, type)) {
|
||||||
features &= ~NETIF_F_ALL_CSUM;
|
features &= ~NETIF_F_CSUM_MASK;
|
||||||
} else if (illegal_highdma(skb->dev, skb)) {
|
} else if (illegal_highdma(skb->dev, skb)) {
|
||||||
features &= ~NETIF_F_SG;
|
features &= ~NETIF_F_SG;
|
||||||
}
|
}
|
||||||
@ -2792,7 +2792,7 @@ static struct sk_buff *validate_xmit_skb(struct sk_buff *skb, struct net_device
|
|||||||
else
|
else
|
||||||
skb_set_transport_header(skb,
|
skb_set_transport_header(skb,
|
||||||
skb_checksum_start_offset(skb));
|
skb_checksum_start_offset(skb));
|
||||||
if (!(features & NETIF_F_ALL_CSUM) &&
|
if (!(features & NETIF_F_CSUM_MASK) &&
|
||||||
skb_checksum_help(skb))
|
skb_checksum_help(skb))
|
||||||
goto out_kfree_skb;
|
goto out_kfree_skb;
|
||||||
}
|
}
|
||||||
@ -7572,15 +7572,15 @@ netdev_features_t netdev_increment_features(netdev_features_t all,
|
|||||||
netdev_features_t one, netdev_features_t mask)
|
netdev_features_t one, netdev_features_t mask)
|
||||||
{
|
{
|
||||||
if (mask & NETIF_F_GEN_CSUM)
|
if (mask & NETIF_F_GEN_CSUM)
|
||||||
mask |= NETIF_F_ALL_CSUM;
|
mask |= NETIF_F_CSUM_MASK;
|
||||||
mask |= NETIF_F_VLAN_CHALLENGED;
|
mask |= NETIF_F_VLAN_CHALLENGED;
|
||||||
|
|
||||||
all |= one & (NETIF_F_ONE_FOR_ALL|NETIF_F_ALL_CSUM) & mask;
|
all |= one & (NETIF_F_ONE_FOR_ALL | NETIF_F_CSUM_MASK) & mask;
|
||||||
all &= one | ~NETIF_F_ALL_FOR_ALL;
|
all &= one | ~NETIF_F_ALL_FOR_ALL;
|
||||||
|
|
||||||
/* If one device supports hw checksumming, set for all. */
|
/* If one device supports hw checksumming, set for all. */
|
||||||
if (all & NETIF_F_GEN_CSUM)
|
if (all & NETIF_F_GEN_CSUM)
|
||||||
all &= ~(NETIF_F_ALL_CSUM & ~NETIF_F_GEN_CSUM);
|
all &= ~(NETIF_F_CSUM_MASK & ~NETIF_F_GEN_CSUM);
|
||||||
|
|
||||||
return all;
|
return all;
|
||||||
}
|
}
|
||||||
|
@ -235,7 +235,7 @@ static netdev_features_t ethtool_get_feature_mask(u32 eth_cmd)
|
|||||||
switch (eth_cmd) {
|
switch (eth_cmd) {
|
||||||
case ETHTOOL_GTXCSUM:
|
case ETHTOOL_GTXCSUM:
|
||||||
case ETHTOOL_STXCSUM:
|
case ETHTOOL_STXCSUM:
|
||||||
return NETIF_F_ALL_CSUM | NETIF_F_SCTP_CRC;
|
return NETIF_F_CSUM_MASK | NETIF_F_SCTP_CRC;
|
||||||
case ETHTOOL_GRXCSUM:
|
case ETHTOOL_GRXCSUM:
|
||||||
case ETHTOOL_SRXCSUM:
|
case ETHTOOL_SRXCSUM:
|
||||||
return NETIF_F_RXCSUM;
|
return NETIF_F_RXCSUM;
|
||||||
|
@ -1018,7 +1018,7 @@ int tcp_sendpage(struct sock *sk, struct page *page, int offset,
|
|||||||
ssize_t res;
|
ssize_t res;
|
||||||
|
|
||||||
if (!(sk->sk_route_caps & NETIF_F_SG) ||
|
if (!(sk->sk_route_caps & NETIF_F_SG) ||
|
||||||
!(sk->sk_route_caps & NETIF_F_ALL_CSUM))
|
!(sk->sk_route_caps & NETIF_F_CSUM_MASK))
|
||||||
return sock_no_sendpage(sk->sk_socket, page, offset, size,
|
return sock_no_sendpage(sk->sk_socket, page, offset, size,
|
||||||
flags);
|
flags);
|
||||||
|
|
||||||
@ -1175,7 +1175,7 @@ int tcp_sendmsg(struct sock *sk, struct msghdr *msg, size_t size)
|
|||||||
/*
|
/*
|
||||||
* Check whether we can use HW checksum.
|
* Check whether we can use HW checksum.
|
||||||
*/
|
*/
|
||||||
if (sk->sk_route_caps & NETIF_F_ALL_CSUM)
|
if (sk->sk_route_caps & NETIF_F_CSUM_MASK)
|
||||||
skb->ip_summed = CHECKSUM_PARTIAL;
|
skb->ip_summed = CHECKSUM_PARTIAL;
|
||||||
|
|
||||||
skb_entail(sk, skb);
|
skb_entail(sk, skb);
|
||||||
|
Loading…
Reference in New Issue
Block a user