Skip to contentSkip to conversation

backports: add igb driver

PATCH In review Stefan Assmann 2 participants 15 messages Jan 29, 2014 – Feb 2, 2014

lore
Share & tools
lore
#0 lore raw

v4 cover backports: add igb driver

This is a patchset for inclusion of the Intel igb wired ethernet driver. Patches are split per kernel release that makes it easier to review the changes and gives a nice history of what was necessary for each release. Also the igb driver changes have been split up into individual patches in patches/collateral-evolutions/network/84-ethernet. This and file names are up for discussion, suggestions welcome.

v2:
Instead of backporting struct ethtool_ops the code in igb has been wrapped in if LINUX_VERSION_CODE statements. This will result in higher maintenance because of conflicts with future upstream igb changes but it seems there's no better solution so far.
The patches in patches/collateral-evolutions/network/84-ethernet have been kept separate but with a leading number to make sure they get applied in the correct order.
The code that activates igb has been pushed to the end of the series to not break any bisecting.
v3:
Use original struct ptp_clock and handle ptp_clock_register() with a define. Also removed unused function warnings by wrapping the code in if LINUX_VERSION_CODE statements.
v4:
Add several LINUX_BACKPORT defines to prevent possible clashes with distro backports. Patches rebased and tested against next-20140124.

Stefan Assmann (12):
backports: igb fixes for linux-3.13
backports: igb fixes for linux-3.12
backports: igb fixes for linux-3.9
backports: igb fixes for linux-3.8
backports: igb fixes for linux-3.7
backports: igb fixes for linux-3.6
backports: igb fixes for linux-3.5
backports: igb fixes for linux-3.4
backports: igb fixes for linux-3.3
backports: igb fixes for linux-3.2
backports: igb fixes for linux-3.1
backports: enable igb and add defconfig

 backport/backport-include/linux/ethtool.h          |   79 ++++++++++++++++++++
 backport/backport-include/linux/gfp.h              |   10 +++
 backport/backport-include/linux/if.h               |    8 ++
 backport/backport-include/linux/mdio.h             |   56 ++++++++++++++
 backport/backport-include/linux/pci.h              |   46 +++++++++++
 backport/backport-include/linux/pci_regs.h         |    8 ++
 backport/backport-include/linux/ptp_clock_kernel.h |   38 ++++++++++
 backport/backport-include/linux/skbuff.h           |   74 ++++++++++++++++++
 backport/backport-include/linux/u64_stats_sync.h   |   16 ++++-
 backport/compat/backport-3.10.c                    |   46 +++++++++++
 backport/compat/compat-3.5.c                       |   11 +++
 backport/compat/compat-3.8.c                       |   34 +++++++++
 backport/defconfigs/igb                            |    2 +
 copy-list                                          |    4 +
 .../84-ethernet/0001-igb_net_device_ops.patch      |   56 ++++++++++++++
 .../84-ethernet/0002-igb_pci_sriov_configure.patch |   57 ++++++++++++++
 .../network/84-ethernet/0004-igb_err_handler.patch |   16 ++++
 .../network/84-ethernet/0005-igb_mdi.patch         |   49 ++++++++++++
 .../network/84-ethernet/0006-igb_eee.patch         |   31 ++++++++
 .../network/84-ethernet/0007-igb_ethtool_ops.patch |   56 ++++++++++++++
 .../network/84-ethernet/0008-igb_no_fcs.patch      |   16 ++++
 .../network/84-ethernet/0009-igb_vlan_rx_vid.patch |   64 ++++++++++++++++
 .../network/84-ethernet/0010-igb_ethtool_ops.patch |   48 ++++++++++++
 .../network/84-ethernet/0011-igb_ethtool_ops.patch |   31 ++++++++
 .../84-ethernet/0012-igb_ndo_set_vf_spoofchk.patch |   51 +++++++++++++
 .../network/84-ethernet/0013-igb_hwmon.patch       |   30 ++++++++
 26 files changed, 935 insertions(+), 2 deletions(-)
 create mode 100644 backport/backport-include/linux/gfp.h
 create mode 100644 backport/backport-include/linux/mdio.h
 create mode 100644 backport/backport-include/linux/ptp_clock_kernel.h
 create mode 100644 backport/defconfigs/igb
 create mode 100644 patches/collateral-evolutions/network/84-ethernet/0001-igb_net_device_ops.patch
 create mode 100644 patches/collateral-evolutions/network/84-ethernet/0002-igb_pci_sriov_configure.patch
 create mode 100644 patches/collateral-evolutions/network/84-ethernet/0004-igb_err_handler.patch
 create mode 100644 patches/collateral-evolutions/network/84-ethernet/0005-igb_mdi.patch
 create mode 100644 patches/collateral-evolutions/network/84-ethernet/0006-igb_eee.patch
 create mode 100644 patches/collateral-evolutions/network/84-ethernet/0007-igb_ethtool_ops.patch
 create mode 100644 patches/collateral-evolutions/network/84-ethernet/0008-igb_no_fcs.patch
 create mode 100644 patches/collateral-evolutions/network/84-ethernet/0009-igb_vlan_rx_vid.patch
 create mode 100644 patches/collateral-evolutions/network/84-ethernet/0010-igb_ethtool_ops.patch
 create mode 100644 patches/collateral-evolutions/network/84-ethernet/0011-igb_ethtool_ops.patch
 create mode 100644 patches/collateral-evolutions/network/84-ethernet/0012-igb_ndo_set_vf_spoofchk.patch
 create mode 100644 patches/collateral-evolutions/network/84-ethernet/0013-igb_hwmon.patch
#1 lore raw

PATCH v4 1/12 backports: igb fixes for linux-3.13

- add patches/collateral-evolutions/network/84-ethernet/0013-igb_hwmon.patch

---
 .../network/84-ethernet/0013-igb_hwmon.patch       |   30 ++++++++++++++++++++
 1 files changed, 30 insertions(+), 0 deletions(-)
 create mode 100644 patches/collateral-evolutions/network/84-ethernet/0013-igb_hwmon.patch
