Hi all, On Tue, 3 Apr 2018 13:14:54 +1000 Stephen Rothwell wrote: > > Today's linux-next merge of the net-next tree got a conflict in: > > drivers/net/ethernet/mellanox/mlx5/core/en_main.c > > between commit: > > 2907938d2375 ("net/mlx5e: Use pcie_bandwidth_available() to compute bandwidth") > > from the pci tree and commit: > > 0608d4dbaf4e ("net/mlx5e: Unify slow PCI heuristic") > > from the net-next tree. > > I fixed it up (see below) and can carry the fix as necessary. This > is now fixed as far as linux-next is concerned, but any non trivial > conflicts should be mentioned to your upstream maintainer when your tree > is submitted for merging. You may also want to consider cooperating > with the maintainer of the conflicting tree to minimise any particularly > complex conflicts. > > -- > Cheers, > Stephen Rothwell > > diff --cc drivers/net/ethernet/mellanox/mlx5/core/en_main.c > index 884337f88589,0aab3afc6885..000000000000 > --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c > +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c > @@@ -3880,16 -4026,50 +4033,20 @@@ void mlx5e_build_default_indir_rqt(u32 > indirection_rqt[i] = i % num_channels; > } > > - static bool cqe_compress_heuristic(u32 link_speed, u32 pci_bw) > -static int mlx5e_get_pci_bw(struct mlx5_core_dev *mdev, u32 *pci_bw) > -{ > - enum pcie_link_width width; > - enum pci_bus_speed speed; > - int err = 0; > - > - err = pcie_get_minimum_link(mdev->pdev, &speed, &width); > - if (err) > - return err; > - > - if (speed == PCI_SPEED_UNKNOWN || width == PCIE_LNK_WIDTH_UNKNOWN) > - return -EINVAL; > - > - switch (speed) { > - case PCIE_SPEED_2_5GT: > - *pci_bw = 2500 * width; > - break; > - case PCIE_SPEED_5_0GT: > - *pci_bw = 5000 * width; > - break; > - case PCIE_SPEED_8_0GT: > - *pci_bw = 8000 * width; > - break; > - default: > - return -EINVAL; > - } > - > - return 0; > -} > - > + static bool slow_pci_heuristic(struct mlx5_core_dev *mdev) > { > - return (link_speed && pci_bw && > - (pci_bw < 40000) && (pci_bw < link_speed)); > - } > + u32 link_speed = 0; > + u32 pci_bw = 0; > > - static bool hw_lro_heuristic(u32 link_speed, u32 pci_bw) > - { > - return !(link_speed && pci_bw && > - (pci_bw <= 16000) && (pci_bw < link_speed)); > + mlx5e_get_max_linkspeed(mdev, &link_speed); > - mlx5e_get_pci_bw(mdev, &pci_bw); > ++ pci_bw = pcie_bandwidth_available(mdev->pdev, NULL, NULL, NULL); > + mlx5_core_dbg_once(mdev, "Max link speed = %d, PCI BW = %d\n", > + link_speed, pci_bw); > + > + #define MLX5E_SLOW_PCI_RATIO (2) > + > + return link_speed && pci_bw && > + link_speed > MLX5E_SLOW_PCI_RATIO * pci_bw; > } > > void mlx5e_set_tx_cq_mode_params(struct mlx5e_params *params, u8 cq_period_mode) This is now a conflict between the pci tree and Linus' tree. -- Cheers, Stephen Rothwell