All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hauke Mehrtens <hauke@hauke-m.de>
To: Stefan Assmann <sassmann@kpanic.de>, mcgrof@kernel.org
Cc: backports@vger.kernel.org
Subject: Re: [PATCH v3 04/11] backports: igb fixes for linux-3.7
Date: Thu, 09 Jan 2014 22:13:36 +0100	[thread overview]
Message-ID: <52CF1100.7090708@hauke-m.de> (raw)
In-Reply-To: <1389177854-24292-5-git-send-email-sassmann@kpanic.de>

On 01/08/2014 11:44 AM, Stefan Assmann wrote:
> - add pci_sriov_set_totalvfs()
> - add patches/collateral-evolutions/network/82-ethernet/0002-igb_pci_sriov_configure.patch
> 
> Signed-off-by: Stefan Assmann <sassmann@kpanic.de>
> ---
>  backport/backport-include/linux/pci.h              |  5 +-
>  backport/compat/compat-3.8.c                       | 34 +++++++++++++
>  .../82-ethernet/0002-igb_pci_sriov_configure.patch | 57 ++++++++++++++++++++++
>  3 files changed, 95 insertions(+), 1 deletion(-)
>  create mode 100644 patches/collateral-evolutions/network/82-ethernet/0002-igb_pci_sriov_configure.patch
> 
> diff --git a/backport/backport-include/linux/pci.h b/backport/backport-include/linux/pci.h
> index 9083255..65a76a1 100644
> --- a/backport/backport-include/linux/pci.h
> +++ b/backport/backport-include/linux/pci.h
> @@ -178,6 +178,10 @@ bool pci_pme_capable(struct pci_dev *dev, pci_power_t state);
>  	.subvendor = (subvend), .subdevice = (subdev)
>  #endif /* PCI_DEVICE_SUB */
>  
> +#if LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0)

Please add this here:
#define pci_sriov_set_totalvfs LINUX_BACKPORT(pci_sriov_set_totalvfs)