patches/collateral-evolutions/network/84-ethernet/0013-igb_hwmon.patch new file +30 -0
new file mode 100644
index 0000000..b2db7c2
@@ -0,0 +1,30 @@
+diff --git a/drivers/net/ethernet/intel/igb/igb_hwmon.c b/drivers/net/ethernet/intel/igb/igb_hwmon.c
+index fdf2b82..99507de 100644
+--- a/drivers/net/ethernet/intel/igb/igb_hwmon.c
++++ b/drivers/net/ethernet/intel/igb/igb_hwmon.c
+@@ -177,7 +177,9 @@ int igb_sysfs_init(struct igb_adapter *adapter)
+ {
+ 	struct hwmon_buff *igb_hwmon;
+ 	struct i2c_client *client;
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,13,0)
+ 	struct device *hwmon_dev;
++#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3,13,0) */
+ 	unsigned int i;
+ 	int rc = 0;
+ 
+@@ -234,6 +236,7 @@ int igb_sysfs_init(struct igb_adapter *adapter)
+ 	igb_hwmon->groups[0] = &igb_hwmon->group;
+ 	igb_hwmon->group.attrs = igb_hwmon->attrs;
+ 
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,13,0)
+ 	hwmon_dev = devm_hwmon_device_register_with_groups(&adapter->pdev->dev,
+ 							   client->name,
+ 							   igb_hwmon,
+@@ -246,6 +249,7 @@ int igb_sysfs_init(struct igb_adapter *adapter)
+ 	goto exit;
+ 
+ err:
++#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3,13,0) */
+ 	igb_sysfs_del_adapter(adapter);
+ exit:
+ 	return rc;
Signature · 1 line
1.7.1
#2 lore raw

PATCH v4 2/12 backports: igb fixes for linux-3.12

In reply to Stefan Assmann

- refactor u64_stats_sync.h a bit
- add u64_stats_init define

---
 backport/backport-include/linux/u64_stats_sync.h |   16 ++++++++++++++--
 1 files changed, 14 insertions(+), 2 deletions(-)
backport/backport-include/linux/u64_stats_sync.h +14 -2
index f15116c..ce6b778 100644
@@ -1,6 +1,17 @@
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0))
+#ifndef __BACKPORT_LINUX_U64_STATS_SYNC_H
+#define __BACKPORT_LINUX_U64_STATS_SYNC_H
+
 #include_next <linux/u64_stats_sync.h>
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,13,0)
+#if BITS_PER_LONG == 32 && defined(CONFIG_SMP)
+# define u64_stats_init(syncp)	seqcount_init(syncp.seq)
 #else
+# define u64_stats_init(syncp)	do { } while (0)
+#endif
+#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3,13,0) */
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,6,0)
 #ifndef _LINUX_U64_STATS_SYNC_H
 #define _LINUX_U64_STATS_SYNC_H
 
@@ -141,4 +152,5 @@ static inline bool u64_stats_fetch_retry_bh(const struct u64_stats_sync *syncp,
 }
 
 #endif /* _LINUX_U64_STATS_SYNC_H */
-#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0)) */
+#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3,6,0) */
+#endif /* __BACKPORT_LINUX_U64_STATS_SYNC_H */
Signature · 1 line
1.7.1
#3 lore raw

PATCH v4 3/12 backports: igb fixes for linux-3.9

In reply to Stefan Assmann

- add struct pci_sriov
- add pci_vfs_assigned()
- add PCI_SRIOV defines
- add patches/collateral-evolutions/network/84-ethernet/0001-igb_net_device_ops.patch

---
 backport/backport-include/linux/pci.h              |   34 ++++++++++++
 backport/backport-include/linux/pci_regs.h         |    8 +++
 backport/compat/backport-3.10.c                    |   46 ++++++++++++++++
 .../84-ethernet/0001-igb_net_device_ops.patch      |   56 ++++++++++++++++++++
 4 files changed, 144 insertions(+), 0 deletions(-)
 create mode 100644 patches/collateral-evolutions/network/84-ethernet/0001-igb_net_device_ops.patch
backport/backport-include/linux/pci.h +34 -0
index 3a1815a..f36384e 100644
@@ -178,4 +178,38 @@ 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,10,0)
+/* Taken from drivers/pci/pci.h */
+struct pci_sriov {
+	int pos;		/* capability position */
+	int nres;		/* number of resources */
+	u32 cap;		/* SR-IOV Capabilities */
+	u16 ctrl;		/* SR-IOV Control */
+	u16 total_VFs;		/* total VFs associated with the PF */
+	u16 initial_VFs;	/* initial VFs associated with the PF */
+	u16 num_VFs;		/* number of VFs available */
+	u16 offset;		/* first VF Routing ID offset */
+	u16 stride;		/* following VF stride */
+	u32 pgsz;		/* page size for BAR alignment */
+	u8 link;		/* Function Dependency Link */
+	u16 driver_max_VFs;	/* max num VFs driver supports */
+	struct pci_dev *dev;	/* lowest numbered PF */
+	struct pci_dev *self;	/* this PF */
+	struct mutex lock;	/* lock for VF bus */
+	struct work_struct mtask; /* VF Migration task */
+	u8 __iomem *mstate;	/* VF Migration State Array */
+};
+
+#define pci_vfs_assigned LINUX_BACKPORT(pci_vfs_assigned)
+#ifdef CONFIG_PCI_IOV
+int pci_vfs_assigned(struct pci_dev *dev);
+#else
+static inline int pci_vfs_assigned(struct pci_dev *dev)
+{
+	return 0;
+}
+#endif
+
+#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0) */
+
 #endif /* _BACKPORT_LINUX_PCI_H */
backport/backport-include/linux/pci_regs.h +8 -0
index 5cfa742..b52c4a5 100644
@@ -125,4 +125,12 @@
 #define PCI_PM_CAP_PME_SHIFT	11
 #endif
 
+#ifndef PCI_SRIOV_VF_DID
+#define PCI_SRIOV_VF_DID	0x1a	/* VF Device ID */
+#endif
+
+#ifndef PCI_SRIOV_CTRL_VFE
+#define PCI_SRIOV_CTRL_VFE	0x01	/* VF Enable */
+#endif
+
 #endif /* __BACKPORT_UAPI_PCI_REGS_H */
