Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9d367edd authored by David S. Miller's avatar David S. Miller
Browse files


Conflicts:
	drivers/net/bonding/bond_main.c
	drivers/net/ethernet/mellanox/mlxsw/spectrum.h
	drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c

The bond_main.c and mellanox switch conflicts were cases of
overlapping changes.

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents b6a0e72a 03d84a5f
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -37,7 +37,7 @@ MODULE_DESCRIPTION("ISDN4Linux: Driver for IBM Active 2000 ISDN card");
MODULE_AUTHOR("Fritz Elfert");
MODULE_AUTHOR("Fritz Elfert");
MODULE_LICENSE("GPL");
MODULE_LICENSE("GPL");
MODULE_PARM_DESC(act_bus, "BusType of first card, 1=ISA, 2=MCA, 3=PCMCIA, currently only ISA");
MODULE_PARM_DESC(act_bus, "BusType of first card, 1=ISA, 2=MCA, 3=PCMCIA, currently only ISA");
MODULE_PARM_DESC(membase, "Base port address of first card");
MODULE_PARM_DESC(act_port, "Base port address of first card");
MODULE_PARM_DESC(act_irq, "IRQ of first card");
MODULE_PARM_DESC(act_irq, "IRQ of first card");
MODULE_PARM_DESC(act_id, "ID-String of first card");
MODULE_PARM_DESC(act_id, "ID-String of first card");
module_param(act_bus, int, 0);
module_param(act_bus, int, 0);
+4 −1
Original line number Original line Diff line number Diff line
@@ -1226,7 +1226,6 @@ static int bond_master_upper_dev_link(struct bonding *bond, struct slave *slave)
					   &lag_upper_info);
					   &lag_upper_info);
	if (err)
	if (err)
		return err;
		return err;
	slave->dev->flags |= IFF_SLAVE;
	rtmsg_ifinfo(RTM_NEWLINK, slave->dev, IFF_SLAVE, GFP_KERNEL);
	rtmsg_ifinfo(RTM_NEWLINK, slave->dev, IFF_SLAVE, GFP_KERNEL);
	return 0;
	return 0;
}
}
@@ -1493,6 +1492,9 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)
		}
		}
	}
	}


	/* set slave flag before open to prevent IPv6 addrconf */
	slave_dev->flags |= IFF_SLAVE;

	/* open the slave since the application closed it */
	/* open the slave since the application closed it */
	res = dev_open(slave_dev);
	res = dev_open(slave_dev);
	if (res) {
	if (res) {
@@ -1758,6 +1760,7 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)
	dev_close(slave_dev);
	dev_close(slave_dev);


err_restore_mac:
err_restore_mac:
	slave_dev->flags &= ~IFF_SLAVE;
	if (!bond->params.fail_over_mac ||
	if (!bond->params.fail_over_mac ||
	    BOND_MODE(bond) != BOND_MODE_ACTIVEBACKUP) {
	    BOND_MODE(bond) != BOND_MODE_ACTIVEBACKUP) {
		/* XXX TODO - fom follow mode needs to change master's
		/* XXX TODO - fom follow mode needs to change master's
+1 −0
Original line number Original line Diff line number Diff line
@@ -120,6 +120,7 @@ struct mlxsw_sp {
	} fdb_notify;
	} fdb_notify;
#define MLXSW_SP_DEFAULT_AGEING_TIME 300
#define MLXSW_SP_DEFAULT_AGEING_TIME 300
	u32 ageing_time;
	u32 ageing_time;
	struct mutex fdb_lock;	/* Make sure FDB sessions are atomic. */
	struct mlxsw_sp_upper master_bridge;
	struct mlxsw_sp_upper master_bridge;
	struct mlxsw_sp_upper lags[MLXSW_SP_LAG_MAX];
	struct mlxsw_sp_upper lags[MLXSW_SP_LAG_MAX];
};
};
+5 −0
Original line number Original line Diff line number Diff line
@@ -1057,6 +1057,7 @@ static int mlxsw_sp_port_fdb_dump(struct mlxsw_sp_port *mlxsw_sp_port,
	if (!sfd_pl)
	if (!sfd_pl)
		return -ENOMEM;
		return -ENOMEM;


	mutex_lock(&mlxsw_sp_port->mlxsw_sp->fdb_lock);
	if (mlxsw_sp_port_is_vport(mlxsw_sp_port)) {
	if (mlxsw_sp_port_is_vport(mlxsw_sp_port)) {
		u16 tmp;
		u16 tmp;


@@ -1122,6 +1123,7 @@ static int mlxsw_sp_port_fdb_dump(struct mlxsw_sp_port *mlxsw_sp_port,
	} while (num_rec == MLXSW_REG_SFD_REC_MAX_COUNT);
	} while (num_rec == MLXSW_REG_SFD_REC_MAX_COUNT);


out:
out:
	mutex_unlock(&mlxsw_sp_port->mlxsw_sp->fdb_lock);
	kfree(sfd_pl);
	kfree(sfd_pl);
	return stored_err ? stored_err : err;
	return stored_err ? stored_err : err;
}
}
@@ -1371,6 +1373,7 @@ static void mlxsw_sp_fdb_notify_work(struct work_struct *work)


	mlxsw_sp = container_of(work, struct mlxsw_sp, fdb_notify.dw.work);
	mlxsw_sp = container_of(work, struct mlxsw_sp, fdb_notify.dw.work);


	mutex_lock(&mlxsw_sp->fdb_lock);
	do {
	do {
		mlxsw_reg_sfn_pack(sfn_pl);
		mlxsw_reg_sfn_pack(sfn_pl);
		err = mlxsw_reg_query(mlxsw_sp->core, MLXSW_REG(sfn), sfn_pl);
		err = mlxsw_reg_query(mlxsw_sp->core, MLXSW_REG(sfn), sfn_pl);
@@ -1383,6 +1386,7 @@ static void mlxsw_sp_fdb_notify_work(struct work_struct *work)
			mlxsw_sp_fdb_notify_rec_process(mlxsw_sp, sfn_pl, i);
			mlxsw_sp_fdb_notify_rec_process(mlxsw_sp, sfn_pl, i);


	} while (num_rec);
	} while (num_rec);
	mutex_unlock(&mlxsw_sp->fdb_lock);


	kfree(sfn_pl);
	kfree(sfn_pl);
	mlxsw_sp_fdb_notify_work_schedule(mlxsw_sp);
	mlxsw_sp_fdb_notify_work_schedule(mlxsw_sp);
@@ -1397,6 +1401,7 @@ static int mlxsw_sp_fdb_init(struct mlxsw_sp *mlxsw_sp)
		dev_err(mlxsw_sp->bus_info->dev, "Failed to set default ageing time\n");
		dev_err(mlxsw_sp->bus_info->dev, "Failed to set default ageing time\n");
		return err;
		return err;
	}
	}
	mutex_init(&mlxsw_sp->fdb_lock);
	INIT_DELAYED_WORK(&mlxsw_sp->fdb_notify.dw, mlxsw_sp_fdb_notify_work);
	INIT_DELAYED_WORK(&mlxsw_sp->fdb_notify.dw, mlxsw_sp_fdb_notify_work);
	mlxsw_sp->fdb_notify.interval = MLXSW_SP_DEFAULT_LEARNING_INTERVAL;
	mlxsw_sp->fdb_notify.interval = MLXSW_SP_DEFAULT_LEARNING_INTERVAL;
	mlxsw_sp_fdb_notify_work_schedule(mlxsw_sp);
	mlxsw_sp_fdb_notify_work_schedule(mlxsw_sp);
