mlx5-fixes-2019-08-15
-----BEGIN PGP SIGNATURE----- iQEzBAABCAAdFiEEGhZs6bAKwk/OTgTpSD+KveBX+j4FAl1Vp+0ACgkQSD+KveBX +j76RwgAxYKiyXsvOvXTpRC1VrmOcrPw4Nr+UjL7CCKbY6f66rdFHdK5SuVphpEV zwsTyD5mMvYCD5+6oAAA2p9x65d7n6mrDvkGjBZ8RzSmAeavchOz0iHwBrc98IDF iPOeoCLcaLRTf1O+J4NHJwx1DgnLkImyNqIfe5Ce0oGoYoA7UeDXvzLQfXBAV8+b MPZcKv3U+++zg2QIX2d8L0h+5k1yO0PhqBX1uzHVmEMN3B7ZB7bm4oXryfXQIJIF +oylg9WjEc81CCEVFUAMrVZikfLWO4Qx/aHuBeYcn06n5Jdf2aUkh3SgW9YCk4KT DEExmv9RdYTkEymnltjEfklrMbUZWA== =bFyv -----END PGP SIGNATURE----- Merge tag 'mlx5-fixes-2019-08-15' of git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux Saeed Mahameed says: ==================== Mellanox, mlx5 fixes 2019-08-15 This series introduces two fixes to mlx5 driver. 1) Eran fixes a compatibility issue with ethtool flash. 2) Maxim fixes a race in XSK wakeup flow. Please pull and let me know if there is any problem. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
0b24a44176
|
@ -1105,6 +1105,8 @@ u32 mlx5e_ethtool_get_rxfh_key_size(struct mlx5e_priv *priv);
|
|||
u32 mlx5e_ethtool_get_rxfh_indir_size(struct mlx5e_priv *priv);
|
||||
int mlx5e_ethtool_get_ts_info(struct mlx5e_priv *priv,
|
||||
struct ethtool_ts_info *info);
|
||||
int mlx5e_ethtool_flash_device(struct mlx5e_priv *priv,
|
||||
struct ethtool_flash *flash);
|
||||
void mlx5e_ethtool_get_pauseparam(struct mlx5e_priv *priv,
|
||||
struct ethtool_pauseparam *pauseparam);
|
||||
int mlx5e_ethtool_set_pauseparam(struct mlx5e_priv *priv,
|
||||
|
|
|
@ -143,7 +143,10 @@ void mlx5e_activate_xsk(struct mlx5e_channel *c)
|
|||
{
|
||||
set_bit(MLX5E_RQ_STATE_ENABLED, &c->xskrq.state);
|
||||
/* TX queue is created active. */
|
||||
|
||||
spin_lock(&c->xskicosq_lock);
|
||||
mlx5e_trigger_irq(&c->xskicosq);
|
||||
spin_unlock(&c->xskicosq_lock);
|
||||
}
|
||||
|
||||
void mlx5e_deactivate_xsk(struct mlx5e_channel *c)
|
||||
|
|
|
@ -1690,6 +1690,40 @@ static int mlx5e_get_module_eeprom(struct net_device *netdev,
|
|||
return 0;
|
||||
}
|
||||
|
||||
int mlx5e_ethtool_flash_device(struct mlx5e_priv *priv,
|
||||
struct ethtool_flash *flash)
|
||||
{
|
||||
struct mlx5_core_dev *mdev = priv->mdev;
|
||||
struct net_device *dev = priv->netdev;
|
||||
const struct firmware *fw;
|
||||
int err;
|
||||
|
||||
if (flash->region != ETHTOOL_FLASH_ALL_REGIONS)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
err = request_firmware_direct(&fw, flash->data, &dev->dev);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
dev_hold(dev);
|
||||
rtnl_unlock();
|
||||
|
||||
err = mlx5_firmware_flash(mdev, fw, NULL);
|
||||
release_firmware(fw);
|
||||
|
||||
rtnl_lock();
|
||||
dev_put(dev);
|
||||
return err;
|
||||
}
|
||||
|
||||
static int mlx5e_flash_device(struct net_device *dev,
|
||||
struct ethtool_flash *flash)
|
||||
{
|
||||
struct mlx5e_priv *priv = netdev_priv(dev);
|
||||
|
||||
return mlx5e_ethtool_flash_device(priv, flash);
|
||||
}
|
||||
|
||||
static int set_pflag_cqe_based_moder(struct net_device *netdev, bool enable,
|
||||
bool is_rx_cq)
|
||||
{
|
||||
|
@ -1972,6 +2006,7 @@ const struct ethtool_ops mlx5e_ethtool_ops = {
|
|||
.set_wol = mlx5e_set_wol,
|
||||
.get_module_info = mlx5e_get_module_info,
|
||||
.get_module_eeprom = mlx5e_get_module_eeprom,
|
||||
.flash_device = mlx5e_flash_device,
|
||||
.get_priv_flags = mlx5e_get_priv_flags,
|
||||
.set_priv_flags = mlx5e_set_priv_flags,
|
||||
.self_test = mlx5e_self_test,
|
||||
|
|
|
@ -122,6 +122,14 @@ static int mlx5i_get_ts_info(struct net_device *netdev,
|
|||
return mlx5e_ethtool_get_ts_info(priv, info);
|
||||
}
|
||||
|
||||
static int mlx5i_flash_device(struct net_device *netdev,
|
||||
struct ethtool_flash *flash)
|
||||
{
|
||||
struct mlx5e_priv *priv = mlx5i_epriv(netdev);
|
||||
|
||||
return mlx5e_ethtool_flash_device(priv, flash);
|
||||
}
|
||||
|
||||
enum mlx5_ptys_width {
|
||||
MLX5_PTYS_WIDTH_1X = 1 << 0,
|
||||
MLX5_PTYS_WIDTH_2X = 1 << 1,
|
||||
|
@ -233,6 +241,7 @@ const struct ethtool_ops mlx5i_ethtool_ops = {
|
|||
.get_ethtool_stats = mlx5i_get_ethtool_stats,
|
||||
.get_ringparam = mlx5i_get_ringparam,
|
||||
.set_ringparam = mlx5i_set_ringparam,
|
||||
.flash_device = mlx5i_flash_device,
|
||||
.get_channels = mlx5i_get_channels,
|
||||
.set_channels = mlx5i_set_channels,
|
||||
.get_coalesce = mlx5i_get_coalesce,
|
||||
|
|
Loading…
Reference in New Issue