backport/compat/backport-3.10.c +46 -0

56 lines not on this page · raw message

patches/collateral-evolutions/network/84-ethernet/0001-igb_net_device_ops.patch new file +56 -0

56 lines not on this page · raw message

Signature · 1 line
1.7.1
#4 lore raw

PATCH v4 4/12 backports: igb fixes for linux-3.8

In reply to Stefan Assmann

- add missing NETDEV_FRAG defines

---
 backport/backport-include/linux/skbuff.h |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)
backport/backport-include/linux/skbuff.h +9 -0
index 43d33ca..7d04b54 100644
@@ -224,4 +224,13 @@ static inline void skb_queue_splice_tail(const struct sk_buff_head *list,
 		     skb = skb->next)
 #endif /* < 2.6.28 */
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)
+#ifndef NETDEV_FRAG_PAGE_MAX_ORDER
+#define NETDEV_FRAG_PAGE_MAX_ORDER get_order(32768)
+#endif
+#ifndef NETDEV_FRAG_PAGE_MAX_SIZE
+#define NETDEV_FRAG_PAGE_MAX_SIZE  (PAGE_SIZE << NETDEV_FRAG_PAGE_MAX_ORDER)
+#endif
+#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0) */
+
 #endif /* __BACKPORT_SKBUFF_H */
Signature · 1 line
1.7.1
#5 lore raw

PATCH v4 5/12 backports: igb fixes for linux-3.7

In reply to Stefan Assmann

- add pci_sriov_set_totalvfs()
- add patches/collateral-evolutions/network/84-ethernet/0002-igb_pci_sriov_configure.patch

Several ifdefs in igb_main.c to avoid compiler warnings.

---
 backport/backport-include/linux/pci.h              |    6 ++-
 backport/compat/compat-3.8.c                       |   34 ++++++++++++
 .../84-ethernet/0002-igb_pci_sriov_configure.patch |   57 ++++++++++++++++++++
 3 files changed, 96 insertions(+), 1 deletions(-)
 create mode 100644 patches/collateral-evolutions/network/84-ethernet/0002-igb_pci_sriov_configure.patch
backport/backport-include/linux/pci.h +5 -1
index f36384e..5201f1b 100644
@@ -178,6 +178,11 @@ 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)
+#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 {
@@ -211,5 +216,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 */
backport/compat/compat-3.8.c +34 -0
index 6741989..d39e8d6 100644
@@ -19,6 +19,8 @@
 #include <linux/random.h>
 #include <linux/of.h>
 #include <linux/mm.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,
@@ -515,3 +517,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 */
patches/collateral-evolutions/network/84-ethernet/0002-igb_pci_sriov_configure.patch new file +57 -0

57 lines not on this page · raw message

Signature · 1 line
1.7.1
#6 lore raw

PATCH v4 6/12 backports: igb fixes for linux-3.6

In reply to Stefan Assmann

- backport ethtool_cmd
- backport ethtool_ops
- backport mmd_eee_adv_to_ethtool_adv_t
- add define to map ptp_clock_register() to old version
- add patches/collateral-evolutions/network/84-ethernet/0004-igb_err_handler.patch
- add patches/collateral-evolutions/network/84-ethernet/0005-igb_mdi.patch

---
 backport/backport-include/linux/mdio.h             |   35 ++++++++++++++
 backport/backport-include/linux/ptp_clock_kernel.h |    9 ++++
 .../network/84-ethernet/0004-igb_err_handler.patch |   16 ++++++
 .../network/84-ethernet/0005-igb_mdi.patch         |   49 ++++++++++++++++++++
 4 files changed, 109 insertions(+), 0 deletions(-)
 create mode 100644 backport/backport-include/linux/mdio.h
 create mode 100644 backport/backport-include/linux/ptp_clock_kernel.h
 create mode 100644 patches/collateral-evolutions/network/84-ethernet/0004-igb_err_handler.patch
 create mode 100644 patches/collateral-evolutions/network/84-ethernet/0005-igb_mdi.patch
