Netdev List
 help / color / mirror / Atom feed
* under-performing bonded interfaces
From: Simon Chen @ 2011-11-16 23:44 UTC (permalink / raw)
  To: netdev

Hello,

I am bonding two 10G interfaces (ixgbe driver) under Debian 6.0.2. The
bonded interface for some reason can only achieve 12Gbps aggregated
throughput. If a single NIC is used, I can get close to 10Gbps.

I've tried different bonding modes (balance-xor, 802.3ad, balance-alb,
balance-tlb), and different xmit hashing policy (layer2, layer2+3,
layer3+4). I've increased all types of kernel parameters for TCP. MTU
on the physical and bonded interface is set to 8000 and 9000. The MTU
on the switch is 9200+.

Instead of nperf (a single server), I also tried my own TCP sender and
receivers.

All those done, still only 12Gbps... How can I really achieve close to 20Gbps?

(I also tried cutting loose the switch in between, and also getting
12G, so not an issue with the switch.)

Thanks.
-Simon

^ permalink raw reply

* Re: [PATCH V2] Add ethtool to mii advertisment conversion helpers
From: David Miller @ 2011-11-16 23:40 UTC (permalink / raw)
  To: mcarlson; +Cc: netdev, mchan
In-Reply-To: <1321486057-30968-1-git-send-email-mcarlson@broadcom.com>

From: "Matt Carlson" <mcarlson@broadcom.com>
Date: Wed, 16 Nov 2011 15:27:37 -0800

> Translating between ethtool advertisement settings and MII
> advertisements are common operations for ethernet drivers.  This patch
> adds a set of helper functions that implements the conversion.  The
> patch then modifies a couple of the drivers to use the new functions.
> 
> Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
> Signed-off-by: Michael Chan <mchan@broadcom.com>

Looks better, applied, thanks :)

^ permalink raw reply

* Re: [PATCH v5 5/9] net: Define enum for net device features.
From: Michał Mirosław @ 2011-11-16 23:34 UTC (permalink / raw)
  To: Ben Hutchings; +Cc: netdev, David S. Miller
In-Reply-To: <1321483177.2709.28.camel@bwh-desktop>

On Wed, Nov 16, 2011 at 10:39:37PM +0000, Ben Hutchings wrote:
> On Wed, 2011-11-16 at 02:29 +0100, Michał Mirosław wrote:
> > Define feature values by bit position instead of direct 2**i values
> > and force the values to be of type netdev_features_t.
> > 
> > Cleaned and extended from patch by Mahesh Bandewar <maheshb@google.com>:
> > + added netdev_features_t casts
> > + included bits under NETIF_F_GSO_MASK
> > + moved feature #defines out of struct net_device definition
> > 
> > Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
> > ---
> >  include/linux/netdev_features.h |  129 +++++++++++++++++++++++++++-----------
> >  1 files changed, 91 insertions(+), 38 deletions(-)
> > 
> > diff --git a/include/linux/netdev_features.h b/include/linux/netdev_features.h
> > index af52381..04ac8f8 100644
> > --- a/include/linux/netdev_features.h
> > +++ b/include/linux/netdev_features.h
> [...]
> > +	/**/NETIF_F_GSO_SHIFT,		/* keep the order of SKB_GSO_* bits */
> > +	NETIF_F_TSO_BIT			/* ... TCPv4 segmentation */
> > +		= NETIF_F_GSO_SHIFT,
> > +	NETIF_F_UFO_BIT,		/* ... UDPv4 fragmentation */
> > +	NETIF_F_GSO_ROBUST_BIT,		/* ... ->SKB_GSO_DODGY */
> > +	NETIF_F_TSO_ECN_BIT,		/* ... TCP ECN support */
> > +	NETIF_F_TSO6_BIT,		/* ... TCPv6 segmentation */
> > +	NETIF_F_FSO_BIT,		/* ... FCoE segmentation */
> > +	NETIF_F_GSO_RESERVED1,		/* ... free (fill GSO_MASK to 8 bits) */
> > +	/**/NETIF_F_GSO_LAST,		/* [can't be last bit, see GSO_MASK] */
> > +	NETIF_F_GSO_RESERVED2		/* ... free (fill GSO_MASK to 8 bits) */
> > +		= NETIF_F_GSO_LAST,
> >  
> > -/* Segmentation offload features */
> > -#define NETIF_F_GSO_SHIFT	16
> > -#define NETIF_F_GSO_MASK	0x00ff0000
> > -#define NETIF_F_TSO		(SKB_GSO_TCPV4 << NETIF_F_GSO_SHIFT)
> > -#define NETIF_F_UFO		(SKB_GSO_UDP << NETIF_F_GSO_SHIFT)
> > -#define NETIF_F_GSO_ROBUST	(SKB_GSO_DODGY << NETIF_F_GSO_SHIFT)
> > -#define NETIF_F_TSO_ECN		(SKB_GSO_TCP_ECN << NETIF_F_GSO_SHIFT)
> > -#define NETIF_F_TSO6		(SKB_GSO_TCPV6 << NETIF_F_GSO_SHIFT)
> > -#define NETIF_F_FSO		(SKB_GSO_FCOE << NETIF_F_GSO_SHIFT)
> [...]
> 
> You should either add BUILD_BUG_ON()s somewhere to ensure that the
> netdev feature and skb GSO flags remain in sync, or redefine the skb GSO
> flags using the netdev feature flags (which I thought was the reason for
> moving features to their own header).

Main motiviation for the moving out of features to separate headers was
to avoid circular inclusion of linux/netdevice.h from linux/skbuff.h.
We get readability for free.

BUILD_BUG_ON() is a good idea. It should go to skbuff.h and as separate
patch as it's something new and independent.

Best Regards,
Michał Mirosław

^ permalink raw reply

* Re: [net-next 0/8][pull request] Intel Wired LAN Driver Updates
From: David Miller @ 2011-11-16 23:32 UTC (permalink / raw)
  To: jeffrey.t.kirsher; +Cc: netdev, gospo, sassmann
In-Reply-To: <1321485682.2304.17.camel@jtkirshe-mobl>

From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Wed, 16 Nov 2011 15:21:22 -0800

> On Wed, 2011-11-16 at 15:12 -0800, David Miller wrote:
>> From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
>> Date: Wed, 16 Nov 2011 04:51:24 -0800
>> 
>> > The following are changes since commit 229a66e3bec97563aa92e25dfe0bc60b0d468619:
>> >   IPv6: Removing unnecessary NULL checks.
>> > and are available in the git repository at:
>> >   git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-organize master
>> 
>> This tree doesn't exist.
> 
> That was supposed to be
> 
> git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master

That works better, pulled, thanks!

^ permalink raw reply

* [PATCH V2] Add ethtool to mii advertisment conversion helpers
From: Matt Carlson @ 2011-11-16 23:27 UTC (permalink / raw)
  To: davem; +Cc: netdev, mcarlson, Michael Chan

