Re: linux-next: manual merge of the net-next tree with the pci tree
Hi all, On Tue, 3 Apr 2018 13:14:54 +1000 Stephen Rothwellwrote: > > 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.. > --- 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, , ); > -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 < 4) && (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, _speed); > -mlx5e_get_pci_bw(mdev, _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 pgpWGHhkC1zBc.pgp Description: OpenPGP digital signature
linux-next: manual merge of the net-next tree with the pci tree
Hi all, 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.. --- 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, , ); - 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 < 4) && (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, _speed); - mlx5e_get_pci_bw(mdev, _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) pgpHbGrm02dE5.pgp Description: OpenPGP digital signature
Re: linux-next: manual merge of the net-next tree with the pci tree
Hi all, With the merge window opening, just a reminder that this conflict still exists. On Wed, 21 Jun 2017 11:54:43 +1000 Stephen Rothwellwrote: > > Today's linux-next merge of the net-next tree got a conflict in: > > drivers/net/wireless/marvell/mwifiex/pcie.c > > between commit: > > c336cc0ee4eb ("PCI: Split ->reset_notify() method into ->reset_prepare() > and ->reset_done()") > > from the pci tree and commit: > > 68efd0386988 ("mwifiex: pcie: stop setting/clearing 'surprise_removed'") > > 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/wireless/marvell/mwifiex/pcie.c > index 279adf124fc9,b53ecf1eddda.. > --- a/drivers/net/wireless/marvell/mwifiex/pcie.c > +++ b/drivers/net/wireless/marvell/mwifiex/pcie.c > @@@ -361,48 -359,35 +361,46 @@@ static void mwifiex_pcie_reset_prepare( > } > > mwifiex_dbg(adapter, INFO, > -"%s: vendor=0x%4.04x device=0x%4.04x rev=%d %s\n", > -__func__, pdev->vendor, pdev->device, > -pdev->revision, > -prepare ? "Pre-FLR" : "Post-FLR"); > - > -if (prepare) { > -/* Kernel would be performing FLR after this notification. > - * Cleanup all software without cleaning anything related to > - * PCIe and HW. > - */ > -mwifiex_shutdown_sw(adapter); > -clear_bit(MWIFIEX_IFACE_WORK_DEVICE_DUMP, >work_flags); > -clear_bit(MWIFIEX_IFACE_WORK_CARD_RESET, >work_flags); > -} else { > -/* Kernel stores and restores PCIe function context before and > - * after performing FLR respectively. Reconfigure the software > - * and firmware including firmware redownload > - */ > -ret = mwifiex_reinit_sw(adapter); > -if (ret) { > -dev_err(>dev, "reinit failed: %d\n", ret); > -return; > -} > -} > +"%s: vendor=0x%4.04x device=0x%4.04x rev=%d Pre-FLR\n", > +__func__, pdev->vendor, pdev->device, pdev->revision); > + > +mwifiex_shutdown_sw(adapter); > - adapter->surprise_removed = true; > +clear_bit(MWIFIEX_IFACE_WORK_DEVICE_DUMP, >work_flags); > +clear_bit(MWIFIEX_IFACE_WORK_CARD_RESET, >work_flags); > mwifiex_dbg(adapter, INFO, "%s, successful\n", __func__); > } > > -static const struct pci_error_handlers mwifiex_pcie_err_handler[] = { > -{ .reset_notify = mwifiex_pcie_reset_notify, }, > +/* > + * Kernel stores and restores PCIe function context before and after > performing > + * FLR respectively. Reconfigure the software and firmware including > firmware > + * redownload. > + */ > +static void mwifiex_pcie_reset_done(struct pci_dev *pdev) > +{ > +struct pcie_service_card *card = pci_get_drvdata(pdev); > +struct mwifiex_adapter *adapter = card->adapter; > +int ret; > + > +if (!adapter) { > +dev_err(>dev, "%s: adapter structure is not valid\n", > +__func__); > +return; > +} > + > +mwifiex_dbg(adapter, INFO, > +"%s: vendor=0x%4.04x device=0x%4.04x rev=%d Post-FLR\n", > +__func__, pdev->vendor, pdev->device, pdev->revision); > + > - adapter->surprise_removed = false; > +ret = mwifiex_reinit_sw(adapter); > +if (ret) > +dev_err(>dev, "reinit failed: %d\n", ret); > +else > +mwifiex_dbg(adapter, INFO, "%s, successful\n", __func__); > +} > + > +static const struct pci_error_handlers mwifiex_pcie_err_handler = { > +.reset_prepare = mwifiex_pcie_reset_prepare, > +.reset_done = mwifiex_pcie_reset_done, > }; > > #ifdef CONFIG_PM_SLEEP -- Cheers, Stephen Rothwell
Re: linux-next: manual merge of the net-next tree with the pci tree
Hi Kalle, On Wed, 21 Jun 2017 16:29:29 +0300 Kalle Valowrote: > > Thanks, the fix looks good to me. I guess there's nothing I can do at > the moment and Linus needs to fix this when he pulls from Dave (or > Bjorn, whichever is the last)? Right. -- Cheers, Stephen Rothwell
Re: linux-next: manual merge of the net-next tree with the pci tree
Stephen Rothwellwrites: > Today's linux-next merge of the net-next tree got a conflict in: > > drivers/net/wireless/marvell/mwifiex/pcie.c > > between commit: > > c336cc0ee4eb ("PCI: Split ->reset_notify() method into > ->reset_prepare() and ->reset_done()") > > from the pci tree and commit: > > 68efd0386988 ("mwifiex: pcie: stop setting/clearing 'surprise_removed'") > > from the net-next tree. > > I fixed it up (see below) and can carry the fix as necessary. Thanks, the fix looks good to me. I guess there's nothing I can do at the moment and Linus needs to fix this when he pulls from Dave (or Bjorn, whichever is the last)? -- Kalle Valo
linux-next: manual merge of the net-next tree with the pci tree
Hi all, Today's linux-next merge of the net-next tree got a conflict in: drivers/net/wireless/marvell/mwifiex/pcie.c between commit: c336cc0ee4eb ("PCI: Split ->reset_notify() method into ->reset_prepare() and ->reset_done()") from the pci tree and commit: 68efd0386988 ("mwifiex: pcie: stop setting/clearing 'surprise_removed'") 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/wireless/marvell/mwifiex/pcie.c index 279adf124fc9,b53ecf1eddda.. --- a/drivers/net/wireless/marvell/mwifiex/pcie.c +++ b/drivers/net/wireless/marvell/mwifiex/pcie.c @@@ -361,48 -359,35 +361,46 @@@ static void mwifiex_pcie_reset_prepare( } mwifiex_dbg(adapter, INFO, - "%s: vendor=0x%4.04x device=0x%4.04x rev=%d %s\n", - __func__, pdev->vendor, pdev->device, - pdev->revision, - prepare ? "Pre-FLR" : "Post-FLR"); - - if (prepare) { - /* Kernel would be performing FLR after this notification. - * Cleanup all software without cleaning anything related to - * PCIe and HW. - */ - mwifiex_shutdown_sw(adapter); - clear_bit(MWIFIEX_IFACE_WORK_DEVICE_DUMP, >work_flags); - clear_bit(MWIFIEX_IFACE_WORK_CARD_RESET, >work_flags); - } else { - /* Kernel stores and restores PCIe function context before and - * after performing FLR respectively. Reconfigure the software - * and firmware including firmware redownload - */ - ret = mwifiex_reinit_sw(adapter); - if (ret) { - dev_err(>dev, "reinit failed: %d\n", ret); - return; - } - } + "%s: vendor=0x%4.04x device=0x%4.04x rev=%d Pre-FLR\n", + __func__, pdev->vendor, pdev->device, pdev->revision); + + mwifiex_shutdown_sw(adapter); - adapter->surprise_removed = true; + clear_bit(MWIFIEX_IFACE_WORK_DEVICE_DUMP, >work_flags); + clear_bit(MWIFIEX_IFACE_WORK_CARD_RESET, >work_flags); mwifiex_dbg(adapter, INFO, "%s, successful\n", __func__); } -static const struct pci_error_handlers mwifiex_pcie_err_handler[] = { - { .reset_notify = mwifiex_pcie_reset_notify, }, +/* + * Kernel stores and restores PCIe function context before and after performing + * FLR respectively. Reconfigure the software and firmware including firmware + * redownload. + */ +static void mwifiex_pcie_reset_done(struct pci_dev *pdev) +{ + struct pcie_service_card *card = pci_get_drvdata(pdev); + struct mwifiex_adapter *adapter = card->adapter; + int ret; + + if (!adapter) { + dev_err(>dev, "%s: adapter structure is not valid\n", + __func__); + return; + } + + mwifiex_dbg(adapter, INFO, + "%s: vendor=0x%4.04x device=0x%4.04x rev=%d Post-FLR\n", + __func__, pdev->vendor, pdev->device, pdev->revision); + - adapter->surprise_removed = false; + ret = mwifiex_reinit_sw(adapter); + if (ret) + dev_err(>dev, "reinit failed: %d\n", ret); + else + mwifiex_dbg(adapter, INFO, "%s, successful\n", __func__); +} + +static const struct pci_error_handlers mwifiex_pcie_err_handler = { + .reset_prepare = mwifiex_pcie_reset_prepare, + .reset_done = mwifiex_pcie_reset_done, }; #ifdef CONFIG_PM_SLEEP
linux-next: manual merge of the net-next tree with the pci tree
Hi all, Today's linux-next merge of the net-next tree got conflicts in: drivers/pci/msi.c include/linux/pci.h between commit: 688769f643bf ("PCI/MSI: Make pci_msi_shutdown() and pci_msix_shutdown() static") from the pci tree and commit: 4244de1c64de ("PCI: remove pci_enable_msix") 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/pci/msi.c index 6b5eaf500a24,0042c365b29b.. --- a/drivers/pci/msi.c +++ b/drivers/pci/msi.c @@@ -975,28 -973,7 +975,7 @@@ static int __pci_enable_msix(struct pci return msix_capability_init(dev, entries, nvec, affd); } - /** - * pci_enable_msix - configure device's MSI-X capability structure - * @dev: pointer to the pci_dev data structure of MSI-X device function - * @entries: pointer to an array of MSI-X entries (optional) - * @nvec: number of MSI-X irqs requested for allocation by device driver - * - * Setup the MSI-X capability structure of device function with the number - * of requested irqs upon its software driver call to request for - * MSI-X mode enabled on its hardware device function. A return of zero - * indicates the successful configuration of MSI-X capability structure - * with new allocated MSI-X irqs. A return of < 0 indicates a failure. - * Or a return of > 0 indicates that driver request is exceeding the number - * of irqs or MSI-X vectors available. Driver should use the returned value to - * re-send its request. - **/ - int pci_enable_msix(struct pci_dev *dev, struct msix_entry *entries, int nvec) - { - return __pci_enable_msix(dev, entries, nvec, NULL); - } - EXPORT_SYMBOL(pci_enable_msix); - -void pci_msix_shutdown(struct pci_dev *dev) +static void pci_msix_shutdown(struct pci_dev *dev) { struct msi_desc *entry; diff --cc include/linux/pci.h index 821627873de1,82dec36845e6.. --- a/include/linux/pci.h +++ b/include/linux/pci.h @@@ -1279,9 -1297,10 +1279,8 @@@ struct msix_entry #ifdef CONFIG_PCI_MSI int pci_msi_vec_count(struct pci_dev *dev); -void pci_msi_shutdown(struct pci_dev *dev); void pci_disable_msi(struct pci_dev *dev); int pci_msix_vec_count(struct pci_dev *dev); - int pci_enable_msix(struct pci_dev *dev, struct msix_entry *entries, int nvec); -void pci_msix_shutdown(struct pci_dev *dev); void pci_disable_msix(struct pci_dev *dev); void pci_restore_msi_state(struct pci_dev *dev); int pci_msi_enabled(void); @@@ -1307,11 -1326,10 +1306,8 @@@ int pci_irq_get_node(struct pci_dev *pd #else static inline int pci_msi_vec_count(struct pci_dev *dev) { return -ENOSYS; } -static inline void pci_msi_shutdown(struct pci_dev *dev) { } static inline void pci_disable_msi(struct pci_dev *dev) { } static inline int pci_msix_vec_count(struct pci_dev *dev) { return -ENOSYS; } - static inline int pci_enable_msix(struct pci_dev *dev, - struct msix_entry *entries, int nvec) - { return -ENOSYS; } -static inline void pci_msix_shutdown(struct pci_dev *dev) { } static inline void pci_disable_msix(struct pci_dev *dev) { } static inline void pci_restore_msi_state(struct pci_dev *dev) { } static inline int pci_msi_enabled(void) { return 0; }
linux-next: manual merge of the net-next tree with the pci tree
Hi all, Today's linux-next merge of the net-next tree got a conflict in: include/linux/pci_ids.h between commit: a755e169031d ("PCI: Add Netronome vendor and device IDs") from the pci tree and commit: 2d1e0254ef83 ("pci_ids: add Netronome Systems vendor") from the net-next tree. I fixed it up (the former was just a superset of the latter, so I used that) and can carry the fix as necessary (no action is required). -- Cheers, Stephen Rothwells...@canb.auug.org.au -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html