+2 −5
Original line number Original line Diff line number Diff line
@@ -343,16 +343,13 @@ static int ravb_ring_init(struct net_device *ndev, int q)
static void ravb_emac_init(struct net_device *ndev)
static void ravb_emac_init(struct net_device *ndev)
{
{
	struct ravb_private *priv = netdev_priv(ndev);
	struct ravb_private *priv = netdev_priv(ndev);
	u32 ecmr;


	/* Receive frame limit set register */
	/* Receive frame limit set register */
	ravb_write(ndev, ndev->mtu + ETH_HLEN + VLAN_HLEN + ETH_FCS_LEN, RFLR);
	ravb_write(ndev, ndev->mtu + ETH_HLEN + VLAN_HLEN + ETH_FCS_LEN, RFLR);


	/* PAUSE prohibition */
	/* PAUSE prohibition */
	ecmr =  ravb_read(ndev, ECMR);
	ravb_write(ndev, ECMR_ZPF | (priv->duplex ? ECMR_DM : 0) |
	ecmr &= ECMR_DM;
		   ECMR_TE | ECMR_RE, ECMR);
	ecmr |= ECMR_ZPF | (priv->duplex ? ECMR_DM : 0) | ECMR_TE | ECMR_RE;
	ravb_write(ndev, ecmr, ECMR);


	ravb_set_rate(ndev);
	ravb_set_rate(ndev);


Loading