Translating between ethtool advertisement settings and MII
advertisements are common operations for ethernet drivers.  This patch
adds a set of helper functions that implements the conversion.  The
patch then modifies a couple of the drivers to use the new functions.

Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
Signed-off-by: Michael Chan <mchan@broadcom.com>
---

Changes in V2:
	* Added '#include <linux/ethtool.h>' to mii.h

 drivers/net/ethernet/broadcom/bnx2.c |   15 +---
 drivers/net/ethernet/broadcom/tg3.c  |   53 +++--------
 drivers/net/ethernet/sun/niu.c       |   15 +---
 drivers/net/mii.c                    |   48 ++--------
 drivers/net/phy/phy_device.c         |   20 +----
 include/linux/mii.h                  |  166 ++++++++++++++++++++++++++++++++++
 6 files changed, 197 insertions(+), 120 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/bnx2.c b/drivers/net/ethernet/broadcom/bnx2.c
index 32d1f92..e82b981 100644
--- a/drivers/net/ethernet/broadcom/bnx2.c
+++ b/drivers/net/ethernet/broadcom/bnx2.c
@@ -2064,21 +2064,12 @@ __acquires(&bp->phy_lock)
 		bnx2_read_phy(bp, MII_CTRL1000, &adv1000_reg);
 		adv1000_reg &= PHY_ALL_1000_SPEED;
 
-		if (bp->advertising & ADVERTISED_10baseT_Half)
-			new_adv_reg |= ADVERTISE_10HALF;
-		if (bp->advertising & ADVERTISED_10baseT_Full)
-			new_adv_reg |= ADVERTISE_10FULL;
-		if (bp->advertising & ADVERTISED_100baseT_Half)
-			new_adv_reg |= ADVERTISE_100HALF;
-		if (bp->advertising & ADVERTISED_100baseT_Full)
-			new_adv_reg |= ADVERTISE_100FULL;
-		if (bp->advertising & ADVERTISED_1000baseT_Full)
-			new_adv1000_reg |= ADVERTISE_1000FULL;
-
+		new_adv_reg = ethtool_adv_to_mii_100bt(bp->advertising);
 		new_adv_reg |= ADVERTISE_CSMA;
-
 		new_adv_reg |= bnx2_phy_get_pause_adv(bp);
 