backport/backport-include/linux/mdio.h new file +35 -0
new file mode 100644
index 0000000..2a38121
@@ -0,0 +1,35 @@
+#ifndef __BACKPORT_LINUX_MDIO_H
+#define __BACKPORT_LINUX_MDIO_H
+#include_next <linux/mdio.h>
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0)
+/**
+ * mmd_eee_adv_to_ethtool_adv_t
+ * @eee_adv: value of the MMD EEE Advertisement/Link Partner Ability registers
+ *
+ * A small helper function that translates the MMD EEE Advertisment (7.60)
+ * and MMD EEE Link Partner Ability (7.61) bits to ethtool advertisement
+ * settings.
+ */
+static inline u32 mmd_eee_adv_to_ethtool_adv_t(u16 eee_adv)
+{
+	u32 adv = 0;
+
+	if (eee_adv & MDIO_EEE_100TX)
+		adv |= ADVERTISED_100baseT_Full;
+	if (eee_adv & MDIO_EEE_1000T)
+		adv |= ADVERTISED_1000baseT_Full;
+	if (eee_adv & MDIO_EEE_10GT)
+		adv |= ADVERTISED_10000baseT_Full;
+	if (eee_adv & MDIO_EEE_1000KX)
+		adv |= ADVERTISED_1000baseKX_Full;
+	if (eee_adv & MDIO_EEE_10GKX4)
+		adv |= ADVERTISED_10000baseKX4_Full;
+	if (eee_adv & MDIO_EEE_10GKR)
+		adv |= ADVERTISED_10000baseKR_Full;
+
+	return adv;
+}
+#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0) */
+
+#endif /* __BACKPORT_LINUX_MDIO_H */
backport/backport-include/linux/ptp_clock_kernel.h new file +9 -0
new file mode 100644
index 0000000..f64e705
@@ -0,0 +1,9 @@
+#ifndef __BACKPORT_PTP_CLOCK_KERNEL_H
+#define __BACKPORT_PTP_CLOCK_KERNEL_H
+#include_next <linux/ptp_clock_kernel.h>
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,0) && LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0)
+#define ptp_clock_register(info,parent) ptp_clock_register(info)
+#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,0) && LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0) */
+
+#endif /* __BACKPORT_PTP_CLOCK_KERNEL_H */
patches/collateral-evolutions/network/84-ethernet/0004-igb_err_handler.patch new file +16 -0
new file mode 100644
index 0000000..393e8b5
@@ -0,0 +1,16 @@
+diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
+index 67441f2..4df7bce 100644
+--- a/drivers/net/ethernet/intel/igb/igb_main.c
++++ b/drivers/net/ethernet/intel/igb/igb_main.c
+@@ -232,7 +232,11 @@ static pci_ers_result_t igb_io_error_detected(struct pci_dev *,
+ static pci_ers_result_t igb_io_slot_reset(struct pci_dev *);
+ static void igb_io_resume(struct pci_dev *);
+ 
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,7,0)
+ static const struct pci_error_handlers igb_err_handler = {
++#else
++static struct pci_error_handlers igb_err_handler = {
++#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3,7,0) */
+ 	.error_detected = igb_io_error_detected,
+ 	.slot_reset = igb_io_slot_reset,
+ 	.resume = igb_io_resume,
patches/collateral-evolutions/network/84-ethernet/0005-igb_mdi.patch new file +49 -0

49 lines not on this page · raw message

Signature · 1 line
1.7.1
#7 lore raw

PATCH v4 7/12 backports: igb fixes for linux-3.5

In reply to Stefan Assmann

- add EEE defines
- add struct ethtool_eee
- backport __skb_alloc_page and __skb_alloc_pages
- add patches/collateral-evolutions/network/84-ethernet/0006-igb_eee.patch

---
 backport/backport-include/linux/ethtool.h          |   31 +++++++++++++
 backport/backport-include/linux/gfp.h              |   10 ++++
 backport/backport-include/linux/mdio.h             |   23 +++++++++-
 backport/backport-include/linux/skbuff.h           |   46 ++++++++++++++++++++
 .../network/84-ethernet/0006-igb_eee.patch         |   31 +++++++++++++
 5 files changed, 140 insertions(+), 1 deletions(-)
 create mode 100644 backport/backport-include/linux/gfp.h
 create mode 100644 patches/collateral-evolutions/network/84-ethernet/0006-igb_eee.patch
backport/backport-include/linux/ethtool.h +31 -0
index 647fbf6..4f13cb9 100644
@@ -42,4 +42,35 @@ static inline __u32 ethtool_cmd_speed(const struct ethtool_cmd *ep)
 }
 #endif
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,0) && LINUX_VERSION_CODE < KERNEL_VERSION(3,6,0)
+/**
+ * struct ethtool_eee - Energy Efficient Ethernet information
+ * @cmd: ETHTOOL_{G,S}EEE
+ * @supported: Mask of %SUPPORTED_* flags for the speed/duplex combinations
+ *	for which there is EEE support.
+ * @advertised: Mask of %ADVERTISED_* flags for the speed/duplex combinations
+ *	advertised as eee capable.
+ * @lp_advertised: Mask of %ADVERTISED_* flags for the speed/duplex
+ *	combinations advertised by the link partner as eee capable.
+ * @eee_active: Result of the eee auto negotiation.
+ * @eee_enabled: EEE configured mode (enabled/disabled).
+ * @tx_lpi_enabled: Whether the interface should assert its tx lpi, given
+ *	that eee was negotiated.
+ * @tx_lpi_timer: Time in microseconds the interface delays prior to asserting
+ *	its tx lpi (after reaching 'idle' state). Effective only when eee
+ *	was negotiated and tx_lpi_enabled was set.
+ */
+struct ethtool_eee {
+	__u32	cmd;
+	__u32	supported;
+	__u32	advertised;
+	__u32	lp_advertised;
+	__u32	eee_active;
+	__u32	eee_enabled;
+	__u32	tx_lpi_enabled;
+	__u32	tx_lpi_timer;
+	__u32	reserved[2];
+};
+#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,0) && LINUX_VERSION_CODE < KERNEL_VERSION(3,6,0) */
+
 #endif /* __BACKPORT_LINUX_ETHTOOL_H */
backport/backport-include/linux/gfp.h new file +10 -0
new file mode 100644
index 0000000..2962290
@@ -0,0 +1,10 @@
+#ifndef __BACKPORT_LINUX_GFP_H
+#define __BACKPORT_LINUX_GFP_H
+#include_next <linux/gfp.h>
+
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,6,0))
+#define ___GFP_MEMALLOC		0x2000u
+#define __GFP_MEMALLOC	((__force gfp_t)___GFP_MEMALLOC)/* Allow access to emergency reserves */
+#endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(3,6,0)) */
+
+#endif /* __BACKPORT_LINUX_GFP_H */
backport/backport-include/linux/mdio.h +22 -1
index 2a38121..838958a 100644
@@ -2,6 +2,28 @@
 #define __BACKPORT_LINUX_MDIO_H
 #include_next <linux/mdio.h>
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,6,0)
+/* EEE Supported/Advertisement/LP Advertisement registers.
+ *
+ * EEE capability Register (3.20), Advertisement (7.60) and
+ * Link partner ability (7.61) registers have and can use the same identical
+ * bit masks.
+ */
+#define MDIO_AN_EEE_ADV_100TX	0x0002	/* Advertise 100TX EEE cap */
+#define MDIO_AN_EEE_ADV_1000T	0x0004	/* Advertise 1000T EEE cap */
+/* Note: the two defines above can be potentially used by the user-land
+ * and cannot remove them now.
+ * So, we define the new generic MDIO_EEE_100TX and MDIO_EEE_1000T macros
+ * using the previous ones (that can be considered obsolete).
+ */
+#define MDIO_EEE_100TX		MDIO_AN_EEE_ADV_100TX	/* 100TX EEE cap */
+#define MDIO_EEE_1000T		MDIO_AN_EEE_ADV_1000T	/* 1000T EEE cap */
+#define MDIO_EEE_10GT		0x0008	/* 10GT EEE cap */
+#define MDIO_EEE_1000KX		0x0010	/* 1000KX EEE cap */
+#define MDIO_EEE_10GKX4		0x0020	/* 10G KX4 EEE cap */
+#define MDIO_EEE_10GKR		0x0040	/* 10G KR EEE cap */
+#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3,6,0) */
+
 #if LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0)
 /**
  * mmd_eee_adv_to_ethtool_adv_t
@@ -31,5 +53,4 @@ static inline u32 mmd_eee_adv_to_ethtool_adv_t(u16 eee_adv)
 	return adv;
 }
 #endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0) */
-
 #endif /* __BACKPORT_LINUX_MDIO_H */
backport/backport-include/linux/skbuff.h +46 -0

52 lines not on this page · raw message

patches/collateral-evolutions/network/84-ethernet/0006-igb_eee.patch new file +31 -0
new file mode 100644
index 0000000..f9927bf
@@ -0,0 +1,31 @@
+diff --git a/drivers/net/ethernet/intel/igb/igb_ethtool.c b/drivers/net/ethernet/intel/igb/igb_ethtool.c
+index 9b15820..9767f11 100644
+--- a/drivers/net/ethernet/intel/igb/igb_ethtool.c
++++ b/drivers/net/ethernet/intel/igb/igb_ethtool.c
+@@ -2585,6 +2585,7 @@ static int igb_set_rxnfc(struct net_device *dev, struct ethtool_rxnfc *cmd)
+ 	return ret;
+ }
+ 
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0)
+ static int igb_get_eee(struct net_device *netdev, struct ethtool_eee *edata)
+ {
+ 	struct igb_adapter *adapter = netdev_priv(netdev);
+@@ -2713,6 +2714,7 @@ static int igb_set_eee(struct net_device *netdev,
+ 
+ 	return 0;
+ }
++#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0) */
+ 
+ static int igb_get_module_info(struct net_device *netdev,
+ 			       struct ethtool_modinfo *modinfo)
+@@ -3001,8 +3003,10 @@ static const struct ethtool_ops igb_ethtool_ops = {
+ 	.get_ts_info		= igb_get_ts_info,
+ 	.get_rxnfc		= igb_get_rxnfc,
+ 	.set_rxnfc		= igb_set_rxnfc,
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0)
+ 	.get_eee		= igb_get_eee,
+ 	.set_eee		= igb_set_eee,
++#endif
+ 	.get_module_info	= igb_get_module_info,
+ 	.get_module_eeprom	= igb_get_module_eeprom,
+ 	.get_rxfh_indir_size	= igb_get_rxfh_indir_size,
Signature · 1 line
1.7.1
#8 lore raw

PATCH v4 8/12 backports: igb fixes for linux-3.4

In reply to Stefan Assmann

- add struct ethtool_ts_info
- add struct ethtool_modinfo
- add struct timestamp_event_queue
- add struct ptp_clock
- add ptp_clock_index()
- add patches/collateral-evolutions/network/84-ethernet/0007-igb_ethtool_ops.patch

---
 backport/backport-include/linux/ethtool.h          |   48 +++++++++++++++++
 backport/backport-include/linux/ptp_clock_kernel.h |   29 ++++++++++
 backport/compat/compat-3.5.c                       |   11 ++++
 .../network/84-ethernet/0007-igb_ethtool_ops.patch |   56 ++++++++++++++++++++
 4 files changed, 144 insertions(+), 0 deletions(-)
 create mode 100644 patches/collateral-evolutions/network/84-ethernet/0007-igb_ethtool_ops.patch
backport/backport-include/linux/ethtool.h +48 -0
index 4f13cb9..38882de 100644
@@ -42,6 +42,54 @@ static inline __u32 ethtool_cmd_speed(const struct ethtool_cmd *ep)
 }
 #endif
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0)
+/* EEPROM Standards for plug in modules */
+#define ETH_MODULE_SFF_8079		0x1
+#define ETH_MODULE_SFF_8079_LEN		256
+#define ETH_MODULE_SFF_8472		0x2
+#define ETH_MODULE_SFF_8472_LEN		512
+
+/**
+ * struct ethtool_ts_info - holds a device's timestamping and PHC association
+ * @cmd: command number = %ETHTOOL_GET_TS_INFO
+ * @so_timestamping: bit mask of the sum of the supported SO_TIMESTAMPING flags
+ * @phc_index: device index of the associated PHC, or -1 if there is none
+ * @tx_types: bit mask of the supported hwtstamp_tx_types enumeration values
+ * @rx_filters: bit mask of the supported hwtstamp_rx_filters enumeration values
+ *
+ * The bits in the 'tx_types' and 'rx_filters' fields correspond to
+ * the 'hwtstamp_tx_types' and 'hwtstamp_rx_filters' enumeration values,
+ * respectively.  For example, if the device supports HWTSTAMP_TX_ON,
+ * then (1 << HWTSTAMP_TX_ON) in 'tx_types' will be set.
+ */
+struct ethtool_ts_info {
+	__u32	cmd;
+	__u32	so_timestamping;
+	__s32	phc_index;
+	__u32	tx_types;
+	__u32	tx_reserved[3];
+	__u32	rx_filters;
+	__u32	rx_reserved[3];
+};
+
+/**
+ * struct ethtool_modinfo - plugin module eeprom information
+ * @cmd: %ETHTOOL_GMODULEINFO
+ * @type: Standard the module information conforms to %ETH_MODULE_SFF_xxxx
+ * @eeprom_len: Length of the eeprom
+ *
+ * This structure is used to return the information to
+ * properly size memory for a subsequent call to %ETHTOOL_GMODULEEEPROM.
+ * The type code indicates the eeprom data format
+ */
+struct ethtool_modinfo {
+	__u32   cmd;
+	__u32   type;
+	__u32   eeprom_len;
+	__u32   reserved[8];
+};
+#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0) */
+
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,0) && LINUX_VERSION_CODE < KERNEL_VERSION(3,6,0)
 /**
  * struct ethtool_eee - Energy Efficient Ethernet information
backport/backport-include/linux/ptp_clock_kernel.h +29 -0
index f64e705..90def75 100644
@@ -2,6 +2,35 @@
 #define __BACKPORT_PTP_CLOCK_KERNEL_H
 #include_next <linux/ptp_clock_kernel.h>
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,0) && LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0)
+#include <linux/posix-clock.h>
+
+#define PTP_MAX_TIMESTAMPS 128
+#define PTP_BUF_TIMESTAMPS 30
+
+struct timestamp_event_queue {
+	struct ptp_extts_event buf[PTP_MAX_TIMESTAMPS];
+	int head;
+	int tail;
+	spinlock_t lock;
+};
+
+struct ptp_clock {
+	struct posix_clock clock;
+	struct device *dev;
+	struct ptp_clock_info *info;
+	dev_t devid;
+	int index; /* index into clocks.map */
+	struct pps_device *pps_source;
+	struct timestamp_event_queue tsevq; /* simple fifo for time stamps */
+	struct mutex tsevq_mux; /* one process at a time reading the fifo */
+	wait_queue_head_t tsev_wq;
+	int defunct; /* tells readers to go away when clock is being removed */
+};
+
+extern int ptp_clock_index(struct ptp_clock *ptp);
+#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,0) && LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0) */
+
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,0) && LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0)
 #define ptp_clock_register(info,parent) ptp_clock_register(info)
 #endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,0) && LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0) */