> +int pci_sriov_set_totalvfs(struct pci_dev *dev, u16 numvfs);
> +#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0) */
> +
>  #if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
>  /* Taken from drivers/pci/pci.h */
>  struct pci_sriov {
> @@ -210,5 +214,4 @@ static inline int pci_vfs_assigned(struct pci_dev *dev)
>  #endif
>  
>  #endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0) */
> -
>  #endif /* _BACKPORT_LINUX_PCI_H */
> diff --git a/backport/compat/compat-3.8.c b/backport/compat/compat-3.8.c
> index c6824bf..9d96b36 100644
> --- a/backport/compat/compat-3.8.c
> +++ b/backport/compat/compat-3.8.c
> @@ -18,6 +18,8 @@
>  #include <linux/netdevice.h>
>  #include <linux/random.h>
>  #include <linux/of.h>
> +#include <linux/pci.h>
> +#include <linux/pci_regs.h>
>  
>  #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,8))
>  void netdev_set_default_ethtool_ops(struct net_device *dev,
> @@ -514,3 +516,35 @@ int of_property_read_u8_array(const struct device_node *np,
>  }
>  EXPORT_SYMBOL_GPL(of_property_read_u8_array);
>  #endif /* CONFIG_OF */
> +
> +#ifdef CONFIG_PCI_IOV
> +/**
> + * pci_sriov_set_totalvfs -- reduce the TotalVFs available
> + * @dev: the PCI PF device
> + * @numvfs: number that should be used for TotalVFs supported
> + *
> + * Should be called from PF driver's probe routine with
> + * device's mutex held.
> + *
> + * Returns 0 if PF is an SRIOV-capable device and
> + * value of numvfs valid. If not a PF return -ENOSYS;
> + * if numvfs is invalid return -EINVAL;
> + * if VFs already enabled, return -EBUSY.
> + */
> +int pci_sriov_set_totalvfs(struct pci_dev *dev, u16 numvfs)
> +{
> +	if (!dev->is_physfn)
> +		return -ENOSYS;
> +	if (numvfs > dev->sriov->total_VFs)
> +		return -EINVAL;
> +
> +	/* Shouldn't change if VFs already enabled */
> +	if (dev->sriov->ctrl & PCI_SRIOV_CTRL_VFE)
> +		return -EBUSY;
> +	else
> +		dev->sriov->driver_max_VFs = numvfs;
> +
> +	return 0;
> +}
> +EXPORT_SYMBOL_GPL(pci_sriov_set_totalvfs);
> +#endif /* CONFIG_PCI_IOV */
> diff --git a/patches/collateral-evolutions/network/82-ethernet/0002-igb_pci_sriov_configure.patch b/patches/collateral-evolutions/network/82-ethernet/0002-igb_pci_sriov_configure.patch
> new file mode 100644
> index 0000000..47722cc
> --- /dev/null
> +++ b/patches/collateral-evolutions/network/82-ethernet/0002-igb_pci_sriov_configure.patch
> @@ -0,0 +1,57 @@
> +diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
> +index f2a5abf..dd878b6 100644
> +--- a/drivers/net/ethernet/intel/igb/igb_main.c
> ++++ b/drivers/net/ethernet/intel/igb/igb_main.c
> +@@ -207,7 +207,9 @@ static const struct dev_pm_ops igb_pm_ops = {
> + };
> + #endif
> + static void igb_shutdown(struct pci_dev *);
> ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)
> + static int igb_pci_sriov_configure(struct pci_dev *dev, int num_vfs);
> ++#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0) */
> + #ifdef CONFIG_IGB_DCA
> + static int igb_notify_dca(struct notifier_block *, unsigned long, void *);
> + static struct notifier_block dca_notifier = {
> +@@ -249,7 +251,9 @@ static struct pci_driver igb_driver = {
> + 	.driver.pm = &igb_pm_ops,
> + #endif
> + 	.shutdown = igb_shutdown,
> ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)
> + 	.sriov_configure = igb_pci_sriov_configure,
> ++#endif
> + 	.err_handler = &igb_err_handler
> + };
> + 
> +@@ -7310,6 +7314,7 @@ static int igb_sriov_reinit(struct pci_dev *dev)
> + 	return 0;
> + }
> + 
> ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)
> + static int igb_pci_disable_sriov(struct pci_dev *dev)
> + {
> + 	int err = igb_disable_sriov(dev);
> +@@ -7319,6 +7324,7 @@ static int igb_pci_disable_sriov(struct pci_dev *dev)
> + 
> + 	return err;
> + }
> ++#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0) */
> + 
> + static int igb_pci_enable_sriov(struct pci_dev *dev, int num_vfs)
> + {
> +@@ -7336,6 +7342,8 @@ out:
> + }
> + 
> + #endif
> ++
> ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)
> + static int igb_pci_sriov_configure(struct pci_dev *dev, int num_vfs)
> + {
> + #ifdef CONFIG_PCI_IOV
> +@@ -7346,6 +7354,7 @@ static int igb_pci_sriov_configure(struct pci_dev *dev, int num_vfs)
> + #endif
> + 	return 0;
> + }
> ++#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0) */
> + 
> + #ifdef CONFIG_NET_POLL_CONTROLLER
> + /* Polling 'interrupt' - used by things like netconsole to send skbs
> 


  reply	other threads:[~2014-01-09 21:13 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-08 10:44 [PATCH v3 00/11] backports: add igb driver Stefan Assmann
2014-01-08 10:44 ` [PATCH v3 01/11] backports: igb fixes for linux-3.12 Stefan Assmann
2014-01-09 20:55   ` Hauke Mehrtens
2014-01-08 10:44 ` [PATCH v3 02/11] backports: igb fixes for linux-3.9 Stefan Assmann
2014-01-09 21:01   ` Hauke Mehrtens
2014-01-08 10:44 ` [PATCH v3 03/11] backports: igb fixes for linux-3.8 Stefan Assmann
2014-01-08 10:44 ` [PATCH v3 04/11] backports: igb fixes for linux-3.7 Stefan Assmann
2014-01-09 21:13   ` Hauke Mehrtens [this message]
2014-01-13  7:40     ` Stefan Assmann
2014-01-08 10:44 ` [PATCH v3 05/11] backports: igb fixes for linux-3.6 Stefan Assmann
2014-01-08 10:44 ` [PATCH v3 06/11] backports: igb fixes for linux-3.5 Stefan Assmann
2014-01-08 10:44 ` [PATCH v3 07/11] backports: igb fixes for linux-3.4 Stefan Assmann
2014-01-08 10:44 ` [PATCH v3 08/11] backports: igb fixes for linux-3.3 Stefan Assmann
2014-01-08 10:44 ` [PATCH v3 09/11] backports: igb fixes for linux-3.2 Stefan Assmann
2014-01-08 10:44 ` [PATCH v3 10/11] backports: igb fixes for linux-3.1 Stefan Assmann
2014-01-08 10:44 ` [PATCH v3 11/11] backports: enable igb and add defconfig Stefan Assmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=52CF1100.7090708@hauke-m.de \
    --to=hauke@hauke-m.de \
    --cc=backports@vger.kernel.org \
    --cc=mcgrof@kernel.org \
    --cc=sassmann@kpanic.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.