Commit 4b66d216 authored by Eric Dumazet's avatar Eric Dumazet Committed by David S. Miller
Browse files

net: annotate accesses to dev->gso_max_size



dev->gso_max_size is written under RTNL protection, or when the device is
not yet visible, but is read locklessly.

Add the READ_ONCE()/WRITE_ONCE() pairs, and use netif_set_gso_max_size()
where we can to better document what is going on.

Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 8e2a2f90
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -286,7 +286,7 @@ nfp_repr_transfer_features(struct net_device *netdev, struct net_device *lower)
	if (repr->dst->u.port_info.lower_dev != lower)
		return;

	netdev->gso_max_size = lower->gso_max_size;
	netif_set_gso_max_size(netdev, lower->gso_max_size);
	netdev->gso_max_segs = lower->gso_max_segs;

	netdev_update_features(netdev);
+2 −2
Original line number Diff line number Diff line
@@ -5390,11 +5390,11 @@ static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
	 */
	if (rtl_chip_supports_csum_v2(tp)) {
		dev->hw_features |= NETIF_F_SG | NETIF_F_TSO | NETIF_F_TSO6;
		dev->gso_max_size = RTL_GSO_MAX_SIZE_V2;
		netif_set_gso_max_size(dev, RTL_GSO_MAX_SIZE_V2);
		dev->gso_max_segs = RTL_GSO_MAX_SEGS_V2;
	} else {
		dev->hw_features |= NETIF_F_SG | NETIF_F_TSO;
		dev->gso_max_size = RTL_GSO_MAX_SIZE_V1;
		netif_set_gso_max_size(dev, RTL_GSO_MAX_SIZE_V1);
		dev->gso_max_segs = RTL_GSO_MAX_SEGS_V1;
	}

+1 −1
Original line number Diff line number Diff line
@@ -993,7 +993,7 @@ static int ef100_process_design_param(struct efx_nic *efx,
		return 0;
	case ESE_EF100_DP_GZ_TSO_MAX_PAYLOAD_LEN:
		nic_data->tso_max_payload_len = min_t(u64, reader->value, GSO_MAX_SIZE);
		efx->net_dev->gso_max_size = nic_data->tso_max_payload_len;
		netif_set_gso_max_size(efx->net_dev, nic_data->tso_max_payload_len);
		return 0;
	case ESE_EF100_DP_GZ_TSO_MAX_PAYLOAD_NUM_SEGS:
		nic_data->tso_max_payload_num_segs = min_t(u64, reader->value, 0xffff);
+2 −2
Original line number Diff line number Diff line
@@ -140,7 +140,7 @@ static int ipvlan_init(struct net_device *dev)
	dev->vlan_features = phy_dev->vlan_features & IPVLAN_FEATURES;
	dev->vlan_features |= IPVLAN_ALWAYS_ON_OFLOADS;
	dev->hw_enc_features |= dev->features;
	dev->gso_max_size = phy_dev->gso_max_size;
	netif_set_gso_max_size(dev, phy_dev->gso_max_size);
	dev->gso_max_segs = phy_dev->gso_max_segs;
	dev->hard_header_len = phy_dev->hard_header_len;

@@ -763,7 +763,7 @@ static int ipvlan_device_event(struct notifier_block *unused,

	case NETDEV_FEAT_CHANGE:
		list_for_each_entry(ipvlan, &port->ipvlans, pnode) {
			ipvlan->dev->gso_max_size = dev->gso_max_size;
			netif_set_gso_max_size(ipvlan->dev, dev->gso_max_size);
			ipvlan->dev->gso_max_segs = dev->gso_max_segs;
			netdev_update_features(ipvlan->dev);
		}
+2 −2
Original line number Diff line number Diff line
@@ -900,7 +900,7 @@ static int macvlan_init(struct net_device *dev)
	dev->vlan_features	= lowerdev->vlan_features & MACVLAN_FEATURES;
	dev->vlan_features	|= ALWAYS_ON_OFFLOADS;
	dev->hw_enc_features    |= dev->features;
	dev->gso_max_size	= lowerdev->gso_max_size;
	netif_set_gso_max_size(dev, lowerdev->gso_max_size);
	dev->gso_max_segs	= lowerdev->gso_max_segs;
	dev->hard_header_len	= lowerdev->hard_header_len;
	macvlan_set_lockdep_class(dev);
@@ -1748,7 +1748,7 @@ static int macvlan_device_event(struct notifier_block *unused,
		break;
	case NETDEV_FEAT_CHANGE:
		list_for_each_entry(vlan, &port->vlans, list) {
			vlan->dev->gso_max_size = dev->gso_max_size;
			netif_set_gso_max_size(vlan->dev, dev->gso_max_size);
			vlan->dev->gso_max_segs = dev->gso_max_segs;
			netdev_update_features(vlan->dev);
		}
Loading