Commit ec05b1a7 authored by popcornmix's avatar popcornmix
Browse files

Merge remote-tracking branch 'stable/linux-4.14.y' into rpi-4.14.y

parents 82c4c8e6 d88700f7
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0
VERSION = 4
PATCHLEVEL = 14
SUBLEVEL = 41
SUBLEVEL = 42
EXTRAVERSION =
NAME = Petit Gorille

+9 −6
Original line number Diff line number Diff line
@@ -450,7 +450,7 @@ static void rlb_update_client(struct rlb_client_info *client_info)
{
	int i;

	if (!client_info->slave)
	if (!client_info->slave || !is_valid_ether_addr(client_info->mac_dst))
		return;

	for (i = 0; i < RLB_ARP_BURST_SIZE; i++) {
@@ -943,6 +943,10 @@ static void alb_send_lp_vid(struct slave *slave, u8 mac_addr[],
	skb->priority = TC_PRIO_CONTROL;
	skb->dev = slave->dev;

	netdev_dbg(slave->bond->dev,
		   "Send learning packet: dev %s mac %pM vlan %d\n",
		   slave->dev->name, mac_addr, vid);

	if (vid)
		__vlan_hwaccel_put_tag(skb, vlan_proto, vid);

@@ -965,14 +969,13 @@ static int alb_upper_dev_walk(struct net_device *upper, void *_data)
	u8 *mac_addr = data->mac_addr;
	struct bond_vlan_tag *tags;

	if (is_vlan_dev(upper) && vlan_get_encap_level(upper) == 0) {
		if (strict_match &&
		    ether_addr_equal_64bits(mac_addr,
					    upper->dev_addr)) {
	if (is_vlan_dev(upper) &&
	    bond->nest_level == vlan_get_encap_level(upper) - 1) {
		if (upper->addr_assign_type == NET_ADDR_STOLEN) {
			alb_send_lp_vid(slave, mac_addr,
					vlan_dev_vlan_proto(upper),
					vlan_dev_vlan_id(upper));
		} else if (!strict_match) {
		} else {
			alb_send_lp_vid(slave, upper->dev_addr,
					vlan_dev_vlan_proto(upper),
					vlan_dev_vlan_id(upper));
+2 −0
Original line number Diff line number Diff line
@@ -1734,6 +1734,8 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)
	if (bond_mode_uses_xmit_hash(bond))
		bond_update_slave_arr(bond, NULL);

	bond->nest_level = dev_get_nest_level(bond_dev);

	netdev_info(bond_dev, "Enslaving %s as %s interface with %s link\n",
		    slave_dev->name,
		    bond_is_active_slave(new_slave) ? "an active" : "a backup",
+5 −4
Original line number Diff line number Diff line
@@ -8723,14 +8723,15 @@ static void tg3_free_consistent(struct tg3 *tp)
	tg3_mem_rx_release(tp);
	tg3_mem_tx_release(tp);

	/* Protect tg3_get_stats64() from reading freed tp->hw_stats. */
	tg3_full_lock(tp, 0);
	/* tp->hw_stats can be referenced safely:
	 *     1. under rtnl_lock
	 *     2. or under tp->lock if TG3_FLAG_INIT_COMPLETE is set.
	 */
	if (tp->hw_stats) {
		dma_free_coherent(&tp->pdev->dev, sizeof(struct tg3_hw_stats),
				  tp->hw_stats, tp->stats_mapping);
		tp->hw_stats = NULL;
	}
	tg3_full_unlock(tp);
}

/*
@@ -14167,7 +14168,7 @@ static void tg3_get_stats64(struct net_device *dev,
	struct tg3 *tp = netdev_priv(dev);

	spin_lock_bh(&tp->lock);
	if (!tp->hw_stats) {
	if (!tp->hw_stats || !tg3_flag(tp, INIT_COMPLETE)) {
		*stats = tp->net_stats_prev;
		spin_unlock_bh(&tp->lock);
		return;
+16 −0
Original line number Diff line number Diff line
@@ -1013,6 +1013,22 @@ static int mlx4_en_set_coalesce(struct net_device *dev,
	if (!coal->tx_max_coalesced_frames_irq)
		return -EINVAL;

	if (coal->tx_coalesce_usecs > MLX4_EN_MAX_COAL_TIME ||
	    coal->rx_coalesce_usecs > MLX4_EN_MAX_COAL_TIME ||
	    coal->rx_coalesce_usecs_low > MLX4_EN_MAX_COAL_TIME ||
	    coal->rx_coalesce_usecs_high > MLX4_EN_MAX_COAL_TIME) {
		netdev_info(dev, "%s: maximum coalesce time supported is %d usecs\n",
			    __func__, MLX4_EN_MAX_COAL_TIME);
		return -ERANGE;
	}

	if (coal->tx_max_coalesced_frames > MLX4_EN_MAX_COAL_PKTS ||
	    coal->rx_max_coalesced_frames > MLX4_EN_MAX_COAL_PKTS) {
		netdev_info(dev, "%s: maximum coalesced frames supported is %d\n",
			    __func__, MLX4_EN_MAX_COAL_PKTS);
		return -ERANGE;
	}

	priv->rx_frames = (coal->rx_max_coalesced_frames ==
			   MLX4_EN_AUTO_CONF) ?
				MLX4_EN_RX_COAL_TARGET :
Loading