backport/compat/compat-3.5.c +11 -0
index 95f52b9..0a4aaba 100644
@@ -12,6 +12,9 @@
 #include <linux/highuid.h>
 #include <linux/ktime.h>
 #include <linux/hrtimer.h>
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,0)
+#include <linux/ptp_clock_kernel.h>
+#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,0) */
 
 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0))
 #include <linux/device.h>
@@ -64,3 +67,11 @@ int overflowgid = DEFAULT_OVERFLOWGID;
 EXPORT_SYMBOL_GPL(overflowuid);
 EXPORT_SYMBOL_GPL(overflowgid);
 #endif
+
+#ifdef CONFIG_PTP_1588_CLOCK
+int ptp_clock_index(struct ptp_clock *ptp)
+{
+	return ptp->index;
+}
+EXPORT_SYMBOL(ptp_clock_index);
+#endif /* CONFIG_PTP_1588_CLOCK */
patches/collateral-evolutions/network/84-ethernet/0007-igb_ethtool_ops.patch new file +56 -0

56 lines not on this page · raw message

Signature · 1 line
1.7.1
#9 lore raw

PATCH v4 9/12 backports: igb fixes for linux-3.3

In reply to Stefan Assmann

- add IFF_SUPP_NOFCS define
- add patches/collateral-evolutions/network/84-ethernet/0008-igb_no_fcs.patch

Is there a better way to handle struct sk_buff changes?

---
 backport/backport-include/linux/if.h               |    4 ++++
 .../network/84-ethernet/0008-igb_no_fcs.patch      |   16 ++++++++++++++++
 2 files changed, 20 insertions(+), 0 deletions(-)
 create mode 100644 patches/collateral-evolutions/network/84-ethernet/0008-igb_no_fcs.patch
backport/backport-include/linux/if.h +4 -0
index 8f85b83..f23d2b8 100644
@@ -33,4 +33,8 @@
 #define IFF_LIVE_ADDR_CHANGE 0x100000
 #endif
 
+#ifndef IFF_SUPP_NOFCS
+#define IFF_SUPP_NOFCS	0x80000		/* device supports sending custom FCS */
+#endif
+
 #endif	/* _BACKPORT_LINUX_IF_H */
patches/collateral-evolutions/network/84-ethernet/0008-igb_no_fcs.patch new file +16 -0
new file mode 100644
index 0000000..f196f2d
@@ -0,0 +1,16 @@
+diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
+index fd6a103..a919cfa 100644
+--- a/drivers/net/ethernet/intel/igb/igb_main.c
++++ b/drivers/net/ethernet/intel/igb/igb_main.c
+@@ -4480,9 +4480,10 @@ static u32 igb_tx_cmd_type(struct sk_buff *skb, u32 tx_flags)
+ 	cmd_type |= IGB_SET_FLAG(tx_flags, IGB_TX_FLAGS_TSTAMP,
+ 				 (E1000_ADVTXD_MAC_TSTAMP));
+ 
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0)
+ 	/* insert frame checksum */
+ 	cmd_type ^= IGB_SET_FLAG(skb->no_fcs, 1, E1000_ADVTXD_DCMD_IFCS);
+-
++#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0) */
+ 	return cmd_type;
+ }
+ 
Signature · 1 line
1.7.1
#10 lore raw

PATCH v4 10/12 backports: igb fixes for linux-3.2

In reply to Stefan Assmann

- add patches/collateral-evolutions/network/84-ethernet/0009-igb_vlan_rx_vid.patch
- add patches/collateral-evolutions/network/84-ethernet/0010-igb_ethtool_ops.patch

---
 .../network/84-ethernet/0009-igb_vlan_rx_vid.patch |   64 ++++++++++++++++++++
 .../network/84-ethernet/0010-igb_ethtool_ops.patch |   48 +++++++++++++++
 2 files changed, 112 insertions(+), 0 deletions(-)
 create mode 100644 patches/collateral-evolutions/network/84-ethernet/0009-igb_vlan_rx_vid.patch
 create mode 100644 patches/collateral-evolutions/network/84-ethernet/0010-igb_ethtool_ops.patch
patches/collateral-evolutions/network/84-ethernet/0009-igb_vlan_rx_vid.patch new file +64 -0
new file mode 100644
index 0000000..44ea22e
@@ -0,0 +1,64 @@
+diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
+index 37e6062..6bf0a88 100644
+--- a/drivers/net/ethernet/intel/igb/igb_main.c
++++ b/drivers/net/ethernet/intel/igb/igb_main.c
+@@ -164,10 +164,13 @@ static void igb_vlan_mode(struct net_device *netdev, netdev_features_t features)
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)
+ static int igb_vlan_rx_add_vid(struct net_device *, __be16, u16);
+ static int igb_vlan_rx_kill_vid(struct net_device *, __be16, u16);
+-#else
++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0)
+ static int igb_vlan_rx_add_vid(struct net_device *, u16);
+ static int igb_vlan_rx_kill_vid(struct net_device *, u16);
+-#endif
++#else
++static void igb_vlan_rx_add_vid(struct net_device *, u16);
++static void igb_vlan_rx_kill_vid(struct net_device *, u16);
++#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) */
+ static void igb_restore_vlan(struct igb_adapter *);
+ static void igb_rar_set_qsel(struct igb_adapter *, u8 *, u32 , u8);
+ static void igb_ping_all_vfs(struct igb_adapter *);
+@@ -6974,8 +6977,10 @@ static void igb_vlan_mode(struct net_device *netdev, netdev_features_t features)
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)
+ static int igb_vlan_rx_add_vid(struct net_device *netdev,
+ 			       __be16 proto, u16 vid)
+-#else
++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0)
+ static int igb_vlan_rx_add_vid(struct net_device *netdev, u16 vid)
++#else
++static void igb_vlan_rx_add_vid(struct net_device *netdev, u16 vid)
+ #endif
+ {
+ 	struct igb_adapter *adapter = netdev_priv(netdev);
+@@ -6990,15 +6995,19 @@ static int igb_vlan_rx_add_vid(struct net_device *netdev, u16 vid)
+ 
+ 	set_bit(vid, adapter->active_vlans);
+ 
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0)
+ 	return 0;
++#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0) */
+ }
+ 
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)
+ static int igb_vlan_rx_kill_vid(struct net_device *netdev,
+ 				__be16 proto, u16 vid)
+-#else
++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0)
+ static int igb_vlan_rx_kill_vid(struct net_device *netdev, u16 vid)
+-#endif
++#else
++static void igb_vlan_rx_kill_vid(struct net_device *netdev, u16 vid)
++#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) */
+ {
+ 	struct igb_adapter *adapter = netdev_priv(netdev);
+ 	struct e1000_hw *hw = &adapter->hw;
+@@ -7014,7 +7023,9 @@ static int igb_vlan_rx_kill_vid(struct net_device *netdev, u16 vid)
+ 
+ 	clear_bit(vid, adapter->active_vlans);
+ 
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0)
+ 	return 0;
++#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0) */
+ }
+ 
+ static void igb_restore_vlan(struct igb_adapter *adapter)
patches/collateral-evolutions/network/84-ethernet/0010-igb_ethtool_ops.patch new file +48 -0

48 lines not on this page · raw message

Signature · 1 line
1.7.1
#11 lore raw

PATCH v4 11/12 backports: igb fixes for linux-3.1

In reply to Stefan Assmann

- add IFF_UNICAST_FLT define
- add PCI_DEV_FLAGS_ASSIGNED define
- add skb_frag_size_sub()
- add skb_frag_address()
- add patches/collateral-evolutions/network/84-ethernet/0011-igb_ethtool_ops.patch
- add patches/collateral-evolutions/network/84-ethernet/0012-igb_ndo_set_vf_spoofchk.patch

---
 backport/backport-include/linux/if.h               |    4 ++
 backport/backport-include/linux/pci.h              |    8 +++
 backport/backport-include/linux/skbuff.h           |   19 +++++++
 .../network/84-ethernet/0011-igb_ethtool_ops.patch |   31 ++++++++++++
 .../84-ethernet/0012-igb_ndo_set_vf_spoofchk.patch |   51 ++++++++++++++++++++
 5 files changed, 113 insertions(+), 0 deletions(-)
 create mode 100644 patches/collateral-evolutions/network/84-ethernet/0011-igb_ethtool_ops.patch
 create mode 100644 patches/collateral-evolutions/network/84-ethernet/0012-igb_ndo_set_vf_spoofchk.patch
backport/backport-include/linux/if.h +4 -0
index f23d2b8..a072579 100644
@@ -37,4 +37,8 @@
 #define IFF_SUPP_NOFCS	0x80000		/* device supports sending custom FCS */
 #endif
 
+#ifndef IFF_UNICAST_FLT
+#define IFF_UNICAST_FLT	0x20000		/* Supports unicast filtering	*/
+#endif
+
 #endif	/* _BACKPORT_LINUX_IF_H */
backport/backport-include/linux/pci.h +8 -0
index 5201f1b..ae8dafd 100644
@@ -178,6 +178,14 @@ 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,2,0)
+enum backport_pci_dev_flags {
+	/* Provide indication device is assigned by a Virtual Machine Manager */
+	PCI_DEV_FLAGS_ASSIGNED = (__force pci_dev_flags_t) 4,
+};
+#define pci_dev_flags LINUX_BACKPORT(pci_dev_flags);
+#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3,2,0) */
+
 #if LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0)
 #define pci_sriov_set_totalvfs LINUX_BACKPORT(pci_sriov_set_totalvfs)
 int pci_sriov_set_totalvfs(struct pci_dev *dev, u16 numvfs);
backport/backport-include/linux/skbuff.h +19 -0
index c1b2753..2207e7e 100644
@@ -224,6 +224,25 @@ static inline void skb_queue_splice_tail(const struct sk_buff_head *list,
 		     skb = skb->next)
 #endif /* < 2.6.28 */
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,2,0)
+static inline void skb_frag_size_sub(skb_frag_t *frag, int delta)
+{
+	frag->size -= delta;
+}
+
+/**
+ * skb_frag_address - gets the address of the data contained in a paged fragment
+ * @frag: the paged fragment buffer
+ *
+ * Returns the address of the data within @frag. The page must already
+ * be mapped.
+ */
+static inline void *skb_frag_address(const skb_frag_t *frag)
+{
+	return page_address(skb_frag_page(frag)) + frag->page_offset;
+}
+#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3,2,0) */
+
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,0) && LINUX_VERSION_CODE < KERNEL_VERSION(3,6,0)
 /**
  *	__skb_alloc_pages - allocate pages for ps-rx on a skb and preserve pfmemalloc data
patches/collateral-evolutions/network/84-ethernet/0011-igb_ethtool_ops.patch new file +31 -0
new file mode 100644
index 0000000..de1d07c
@@ -0,0 +1,31 @@
+diff --git a/drivers/net/ethernet/intel/igb/igb_ethtool.c b/drivers/net/ethernet/intel/igb/igb_ethtool.c
+index 5e519ce..9f61f1d 100644
+--- a/drivers/net/ethernet/intel/igb/igb_ethtool.c
++++ b/drivers/net/ethernet/intel/igb/igb_ethtool.c
+@@ -2408,6 +2408,7 @@ static int igb_get_ts_info(struct net_device *dev,
+ }
+ #endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0) */
+ 
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0)
+ static int igb_get_rss_hash_opts(struct igb_adapter *adapter,
+ 				 struct ethtool_rxnfc *cmd)
+ {
+@@ -2586,6 +2587,7 @@ static int igb_set_rxnfc(struct net_device *dev, struct ethtool_rxnfc *cmd)
+ 
+ 	return ret;
+ }
++#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0) */
+ 
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0)
+ static int igb_get_eee(struct net_device *netdev, struct ethtool_eee *edata)
+@@ -3011,8 +3013,10 @@ static const struct ethtool_ops igb_ethtool_ops = {
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0)
+ 	.get_ts_info		= igb_get_ts_info,
+ #endif
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0)
+ 	.get_rxnfc		= igb_get_rxnfc,
+ 	.set_rxnfc		= igb_set_rxnfc,
++#endif
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0)
+ 	.get_eee		= igb_get_eee,
+ 	.set_eee		= igb_set_eee,
patches/collateral-evolutions/network/84-ethernet/0012-igb_ndo_set_vf_spoofchk.patch new file +51 -0

51 lines not on this page · raw message

Signature · 1 line
1.7.1
#12 lore raw

PATCH v4 12/12 backports: enable igb and add defconfig

In reply to Stefan Assmann

Add defconfig and necessary files to copy-list.

---
 backport/defconfigs/igb |    2 ++
 copy-list               |    4 ++++
 2 files changed, 6 insertions(+), 0 deletions(-)
 create mode 100644 backport/defconfigs/igb
backport/defconfigs/igb new file +2 -0
new file mode 100644
index 0000000..8045257
@@ -0,0 +1,2 @@
+CPTCFG_NET_VENDOR_INTEL=y
+CPTCFG_IGB=m
copy-list +4 -0
index c516135..bde95a1 100644
@@ -101,6 +101,10 @@ drivers/net/ethernet/broadcom/Makefile
 drivers/net/ethernet/broadcom/b44.c
 drivers/net/ethernet/broadcom/b44.h
 
+drivers/net/ethernet/intel/Kconfig
+drivers/net/ethernet/intel/Makefile
+drivers/net/ethernet/intel/igb/
+
 # wwan drivers
 include/uapi/linux/usb/cdc.h
 include/uapi/linux/usb/cdc-wdm.h
Signature · 1 line
1.7.1
#13 lore raw
In reply to Stefan Assmann
Quoted 16 lines · Stefan Assmann

This is a patchset for inclusion of the Intel igb wired ethernet driver. Patches are split per kernel release that makes it easier to review the changes and gives a nice history of what was necessary for each release. Also the igb driver changes have been split up into individual patches in patches/collateral-evolutions/network/84-ethernet. This and file names are up for discussion, suggestions welcome.

v2:
Instead of backporting struct ethtool_ops the code in igb has been wrapped in if LINUX_VERSION_CODE statements. This will result in higher maintenance because of conflicts with future upstream igb changes but it seems there's no better solution so far.
The patches in patches/collateral-evolutions/network/84-ethernet have been kept separate but with a leading number to make sure they get applied in the correct order.
The code that activates igb has been pushed to the end of the series to

Quoted 9 lines

not break any bisecting.
v3:
Use original struct ptp_clock and handle ptp_clock_register() with a define. Also removed unused function warnings by wrapping the code in if LINUX_VERSION_CODE statements.
v4:
Add several LINUX_BACKPORT defines to prevent possible clashes with distro backports. Patches rebased and tested against next-20140124.

Thank you Stefan for the patches.

I applied them with some changes. backports did not compile on some older kernels, because include/linux/u64_stats_sync.h was missing there. I also fixed some problems on CentOS 6.5 and Suse SLES 11 SP3. Some strutes that are not used were removed too.

Hauke

#14 lore raw
Quoted 27 lines · Hauke Mehrtens
Quoted 16 lines · Stefan Assmann

This is a patchset for inclusion of the Intel igb wired ethernet driver. Patches are split per kernel release that makes it easier to review the changes and gives a nice history of what was necessary for each release. Also the igb driver changes have been split up into individual patches in patches/collateral-evolutions/network/84-ethernet. This and file names are up for discussion, suggestions welcome.

v2:
Instead of backporting struct ethtool_ops the code in igb has been wrapped in if LINUX_VERSION_CODE statements. This will result in higher maintenance because of conflicts with future upstream igb changes but it seems there's no better solution so far.
The patches in patches/collateral-evolutions/network/84-ethernet have been kept separate but with a leading number to make sure they get applied in the correct order.
The code that activates igb has been pushed to the end of the series to

Quoted 9 lines

not break any bisecting.
v3:
Use original struct ptp_clock and handle ptp_clock_register() with a define. Also removed unused function warnings by wrapping the code in if LINUX_VERSION_CODE statements.
v4:
Add several LINUX_BACKPORT defines to prevent possible clashes with distro backports. Patches rebased and tested against next-20140124.

Quoted 6 lines

Thank you Stefan for the patches.

I applied them with some changes. backports did not compile on some older kernels, because include/linux/u64_stats_sync.h was missing there. I also fixed some problems on CentOS 6.5 and Suse SLES 11 SP3. Some strutes that are not used were removed too.

Great! Thanks a lot. I'll take a look at the changes. I didn't see any trouble when running ckmake which makes me wonder if I missed out on any testing I could've run.

Stefan