+		new_adv1000_reg |= ethtool_adv_to_mii_1000T(bp->advertising);
+
 		if ((adv1000_reg != new_adv1000_reg) ||
 			(adv_reg != new_adv_reg) ||
 			((bmcr & BMCR_ANENABLE) == 0)) {
diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c
index cd36234..b329459 100644
--- a/drivers/net/ethernet/broadcom/tg3.c
+++ b/drivers/net/ethernet/broadcom/tg3.c
@@ -3594,15 +3594,7 @@ static int tg3_phy_autoneg_cfg(struct tg3 *tp, u32 advertise, u32 flowctrl)
 	u32 val, new_adv;
 
 	new_adv = ADVERTISE_CSMA;
-	if (advertise & ADVERTISED_10baseT_Half)
-		new_adv |= ADVERTISE_10HALF;
-	if (advertise & ADVERTISED_10baseT_Full)
-		new_adv |= ADVERTISE_10FULL;
-	if (advertise & ADVERTISED_100baseT_Half)
-		new_adv |= ADVERTISE_100HALF;
-	if (advertise & ADVERTISED_100baseT_Full)
-		new_adv |= ADVERTISE_100FULL;
-
+	new_adv |= ethtool_adv_to_mii_100bt(advertise);
 	new_adv |= tg3_advert_flowctrl_1000T(flowctrl);
 
 	err = tg3_writephy(tp, MII_ADVERTISE, new_adv);
@@ -3612,11 +3604,7 @@ static int tg3_phy_autoneg_cfg(struct tg3 *tp, u32 advertise, u32 flowctrl)
 	if (tp->phy_flags & TG3_PHYFLG_10_100_ONLY)
 		goto done;
 
-	new_adv = 0;
-	if (advertise & ADVERTISED_1000baseT_Half)
-		new_adv |= ADVERTISE_1000HALF;
-	if (advertise & ADVERTISED_1000baseT_Full)
-		new_adv |= ADVERTISE_1000FULL;
+	new_adv = ethtool_adv_to_mii_1000T(advertise);
 
 	if (tp->pci_chip_rev_id == CHIPREV_ID_5701_A0 ||
 	    tp->pci_chip_rev_id == CHIPREV_ID_5701_B0)
@@ -3790,14 +3778,7 @@ static int tg3_copper_is_advertising_all(struct tg3 *tp, u32 mask)
 {
 	u32 adv_reg, all_mask = 0;
 
-	if (mask & ADVERTISED_10baseT_Half)
-		all_mask |= ADVERTISE_10HALF;
-	if (mask & ADVERTISED_10baseT_Full)
-		all_mask |= ADVERTISE_10FULL;
-	if (mask & ADVERTISED_100baseT_Half)
-		all_mask |= ADVERTISE_100HALF;
-	if (mask & ADVERTISED_100baseT_Full)
-		all_mask |= ADVERTISE_100FULL;
+	all_mask = ethtool_adv_to_mii_100bt(mask);
 
 	if (tg3_readphy(tp, MII_ADVERTISE, &adv_reg))
 		return 0;
@@ -3808,11 +3789,7 @@ static int tg3_copper_is_advertising_all(struct tg3 *tp, u32 mask)
 	if (!(tp->phy_flags & TG3_PHYFLG_10_100_ONLY)) {
 		u32 tg3_ctrl;
 
-		all_mask = 0;
-		if (mask & ADVERTISED_1000baseT_Half)
-			all_mask |= ADVERTISE_1000HALF;
-		if (mask & ADVERTISED_1000baseT_Full)
-			all_mask |= ADVERTISE_1000FULL;
+		all_mask = ethtool_adv_to_mii_1000T(mask);
 
 		if (tg3_readphy(tp, MII_CTRL1000, &tg3_ctrl))
 			return 0;
@@ -4903,23 +4880,19 @@ static int tg3_setup_fiber_mii_phy(struct tg3 *tp, int force_reset)
 	    (tp->phy_flags & TG3_PHYFLG_PARALLEL_DETECT)) {
 		/* do nothing, just check for link up at the end */
 	} else if (tp->link_config.autoneg == AUTONEG_ENABLE) {
-		u32 adv, new_adv;
+		u32 adv, newadv;
 
 		err |= tg3_readphy(tp, MII_ADVERTISE, &adv);
-		new_adv = adv & ~(ADVERTISE_1000XFULL | ADVERTISE_1000XHALF |
-				  ADVERTISE_1000XPAUSE |
-				  ADVERTISE_1000XPSE_ASYM |
-				  ADVERTISE_SLCT);
-
-		new_adv |= tg3_advert_flowctrl_1000X(tp->link_config.flowctrl);
+		newadv = adv & ~(ADVERTISE_1000XFULL | ADVERTISE_1000XHALF |
+				 ADVERTISE_1000XPAUSE |
+				 ADVERTISE_1000XPSE_ASYM |
+				 ADVERTISE_SLCT);
 
-		if (tp->link_config.advertising & ADVERTISED_1000baseT_Half)
-			new_adv |= ADVERTISE_1000XHALF;
-		if (tp->link_config.advertising & ADVERTISED_1000baseT_Full)
-			new_adv |= ADVERTISE_1000XFULL;
+		newadv |= tg3_advert_flowctrl_1000X(tp->link_config.flowctrl);
+		newadv |= ethtool_adv_to_mii_1000X(tp->link_config.advertising);
 
-		if ((new_adv != adv) || !(bmcr & BMCR_ANENABLE)) {
-			tg3_writephy(tp, MII_ADVERTISE, new_adv);
+		if ((newadv != adv) || !(bmcr & BMCR_ANENABLE)) {
+			tg3_writephy(tp, MII_ADVERTISE, newadv);
 			bmcr |= BMCR_ANENABLE | BMCR_ANRESTART;
 			tg3_writephy(tp, MII_BMCR, bmcr);
 
diff --git a/drivers/net/ethernet/sun/niu.c b/drivers/net/ethernet/sun/niu.c
index 3ebeb9d..9997be5 100644
--- a/drivers/net/ethernet/sun/niu.c
+++ b/drivers/net/ethernet/sun/niu.c
@@ -1151,19 +1151,8 @@ static int link_status_mii(struct niu *np, int *link_up_p)
 		supported |= SUPPORTED_1000baseT_Full;
 	lp->supported = supported;
 
-	advertising = 0;
-	if (advert & ADVERTISE_10HALF)
-		advertising |= ADVERTISED_10baseT_Half;
-	if (advert & ADVERTISE_10FULL)
-		advertising |= ADVERTISED_10baseT_Full;
-	if (advert & ADVERTISE_100HALF)
-		advertising |= ADVERTISED_100baseT_Half;
-	if (advert & ADVERTISE_100FULL)
-		advertising |= ADVERTISED_100baseT_Full;
-	if (ctrl1000 & ADVERTISE_1000HALF)
-		advertising |= ADVERTISED_1000baseT_Half;
-	if (ctrl1000 & ADVERTISE_1000FULL)
-		advertising |= ADVERTISED_1000baseT_Full;
+	advertising = mii_adv_to_ethtool_100bt(advert);
+	advertising |= mii_adv_to_ethtool_1000T(ctrl1000);
 
 	if (bmcr & BMCR_ANENABLE) {
 		int neg, neg1000;
diff --git a/drivers/net/mii.c b/drivers/net/mii.c
index c62e781..d0a2962 100644
--- a/drivers/net/mii.c
+++ b/drivers/net/mii.c
@@ -41,20 +41,8 @@ static u32 mii_get_an(struct mii_if_info *mii, u16 addr)
 	advert = mii->mdio_read(mii->dev, mii->phy_id, addr);
 	if (advert & LPA_LPACK)
 		result |= ADVERTISED_Autoneg;
-	if (advert & ADVERTISE_10HALF)
-		result |= ADVERTISED_10baseT_Half;
-	if (advert & ADVERTISE_10FULL)
-		result |= ADVERTISED_10baseT_Full;
-	if (advert & ADVERTISE_100HALF)
-		result |= ADVERTISED_100baseT_Half;
-	if (advert & ADVERTISE_100FULL)
-		result |= ADVERTISED_100baseT_Full;
-	if (advert & ADVERTISE_PAUSE_CAP)
-		result |= ADVERTISED_Pause;
-	if (advert & ADVERTISE_PAUSE_ASYM)
-		result |= ADVERTISED_Asym_Pause;
-
-	return result;
+
+	return result | mii_adv_to_ethtool_100bt(advert);
 }
 
 /**
@@ -104,19 +92,13 @@ int mii_ethtool_gset(struct mii_if_info *mii, struct ethtool_cmd *ecmd)
 		ecmd->autoneg = AUTONEG_ENABLE;
 
 		ecmd->advertising |= mii_get_an(mii, MII_ADVERTISE);
-		if (ctrl1000 & ADVERTISE_1000HALF)
-			ecmd->advertising |= ADVERTISED_1000baseT_Half;
-		if (ctrl1000 & ADVERTISE_1000FULL)
-			ecmd->advertising |= ADVERTISED_1000baseT_Full;
+		if (mii->supports_gmii)
+			ecmd->advertising |= mii_adv_to_ethtool_1000T(ctrl1000);
 
 		if (bmsr & BMSR_ANEGCOMPLETE) {
 			ecmd->lp_advertising = mii_get_an(mii, MII_LPA);
-			if (stat1000 & LPA_1000HALF)
-				ecmd->lp_advertising |=
-					ADVERTISED_1000baseT_Half;
-			if (stat1000 & LPA_1000FULL)
-				ecmd->lp_advertising |=
-					ADVERTISED_1000baseT_Full;
+			ecmd->lp_advertising |=
+					     mii_lpa_to_ethtool_1000T(stat1000);
 		} else {
 			ecmd->lp_advertising = 0;
 		}
@@ -204,20 +186,10 @@ int mii_ethtool_sset(struct mii_if_info *mii, struct ethtool_cmd *ecmd)
 			advert2 = mii->mdio_read(dev, mii->phy_id, MII_CTRL1000);
 			tmp2 = advert2 & ~(ADVERTISE_1000HALF | ADVERTISE_1000FULL);
 		}
-		if (ecmd->advertising & ADVERTISED_10baseT_Half)
-			tmp |= ADVERTISE_10HALF;
-		if (ecmd->advertising & ADVERTISED_10baseT_Full)
-			tmp |= ADVERTISE_10FULL;
-		if (ecmd->advertising & ADVERTISED_100baseT_Half)
-			tmp |= ADVERTISE_100HALF;
-		if (ecmd->advertising & ADVERTISED_100baseT_Full)
-			tmp |= ADVERTISE_100FULL;
-		if (mii->supports_gmii) {
-			if (ecmd->advertising & ADVERTISED_1000baseT_Half)
-				tmp2 |= ADVERTISE_1000HALF;
-			if (ecmd->advertising & ADVERTISED_1000baseT_Full)
-				tmp2 |= ADVERTISE_1000FULL;
-		}
+		tmp |= ethtool_adv_to_mii_100bt(ecmd->advertising);
+
+		if (mii->supports_gmii)
+			tmp2 |= ethtool_adv_to_mii_1000T(ecmd->advertising);
 		if (advert != tmp) {
 			mii->mdio_write(dev, mii->phy_id, MII_ADVERTISE, tmp);
 			mii->advertising = tmp;
diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
index 83a5a5a..edb905f 100644
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
@@ -563,20 +563,9 @@ static int genphy_config_advert(struct phy_device *phydev)
 	if (adv < 0)
 		return adv;
 
-	adv &= ~(ADVERTISE_ALL | ADVERTISE_100BASE4 | ADVERTISE_PAUSE_CAP | 
+	adv &= ~(ADVERTISE_ALL | ADVERTISE_100BASE4 | ADVERTISE_PAUSE_CAP |
 		 ADVERTISE_PAUSE_ASYM);
-	if (advertise & ADVERTISED_10baseT_Half)
-		adv |= ADVERTISE_10HALF;
-	if (advertise & ADVERTISED_10baseT_Full)
-		adv |= ADVERTISE_10FULL;
-	if (advertise & ADVERTISED_100baseT_Half)
-		adv |= ADVERTISE_100HALF;
-	if (advertise & ADVERTISED_100baseT_Full)
-		adv |= ADVERTISE_100FULL;
-	if (advertise & ADVERTISED_Pause)
-		adv |= ADVERTISE_PAUSE_CAP;
-	if (advertise & ADVERTISED_Asym_Pause)
-		adv |= ADVERTISE_PAUSE_ASYM;
+	adv |= ethtool_adv_to_mii_100bt(advertise);
 
 	if (adv != oldadv) {
 		err = phy_write(phydev, MII_ADVERTISE, adv);
@@ -595,10 +584,7 @@ static int genphy_config_advert(struct phy_device *phydev)
 			return adv;
 
 		adv &= ~(ADVERTISE_1000FULL | ADVERTISE_1000HALF);
-		if (advertise & SUPPORTED_1000baseT_Half)
-			adv |= ADVERTISE_1000HALF;
-		if (advertise & SUPPORTED_1000baseT_Full)
-			adv |= ADVERTISE_1000FULL;
+		adv |= ethtool_adv_to_mii_1000T(advertise);
 
 		if (adv != oldadv) {
 			err = phy_write(phydev, MII_CTRL1000, adv);
diff --git a/include/linux/mii.h b/include/linux/mii.h
index 2774823..6697b91 100644
--- a/include/linux/mii.h
+++ b/include/linux/mii.h
@@ -9,6 +9,7 @@
 #define __LINUX_MII_H__
 
 #include <linux/types.h>
+#include <linux/ethtool.h>
 
 /* Generic MII registers. */
 #define MII_BMCR		0x00	/* Basic mode control register */
@@ -240,6 +241,171 @@ static inline unsigned int mii_duplex (unsigned int duplex_lock,
 }
 
 /**
+ * ethtool_adv_to_mii_100bt
+ * @ethadv: the ethtool advertisement settings
+ *
+ * A small helper function that translates ethtool advertisement
+ * settings to phy autonegotiation advertisements for the
+ * MII_ADVERTISE register.
+ */
+static inline u32 ethtool_adv_to_mii_100bt(u32 ethadv)
+{
+	u32 result = 0;
+
+	if (ethadv & ADVERTISED_10baseT_Half)
+		result |= ADVERTISE_10HALF;
+	if (ethadv & ADVERTISED_10baseT_Full)
+		result |= ADVERTISE_10FULL;
+	if (ethadv & ADVERTISED_100baseT_Half)
+		result |= ADVERTISE_100HALF;
+	if (ethadv & ADVERTISED_100baseT_Full)
+		result |= ADVERTISE_100FULL;
+	if (ethadv & ADVERTISED_Pause)
+		result |= ADVERTISE_PAUSE_CAP;
+	if (ethadv & ADVERTISED_Asym_Pause)
+		result |= ADVERTISE_PAUSE_ASYM;
+
+	return result;
+}
+
+/**
+ * mii_adv_to_ethtool_100bt
+ * @adv: value of the MII_ADVERTISE register
+ *
+ * A small helper function that translates MII_ADVERTISE bits
+ * to ethtool advertisement settings.
+ */
+static inline u32 mii_adv_to_ethtool_100bt(u32 adv)
+{
+	u32 result = 0;
+
+	if (adv & ADVERTISE_10HALF)
+		result |= ADVERTISED_10baseT_Half;
+	if (adv & ADVERTISE_10FULL)
+		result |= ADVERTISED_10baseT_Full;
+	if (adv & ADVERTISE_100HALF)
+		result |= ADVERTISED_100baseT_Half;
+	if (adv & ADVERTISE_100FULL)
+		result |= ADVERTISED_100baseT_Full;
+	if (adv & ADVERTISE_PAUSE_CAP)
+		result |= ADVERTISED_Pause;
+	if (adv & ADVERTISE_PAUSE_ASYM)
+		result |= ADVERTISED_Asym_Pause;
+
+	return result;
+}
+
+/**
+ * ethtool_adv_to_mii_1000T
+ * @ethadv: the ethtool advertisement settings
+ *
+ * A small helper function that translates ethtool advertisement
+ * settings to phy autonegotiation advertisements for the
+ * MII_CTRL1000 register when in 1000T mode.
+ */
+static inline u32 ethtool_adv_to_mii_1000T(u32 ethadv)
+{
+	u32 result = 0;
+
+	if (ethadv & ADVERTISED_1000baseT_Half)
+		result |= ADVERTISE_1000HALF;
+	if (ethadv & ADVERTISED_1000baseT_Full)
+		result |= ADVERTISE_1000FULL;
+
+	return result;
+}
+
+/**
+ * mii_adv_to_ethtool_1000T
+ * @adv: value of the MII_CTRL1000 register
+ *
+ * A small helper function that translates MII_CTRL1000
+ * bits, when in 1000Base-T mode, to ethtool
+ * advertisement settings.
+ */
+static inline u32 mii_adv_to_ethtool_1000T(u32 adv)
+{
+	u32 result = 0;
+
+	if (adv & ADVERTISE_1000HALF)
+		result |= ADVERTISED_1000baseT_Half;
+	if (adv & ADVERTISE_1000FULL)
+		result |= ADVERTISED_1000baseT_Full;
+
+	return result;
+}
+
+#define mii_lpa_to_ethtool_100bt(lpa)	mii_adv_to_ethtool_100bt(lpa)
+
+/**
+ * mii_lpa_to_ethtool_1000T
+ * @adv: value of the MII_STAT1000 register
+ *
+ * A small helper function that translates MII_STAT1000
+ * bits, when in 1000Base-T mode, to ethtool
+ * advertisement settings.
+ */
+static inline u32 mii_lpa_to_ethtool_1000T(u32 lpa)
+{
+	u32 result = 0;
+
+	if (lpa & LPA_1000HALF)
+		result |= ADVERTISED_1000baseT_Half;
+	if (lpa & LPA_1000FULL)
+		result |= ADVERTISED_1000baseT_Full;
+
+	return result;
+}
+
+/**
+ * ethtool_adv_to_mii_1000X
+ * @ethadv: the ethtool advertisement settings
+ *
+ * A small helper function that translates ethtool advertisement
+ * settings to phy autonegotiation advertisements for the
+ * MII_CTRL1000 register when in 1000Base-X mode.
+ */
+static inline u32 ethtool_adv_to_mii_1000X(u32 ethadv)
+{
+	u32 result = 0;
+
+	if (ethadv & ADVERTISED_1000baseT_Half)
+		result |= ADVERTISE_1000XHALF;
+	if (ethadv & ADVERTISED_1000baseT_Full)
+		result |= ADVERTISE_1000XFULL;
+	if (ethadv & ADVERTISED_Pause)
+		result |= ADVERTISE_1000XPAUSE;
+	if (ethadv & ADVERTISED_Asym_Pause)
+		result |= ADVERTISE_1000XPSE_ASYM;
+
+	return result;
+}
+
+/**
+ * mii_adv_to_ethtool_1000X
+ * @adv: value of the MII_CTRL1000 register
+ *
+ * A small helper function that translates MII_CTRL1000
+ * bits, when in 1000Base-X mode, to ethtool
+ * advertisement settings.
+ */
+static inline u32 mii_adv_to_ethtool_1000X(u32 adv)
+{
+	u32 result = 0;
+
+	if (adv & ADVERTISE_1000XHALF)
+		result |= ADVERTISED_1000baseT_Half;
+	if (adv & ADVERTISE_1000XFULL)
+		result |= ADVERTISED_1000baseT_Full;
+	if (adv & ADVERTISE_1000XPAUSE)
+		result |= ADVERTISED_Pause;
+	if (adv & ADVERTISE_1000XPSE_ASYM)
+		result |= ADVERTISED_Asym_Pause;
+
+	return result;
+}
+
+/**
  * mii_advertise_flowctrl - get flow control advertisement flags
  * @cap: Flow control capabilities (FLOW_CTRL_RX, FLOW_CTRL_TX or both)
  */
-- 
1.7.3.4

^ permalink raw reply related

* Re: [net-next 0/8][pull request] Intel Wired LAN Driver Updates
From: Jeff Kirsher @ 2011-11-16 23:21 UTC (permalink / raw)
  To: David Miller
  Cc: netdev@vger.kernel.org, gospo@redhat.com, sassmann@redhat.com
In-Reply-To: <20111116.181256.1949478047386386920.davem@davemloft.net>

[-- Attachment #1: Type: text/plain, Size: 566 bytes --]

On Wed, 2011-11-16 at 15:12 -0800, David Miller wrote:
> From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
> Date: Wed, 16 Nov 2011 04:51:24 -0800
> 
> > The following are changes since commit 229a66e3bec97563aa92e25dfe0bc60b0d468619:
> >   IPv6: Removing unnecessary NULL checks.
> > and are available in the git repository at:
> >   git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-organize master
> 
> This tree doesn't exist.

That was supposed to be

git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next master

sorry Dave.

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply

* Re: [PATCH v5 7/9] ethtool: prepare for larger netdev_features_t type
From: Michał Mirosław @ 2011-11-16 23:18 UTC (permalink / raw)
  To: Ben Hutchings; +Cc: netdev, David S. Miller
In-Reply-To: <1321483409.2709.31.camel@bwh-desktop>

On Wed, Nov 16, 2011 at 10:43:29PM +0000, Ben Hutchings wrote:
> On Wed, 2011-11-16 at 02:29 +0100, Michał Mirosław wrote:
> > v2:	changed loop in ethtool_set_features() per Ben's suggestion
> > 
> > Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
> Run checkpatch and fix the spacing complaints.  After that, consider
> this:

There are two lines longer than 80 chars, but it won't improve readability
if I split them. No spacing complaints on my run of checkpatch:

WARNING: line over 80 characters
#51: FILE: net/core/ethtool.c:91:
+       BUILD_BUG_ON(ETHTOOL_DEV_FEATURE_WORDS*sizeof(u32) > sizeof(netdev_features_t));

WARNING: line over 80 characters
#57: FILE: net/core/ethtool.c:97:
+               features[i].never_changed = (u32)(NETIF_F_NEVER_CHANGE >> (32*i));

total: 0 errors, 2 warnings, 75 lines checked

/tmp/0007-ethtool-prepare-for-larger-netdev_features_t-type.patch has style problems, please review.

Best Regards,
Michał Mirosław

^ permalink raw reply

* Re: [PATCH] route: add more relaxed option for secure_redirects
From: Flavio Leitner @ 2011-11-16 23:17 UTC (permalink / raw)
  To: David Miller; +Cc: netdev
In-Reply-To: <20111116.170213.1763930566851730338.davem@davemloft.net>

On Wed, 16 Nov 2011 17:02:13 -0500 (EST)
David Miller <davem@davemloft.net> wrote:

> From: Flavio Leitner <fbl@redhat.com>
> Date: Wed, 16 Nov 2011 18:46:12 -0200
> 
> > Thus, the only option at the sender side would be using iptables
> > to change the ICMP redirect source address to be the float address,
> > but that is not working as well. (It isn't passing through -t nat)
> 
> If it's going to mangle the packet in one direct, the only option
> for sane operation is to make the exact reverse transformation in
> the other direction for ICMP messages.
> 
> I'm sorry to be so difficult about this, but this is the only way to
> handle this problem.  If packet mangling is performed to change the
> world, that mangling entity has taken on the responsibility to make
> everything look correct to all entities for the mangled packets
> and any packets generated in response to such mangled packets.
>

I'm sorry, I lost you there. There is no transformation happening in
any side. The iptables is just a work around to force the outgoing
ICMP redirect to use the correct source address (secondary or alias). 

The whole problem is the linux gateway sending ICMP redirects using
*always* the primary address.

fbl

^ permalink raw reply

* Re: [patch -next v2] 6LoWPAN: double free in lowpan_fragment_xmit()
From: David Miller @ 2011-11-16 23:14 UTC (permalink / raw)
  To: alex.bluesman.smirnov
  Cc: dan.carpenter, dbaryshkov, slapin, linux-zigbee-devel, netdev,
	kernel-janitors
In-Reply-To: <CAJmB2rBTHCTcetstpZkNkxX4CAxYF3Sd=Vrg3dmTMDzFQK0vqg@mail.gmail.com>

From: Alexander Smirnov <alex.bluesman.smirnov@gmail.com>
Date: Wed, 16 Nov 2011 11:42:07 +0300

> 2011/11/16 Dan Carpenter <dan.carpenter@oracle.com>:
>> dev_queue_xmit() consumes its own skb, so the call to dev_kfree_skb()
>> in lowpan_fragment_xmit() is a double free.
>>
>> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
 ...
> 
> Acked-by: Alexander Smirnov <alex.bluesman.smirnov@gmail.com>

Applied, thanks.

^ permalink raw reply

* Re: [net-next 0/8][pull request] Intel Wired LAN Driver Updates
From: David Miller @ 2011-11-16 23:12 UTC (permalink / raw)
  To: jeffrey.t.kirsher; +Cc: netdev, gospo, sassmann
In-Reply-To: <1321447892-14381-1-git-send-email-jeffrey.t.kirsher@intel.com>

From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Wed, 16 Nov 2011 04:51:24 -0800

> The following are changes since commit 229a66e3bec97563aa92e25dfe0bc60b0d468619:
>   IPv6: Removing unnecessary NULL checks.
> and are available in the git repository at:
>   git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-organize master

This tree doesn't exist.

^ permalink raw reply

* Re: [PATCH net-next v6 3/9] kbuild: document RPS/XPS network Kconfig options
From: Ben Hutchings @ 2011-11-16 23:12 UTC (permalink / raw)
  To: David Decotigny
  Cc: netdev, linux-kernel, David S. Miller, Ian Campbell, Eric Dumazet,
	Jeff Kirsher, Jiri Pirko, Joe Perches, Szymon Janc, Richard Jones,
	Ayaz Abdulla, Tom Herbert
In-Reply-To: <c7e7b57596f9a06b1c40c8b6e671cc6ac69dd304.1321481064.git.david.decotigny@google.com>

On Wed, 2011-11-16 at 14:15 -0800, David Decotigny wrote:
> This adds a description of RPS/XPS options and allow them to be
> changed at make menuconfig time.

I'm not sure why you think this is necessary.

[...]
>  config RPS
> -	boolean
> +	boolean "Enable Receive Packet Steering"
>  	depends on SMP && SYSFS && USE_GENERIC_SMP_HELPERS
>  	default y
> +	help
> +	  RPS distributes the load of received packet processing
> +	  across multiple CPUs. If unsure, say Y.
>  
>  config RFS_ACCEL
> -	boolean
> +	boolean "Enable Hardware Acceleration of RFS"
>  	depends on RPS && GENERIC_HARDIRQS
>  	select CPU_RMAP
>  	default y
> +	help
> +	  This is the hardware version of RPS. On multi-queue network
> +	  devices, this configures the hardware to distribute the
> +	  received packets across multiple CPUs. If unsure, say Y.
[...]

There is some confusion/conflation between RPS and RFS in both code and
documentation.

RPS originaly referred to spreading out RX packet processing based on a
flow hash.  Most multiqueue devices do this in hardware, which is
commonly referred to as RSS.  RSS can be enabled independently of any
networking core features.

RFS refers to directing RX packet processsing of specific flows based on
where the corresponding sockets have been used.  RFS acceleration means
that the driver and hardware help with this by changing hardware queue
selection for specific flows.

The RPS Kconfig option controls both RPS and RFS, and various references
to 'RPS' in the code really cover RFS as well.

The RFS_ACCEL Kconfig option enables RFS to support acceleration, and
like most offload features it has no effect without a driver that
specifically supports that.  The option only exists to abstract the
slightly odd dependency on GENERIC_HARDIRQS, and I don't think it should
be manually controllable.

Ben.

-- 
Ben Hutchings, Staff Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.

^ permalink raw reply

* Re: [PATCH net-next 0/5] be2net updates
From: David Miller @ 2011-11-16 23:11 UTC (permalink / raw)
  To: padmanabh.ratnakar; +Cc: netdev
In-Reply-To: <3ff176bc-1a62-44d9-a09f-36aa4ee371d9@exht2.ad.emulex.com>

From: Padmanabh Ratnakar <padmanabh.ratnakar@emulex.com>
Date: Wed, 16 Nov 2011 17:31:58 +0530

> Please apply.
> Thanks,
> Padmanabh
> 
> Padmanabh Ratnakar (5):
>   be2net: Fix TX queue create for Lancer
>   be2net: add register dump feature for Lancer
>   be2net: Add EEPROM dump feature for Lancer
>   be2net: Fix VLAN promiscous mode for Lancer
>   be2net: Use V1 query link status command for lancer

All applied, thanks.

^ permalink raw reply

* Re: [PATCH v5 0/9] Cleanup and extension of netdev features
From: David Miller @ 2011-11-16 23:06 UTC (permalink / raw)
  To: mirq-linux; +Cc: netdev
In-Reply-To: <20111116.174936.1998571821116555319.davem@davemloft.net>

From: David Miller <davem@davemloft.net>
Date: Wed, 16 Nov 2011 17:49:36 -0500 (EST)

> All applied, thanks a lot for doing this work.

Just FYI, I applied the following to fix the missed cases in
the infiniband layer.

--------------------
[PATCH] infiniband: Update net drivers for netdev_features_t changes.

Signed-off-by: David S. Miller <davem@davemloft.net>
---
 drivers/infiniband/hw/nes/nes_nic.c       |    6 +++---
 drivers/infiniband/ulp/ipoib/ipoib_main.c |    2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/infiniband/hw/nes/nes_nic.c b/drivers/infiniband/hw/nes/nes_nic.c
index c00d2f3..4b3fa71 100644
--- a/drivers/infiniband/hw/nes/nes_nic.c
+++ b/drivers/infiniband/hw/nes/nes_nic.c
@@ -1589,7 +1589,7 @@ static const struct ethtool_ops nes_ethtool_ops = {
 	.set_pauseparam = nes_netdev_set_pauseparam,
 };
 
-static void nes_vlan_mode(struct net_device *netdev, struct nes_device *nesdev, u32 features)
+static void nes_vlan_mode(struct net_device *netdev, struct nes_device *nesdev, netdev_features_t features)
 {
 	struct nes_adapter *nesadapter = nesdev->nesadapter;
 	u32 u32temp;
@@ -1610,7 +1610,7 @@ static void nes_vlan_mode(struct net_device *netdev, struct nes_device *nesdev,
 	spin_unlock_irqrestore(&nesadapter->phy_lock, flags);
 }
 
-static u32 nes_fix_features(struct net_device *netdev, u32 features)
+static netdev_features_t nes_fix_features(struct net_device *netdev, netdev_features_t features)
 {
 	/*
 	 * Since there is no support for separate rx/tx vlan accel
@@ -1624,7 +1624,7 @@ static u32 nes_fix_features(struct net_device *netdev, u32 features)
 	return features;
 }
 
-static int nes_set_features(struct net_device *netdev, u32 features)
+static int nes_set_features(struct net_device *netdev, netdev_features_t features)
 {
 	struct nes_vnic *nesvnic = netdev_priv(netdev);
 	struct nes_device *nesdev = nesvnic->nesdev;
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c
index 7567b60..efd7a96 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_main.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c
@@ -171,7 +171,7 @@ static int ipoib_stop(struct net_device *dev)
 	return 0;
 }
 
-static u32 ipoib_fix_features(struct net_device *dev, u32 features)
+static netdev_features_t ipoib_fix_features(struct net_device *dev, netdev_features_t features)
 {
 	struct ipoib_dev_priv *priv = netdev_priv(dev);
 
-- 
1.7.6.4

^ permalink raw reply related

* Re: [patch net-next V8] net: introduce ethernet teaming device
From: Michał Mirosław @ 2011-11-16 23:01 UTC (permalink / raw)
  To: Jiri Pirko
  Cc: netdev, davem, eric.dumazet, bhutchings, shemminger, fubar, andy,
	tgraf, ebiederm, kaber, greearb, jesse, fbl, benjamin.poirier,
	jzupka, ivecera
In-Reply-To: <1321085808-6871-1-git-send-email-jpirko@redhat.com>

2011/11/12 Jiri Pirko <jpirko@redhat.com>:
> This patch introduces new network device called team. It supposes to be
> very fast, simple, userspace-driven alternative to existing bonding
> driver.
[...]
> +#define TEAM_VLAN_FEATURES (NETIF_F_ALL_CSUM | NETIF_F_SG | \
> +                           NETIF_F_FRAGLIST | NETIF_F_ALL_TSO | \
> +                           NETIF_F_HIGHDMA | NETIF_F_LRO)
> +
> +static void __team_compute_features(struct team *team)
> +{
> +       struct team_port *port;
> +       u32 vlan_features = TEAM_VLAN_FEATURES;
> +       unsigned short max_hard_header_len = ETH_HLEN;
> +
> +       list_for_each_entry(port, &team->port_list, list) {
> +               vlan_features = netdev_increment_features(vlan_features,
> +                                       port->dev->vlan_features,
> +                                       TEAM_VLAN_FEATURES);
> +
> +               if (port->dev->hard_header_len > max_hard_header_len)
> +                       max_hard_header_len = port->dev->hard_header_len;
> +       }
> +
> +       team->dev->vlan_features = vlan_features;
> +       team->dev->hard_header_len = max_hard_header_len;
> +
> +       netdev_change_features(team->dev);
> +}
> +
> +static void team_compute_features(struct team *team)
> +{
> +       spin_lock(&team->lock);
> +       __team_compute_features(team);
> +       spin_unlock(&team->lock);
> +}
[...]

I just noticed that you missed ndo_fix_features in the driver. If you
look at bonding driver it should be easy to see how it should work.

Best Regards,
Michał Mirosław

^ permalink raw reply

* Re: [PATCH] Add ethtool to mii advertisment conversion helpers
From: Matt Carlson @ 2011-11-16 22:56 UTC (permalink / raw)
  To: David Miller; +Cc: Matthew Carlson, netdev@vger.kernel.org, Michael Chan
In-Reply-To: <20111116.173618.213297028503733251.davem@davemloft.net>

On Wed, Nov 16, 2011 at 02:36:18PM -0800, David Miller wrote:
> From: "Matt Carlson" <mcarlson@broadcom.com>
> Date: Tue, 15 Nov 2011 14:00:53 -0800
> 
> > Translating between ethtool advertisement settings and MII
> > advertisements are common operations for ethernet drivers.  This patch
> > adds a set of helper functions that implements the conversion.  The
> > patch then modifies a couple of the drivers to use the new functions.
> > 
> > Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
> > Signed-off-by: Michael Chan <mchan@broadcom.com>
> 
> Doesn't build:
> 
> In file included from drivers/net/ethernet/3com/3c59x.c:82:0:
> include/linux/mii.h: In function ?ethtool_adv_to_mii_100bt?:
> include/linux/mii.h:254:15: error: ?ADVERTISED_10baseT_Half? undeclared (first use in this function)
> include/linux/mii.h:254:15: note: each undeclared identifier is reported only once for each function it appears in
> include/linux/mii.h:256:15: error: ?ADVERTISED_10baseT_Full? undeclared (first use in this function)
> include/linux/mii.h:258:15: error: ?ADVERTISED_100baseT_Half? undeclared (first use in this function)
> include/linux/mii.h:260:15: error: ?ADVERTISED_100baseT_Full? undeclared (first use in this function)
> include/linux/mii.h:262:15: error: ?ADVERTISED_Pause? undeclared (first use in this function)
> include/linux/mii.h:264:15: error: ?ADVERTISED_Asym_Pause? undeclared (first use in this function)

I forgot to add '#include <linux\ethtool.h>' to mii.h.  I guess for the
drivers I enabled, ethtool.h was already included.  New patch on its
way.

^ permalink raw reply

* [PATCH] MAINTAINERS: change email address for shemminger
From: Stephen Hemminger @ 2011-11-16 22:54 UTC (permalink / raw)
  To: David Miller; +Cc: netdev, stable

My old email account at linux-foundation is no longer usable after
the LF breakin.

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>

---
Copying stable list as well so bug reports make it back to me.


--- a/MAINTAINERS	2011-11-14 08:34:44.358779424 -0800
+++ b/MAINTAINERS	2011-11-16 14:50:45.102894770 -0800
@@ -2576,7 +2576,7 @@ S:	Maintained
 F:	drivers/net/ethernet/i825xx/eexpress.*
 
 ETHERNET BRIDGE
-M:	Stephen Hemminger <shemminger@linux-foundation.org>
+M:	Stephen Hemminger <shemminger@vyatta.com>
 L:	bridge@lists.linux-foundation.org
 L:	netdev@vger.kernel.org
 W:	http://www.linuxfoundation.org/en/Net:Bridge
@@ -4462,7 +4462,7 @@ S:	Supported
 F:	drivers/infiniband/hw/nes/
 
 NETEM NETWORK EMULATOR
-M:	Stephen Hemminger <shemminger@linux-foundation.org>
+M:	Stephen Hemminger <shemminger@vyatta.com>
 L:	netem@lists.linux-foundation.org
 S:	Maintained
 F:	net/sched/sch_netem.c
@@ -5977,7 +5977,7 @@ S:	Maintained
 F:	drivers/usb/misc/sisusbvga/
 
 SKGE, SKY2 10/100/1000 GIGABIT ETHERNET DRIVERS
-M:	Stephen Hemminger <shemminger@linux-foundation.org>
+M:	Stephen Hemminger <shemminger@vyatta.com>
 L:	netdev@vger.kernel.org
 S:	Maintained
 F:	drivers/net/ethernet/marvell/sk*

^ permalink raw reply

* Re: [PATCH net-next] sweep-up some straglers in strlcpy conversion of .get_drvinfo routines
From: David Miller @ 2011-11-16 22:49 UTC (permalink / raw)
  To: raj; +Cc: netdev, nico, peppe.cavallaro
In-Reply-To: <20111116005953.E05A42900404@tardy>

From: raj@tardy.cup.hp.com (Rick Jones)
Date: Tue, 15 Nov 2011 16:59:53 -0800 (PST)

> From: Rick Jones <rick.jones2@hp.com>
> 
> Convert some remaining straglers' .get_drvinfo routines to use strlcpy
> rather than strcpy/strncpy.
> 
> Signed-off-by: Rick Jones <rick.jones2@hp.com>

Applied, thanks Rick.

^ permalink raw reply

* Re: [PATCH v5 0/9] Cleanup and extension of netdev features
From: David Miller @ 2011-11-16 22:49 UTC (permalink / raw)
  To: mirq-linux; +Cc: netdev
In-Reply-To: <cover.1321404954.git.mirq-linux@rere.qmqm.pl>

From: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Date: Wed, 16 Nov 2011 02:29:54 +0100 (CET)

> Commit fd38f734 (igbvf: convert to ndo_fix_features) removed last use
> of old ethtool ops for controlling netdevice's features. This series
> finishes the cleanup and extends feature pool to 64 bits.
> 
> Also, there's additional patch that removes NETIF_F_NO_CSUM as it is
> now, and has been for some time, equivalent to NETIF_F_HW_CSUM.
> 
> To see the new features in action, you need ethtool patched with:
> 
> http://patchwork.ozlabs.org/patch/96374/
> 
> Not much has changed in those patches compared to the version I posted
> in June. v4->v5 is a rebase to current net-next.
> 
> Only compile tested. Kernels newer than 3.1-rcSomething don't boot for
> me because of some block layer or dm-crypt issue I don't have time to
> debug now. :-(

All applied, thanks a lot for doing this work.

^ permalink raw reply

* Re: [PATCH] pch_gbe: Move #include of module.h
From: David Miller @ 2011-11-16 22:49 UTC (permalink / raw)
  To: joe; +Cc: akpm, netdev, jeffrey.t.kirsher, tomoya-linux, toshiharu-linux
In-Reply-To: <1321401374.21286.22.camel@Joe-Laptop>

From: Joe Perches <joe@perches.com>
Date: Tue, 15 Nov 2011 15:56:14 -0800

> The first #include must be pch_gbe.h as it
> does a #define of pr_fmt.
> 
> Signed-off-by: Joe Perches <joe@perches.com>

Applied.

^ permalink raw reply

* Re: [patch 1/1] drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.h: remove unused macro pr_fmt()
From: David Miller @ 2011-11-16 22:48 UTC (permalink / raw)
  To: akpm; +Cc: netdev, jeffrey.t.kirsher, tomoya-linux, toshiharu-linux
In-Reply-To: <20111115155210.69249eb9.akpm@linux-foundation.org>

From: Andrew Morton <akpm@linux-foundation.org>
Date: Tue, 15 Nov 2011 15:52:10 -0800

> On Tue, 15 Nov 2011 18:38:08 -0500 (EST)
> David Miller <davem@davemloft.net> wrote:
> 
>> From: akpm@linux-foundation.org
>> Date: Tue, 15 Nov 2011 14:55:29 -0800
>> 
>> > From: Andrew Morton <akpm@linux-foundation.org>
>> > Subject: drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.h: remove unused macro pr_fmt()
>> 
>> It's not unused, it just isn't properly coming before the linux/printk.h
>> include.
> 
> Oh well, I'll drop it.  Please treat the patch as a bug report instead.

Joe Perches took care of it, I just applied a proper fix from him.

Thanks.

^ permalink raw reply

* Re: [PATCH 1/1] net/cadence: enable by default NET_ATMEL
From: David Miller @ 2011-11-16 22:48 UTC (permalink / raw)
  To: plagnioj; +Cc: linux-kernel, netdev, nicolas.ferre
In-Reply-To: <1321385790-15056-1-git-send-email-plagnioj@jcrosoft.com>

From: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Date: Tue, 15 Nov 2011 20:36:30 +0100

> so the defconfig of the atmel continue to have the support of the network
> as before
> 
> Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
> Cc: Nicolas Ferre <nicolas.ferre@atmel.com>

Applied.

^ permalink raw reply

* Re: [PATCH] bnx2x: cache-in compressed fw image
From: David Miller @ 2011-11-16 22:48 UTC (permalink / raw)
  To: dmitry; +Cc: netdev, eilong
In-Reply-To: <1321394853-14807-1-git-send-email-dmitry@broadcom.com>

From: "Dmitry Kravkov" <dmitry@broadcom.com>
Date: Wed, 16 Nov 2011 00:07:33 +0200

> Re-request fw from fs may fail for different reasons, once the fw was
> loaded we won't release it until driver is removed.
> 
> This also resolves the boot problem when initial fw is located on initrd,
> but rootfs is still unavailable, in this case device reset will fail due
> to absence of fw files.
> 
> Signed-off-by: Dmitry Kravkov <dmitry@broadcom.com>
> Signed-off-by: Eilon Greenstein <eilong@broadcom.com>

Applied.

^ permalink raw reply

* Re: sky2 driver breaks reboot/shutdown
From: Stephen Hemminger @ 2011-11-16 22:48 UTC (permalink / raw)
  To: Sven Joachim; +Cc: netdev, David S. Miller, linux-kernel
In-Reply-To: <878vnfpy6y.fsf@turtle.gmx.de>

On Wed, 16 Nov 2011 22:14:13 +0100
Sven Joachim <svenjoac@gmx.de> wrote:

> [ Resending since my first attempt apparently did not make it to the
>   mailing lists.  Apologies to anyone who receives duplicates. ]
> 
> Hi,
> 
> after upgrading from Linux 3.1 to 3.2-rc2 I noticed that the kernel
> would no longer reboot or shutdown properly, hanging instead.  Removing
> the sky2 driver works around this.  According to "lspci -v", I have the
> following network card:
> 
> ,----
> | 03:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8056 PCI-E Gigabit Ethernet Controller (rev 13)
> | 	Subsystem: ABIT Computer Corp. Device 108f
> | 	Flags: bus master, fast devsel, latency 0, IRQ 17
> | 	Memory at fdefc000 (64-bit, non-prefetchable) [size=16K]
> | 	I/O ports at ce00 [size=256]
> | 	[virtual] Expansion ROM at fdd00000 [disabled] [size=128K]
> | 	Capabilities: <access denied>
> | 	Kernel driver in use: sky2
> `----
> 
> Bisecting shows 0bdb0bd01 as the first bad commit:
> 

Already reported. I am testing a fix. The hang is happening in synchronize_irq
in sky2_hw_all_down; but there are several other bugs that were introduced at the
same time.

^ permalink raw reply

* Re: [patch 0/5] s390: network driver bug fixes for 3.2.0 next rc
From: David Miller @ 2011-11-16 22:47 UTC (permalink / raw)
  To: frank.blaschka; +Cc: netdev, linux-s390
In-Reply-To: <20111115123111.128739986@de.ibm.com>

From: frank.blaschka@de.ibm.com
Date: Tue, 15 Nov 2011 13:31:11 +0100

> here are a couple of s390 network driver bug fixes for 3.2.0 next rc

All applied, thanks.

^ permalink raw reply

* Re: [PATCN net-next] net: use jump_label for netstamp_needed
From: David Miller @ 2011-11-16 22:47 UTC (permalink / raw)
  To: eric.dumazet; +Cc: netdev
In-Reply-To: <1321366375.2856.12.camel@edumazet-HP-Compaq-6005-Pro-SFF-PC>

From: Eric Dumazet <eric.dumazet@gmail.com>
Date: Tue, 15 Nov 2011 15:12:55 +0100

> netstamp_needed seems a good candidate to jump_label conversion.
> 
> This avoids 3 conditional branches per incoming packet in fast path.
> 
> No measurable difference, given that these conditional branches are
> predicted on modern cpus. Only a small icache reduction, thanks to the
> unlikely() stuff.
> 
> Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>

Applied.

^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox