Netdev List
 help / color / mirror / Atom feed
* RE: [PATCH v2 11/14] bnx2x: Update bnx2x to use new vlan accleration.
From: Vladislav Zolotarov @ 2010-10-21 14:02 UTC (permalink / raw)
  To: Vladislav Zolotarov, Jesse Gross, David Miller
  Cc: netdev@vger.kernel.org, Hao Zheng, Eilon Greenstein
In-Reply-To: <8628FE4E7912BF47A96AE7DD7BAC0AADDDEE429135@SJEXCHCCR02.corp.ad.broadcom.com>



> -----Original Message-----
> From: netdev-owner@vger.kernel.org [mailto:netdev-
> owner@vger.kernel.org] On Behalf Of Vladislav Zolotarov
> Sent: Thursday, October 21, 2010 3:55 PM
> To: Jesse Gross; David Miller
> Cc: netdev@vger.kernel.org; Hao Zheng; Eilon Greenstein
> Subject: RE: [PATCH v2 11/14] bnx2x: Update bnx2x to use new vlan
> accleration.
> 
> 
> 
> > -----Original Message-----
> > From: netdev-owner@vger.kernel.org [mailto:netdev-
> > owner@vger.kernel.org] On Behalf Of Jesse Gross
> > Sent: Thursday, October 21, 2010 1:56 AM
> > To: David Miller
> > Cc: netdev@vger.kernel.org; Hao Zheng; Eilon Greenstein
> > Subject: [PATCH v2 11/14] bnx2x: Update bnx2x to use new vlan
> > accleration.
> >
> > From: Hao Zheng <hzheng@nicira.com>
> >
> > Make the bnx2x driver use the new vlan accleration model.
> >
> > Signed-off-by: Hao Zheng <hzheng@nicira.com>
> > Signed-off-by: Jesse Gross <jesse@nicira.com>
> > CC: Eilon Greenstein <eilong@broadcom.com>
> > ---
> >  drivers/net/bnx2x/bnx2x.h         |   10 ------
> >  drivers/net/bnx2x/bnx2x_cmn.c     |   60 +++++++--------------------
> --
> > --------
> >  drivers/net/bnx2x/bnx2x_ethtool.c |   33 ++++++++++----------
> >  drivers/net/bnx2x/bnx2x_main.c    |    8 -----
> >  4 files changed, 27 insertions(+), 84 deletions(-)
> >
> > diff --git a/drivers/net/bnx2x/bnx2x.h b/drivers/net/bnx2x/bnx2x.h
> > index 3bf236b..9571ecf 100644
> > --- a/drivers/net/bnx2x/bnx2x.h
> > +++ b/drivers/net/bnx2x/bnx2x.h
> > @@ -24,10 +24,6 @@
> >  #define DRV_MODULE_RELDATE      "2010/10/19"
> >  #define BNX2X_BC_VER            0x040200
> >
> > -#if defined(CONFIG_VLAN_8021Q) || defined(CONFIG_VLAN_8021Q_MODULE)
> > -#define BCM_VLAN			1
> > -#endif
> > -
> >  #define BNX2X_MULTI_QUEUE
> >
> >  #define BNX2X_NEW_NAPI
> > @@ -858,10 +854,6 @@ struct bnx2x {
> >
> >  	int			tx_ring_size;
> >
> > -#ifdef BCM_VLAN
> > -	struct vlan_group	*vlgrp;
> > -#endif
> > -
> >  	u32			rx_csum;
> >  	u32			rx_buf_size;
> >  /* L2 header size + 2*VLANs (8 bytes) + LLC SNAP (8 bytes) */
> > @@ -925,8 +917,6 @@ struct bnx2x {
> >  #define NO_MCP_FLAG			0x100
> >  #define DISABLE_MSI_FLAG		0x200
> >  #define BP_NOMCP(bp)			(bp->flags & NO_MCP_FLAG)
> > -#define HW_VLAN_TX_FLAG			0x400
> > -#define HW_VLAN_RX_FLAG			0x800
> >  #define MF_FUNC_DIS			0x1000
> >
> >  	int			pf_num;	/* absolute PF number */
> > diff --git a/drivers/net/bnx2x/bnx2x_cmn.c
> > b/drivers/net/bnx2x/bnx2x_cmn.c
> > index 6905b2e..bc58375 100644
> > --- a/drivers/net/bnx2x/bnx2x_cmn.c
> > +++ b/drivers/net/bnx2x/bnx2x_cmn.c
> > @@ -16,16 +16,13 @@
> >   */
> >
> >  #include <linux/etherdevice.h>
> > +#include <linux/if_vlan.h>
> >  #include <linux/ip.h>
> >  #include <net/ipv6.h>
> >  #include <net/ip6_checksum.h>
> >  #include <linux/firmware.h>
> >  #include "bnx2x_cmn.h"
> >
> > -#ifdef BCM_VLAN
> > -#include <linux/if_vlan.h>
> > -#endif
> > -
> >  #include "bnx2x_init.h"
> >
> >
> > @@ -346,13 +343,6 @@ static void bnx2x_tpa_stop(struct bnx2x *bp,
> > struct bnx2x_fastpath *fp,
> >  	if (likely(new_skb)) {
> >  		/* fix ip xsum and give it to the stack */
> >  		/* (no need to map the new skb) */
> > -#ifdef BCM_VLAN
> > -		int is_vlan_cqe =
> > -			(le16_to_cpu(cqe->fast_path_cqe.pars_flags.flags) &
> > -			 PARSING_FLAGS_VLAN);
> > -		int is_not_hwaccel_vlan_cqe =
> > -			(is_vlan_cqe && (!(bp->flags & HW_VLAN_RX_FLAG)));
> > -#endif
> >
> >  		prefetch(skb);
> >  		prefetch(((char *)(skb)) + L1_CACHE_BYTES);
> > @@ -377,28 +367,18 @@ static void bnx2x_tpa_stop(struct bnx2x *bp,
> > struct bnx2x_fastpath *fp,
> >  			struct iphdr *iph;
> >
> >  			iph = (struct iphdr *)skb->data;
> > -#ifdef BCM_VLAN
> > -			/* If there is no Rx VLAN offloading -
> > -			   take VLAN tag into an account */
> > -			if (unlikely(is_not_hwaccel_vlan_cqe))
> > -				iph = (struct iphdr *)((u8 *)iph + VLAN_HLEN);
> > -#endif
> >  			iph->check = 0;
> >  			iph->check = ip_fast_csum((u8 *)iph, iph->ihl);
> >  		}
> >
> >  		if (!bnx2x_fill_frag_skb(bp, fp, skb,
> >  					 &cqe->fast_path_cqe, cqe_idx)) {
> > -#ifdef BCM_VLAN
> > -			if ((bp->vlgrp != NULL) &&
> > -				(le16_to_cpu(cqe->fast_path_cqe.
> > -				pars_flags.flags) & PARSING_FLAGS_VLAN))
> > -				vlan_gro_receive(&fp->napi, bp->vlgrp,
> > +			if ((le16_to_cpu(cqe->fast_path_cqe.
> > +			    pars_flags.flags) & PARSING_FLAGS_VLAN))
> > +				__vlan_hwaccel_put_tag(skb,
> >  						 le16_to_cpu(cqe->fast_path_cqe.
> > -							     vlan_tag), skb);
> > -			else
> > -#endif
> > -				napi_gro_receive(&fp->napi, skb);
> > +							     vlan_tag));
> > +			napi_gro_receive(&fp->napi, skb);
> >  		} else {
> >  			DP(NETIF_MSG_RX_STATUS, "Failed to allocate new
> > pages"
> >  			   " - dropping packet!\n");
> > @@ -633,15 +613,11 @@ reuse_rx:
> >
> >  		skb_record_rx_queue(skb, fp->index);
> >
> > -#ifdef BCM_VLAN
> > -		if ((bp->vlgrp != NULL) && (bp->flags & HW_VLAN_RX_FLAG) &&
> > -		    (le16_to_cpu(cqe->fast_path_cqe.pars_flags.flags) &
> > -		     PARSING_FLAGS_VLAN))
> > -			vlan_gro_receive(&fp->napi, bp->vlgrp,
> > -				le16_to_cpu(cqe->fast_path_cqe.vlan_tag), skb);
> > -		else
> > -#endif
> > -			napi_gro_receive(&fp->napi, skb);
> > +		if (le16_to_cpu(cqe->fast_path_cqe.pars_flags.flags) &
> > +		     PARSING_FLAGS_VLAN)
> > +			__vlan_hwaccel_put_tag(skb,
> > +				le16_to_cpu(cqe->fast_path_cqe.vlan_tag));
> > +		napi_gro_receive(&fp->napi, skb);
> >
> >
> >  next_rx:
> > @@ -2025,14 +2001,12 @@ netdev_tx_t bnx2x_start_xmit(struct sk_buff
> > *skb, struct net_device *dev)
> >  	   "sending pkt %u @%p  next_idx %u  bd %u @%p\n",
> >  	   pkt_prod, tx_buf, fp->tx_pkt_prod, bd_prod, tx_start_bd);
> >
> > -#ifdef BCM_VLAN
> >  	if (vlan_tx_tag_present(skb)) {
> >  		tx_start_bd->vlan_or_ethertype =
> >  		    cpu_to_le16(vlan_tx_tag_get(skb));
> >  		tx_start_bd->bd_flags.as_bitfield |=
> >  		    (X_ETH_OUTBAND_VLAN <<
> > ETH_TX_BD_FLAGS_VLAN_MODE_SHIFT);
> >  	} else
> > -#endif
> >  		tx_start_bd->vlan_or_ethertype = cpu_to_le16(pkt_prod);
> >
> >  	/* turn on parsing and get a BD */
> > @@ -2317,18 +2291,6 @@ void bnx2x_tx_timeout(struct net_device *dev)
> >  	schedule_delayed_work(&bp->reset_task, 0);
> >  }
> >
> > -#ifdef BCM_VLAN
> > -/* called with rtnl_lock */
> > -void bnx2x_vlan_rx_register(struct net_device *dev,
> > -				   struct vlan_group *vlgrp)
> > -{
> > -	struct bnx2x *bp = netdev_priv(dev);
> > -
> > -	bp->vlgrp = vlgrp;
> > -}
> > -
> > -#endif
> > -
> >  int bnx2x_suspend(struct pci_dev *pdev, pm_message_t state)
> >  {
> >  	struct net_device *dev = pci_get_drvdata(pdev);
> > diff --git a/drivers/net/bnx2x/bnx2x_ethtool.c
> > b/drivers/net/bnx2x/bnx2x_ethtool.c
> > index 54fe061..daefef6 100644
> > --- a/drivers/net/bnx2x/bnx2x_ethtool.c
> > +++ b/drivers/net/bnx2x/bnx2x_ethtool.c
> > @@ -1117,35 +1117,34 @@ static int bnx2x_set_flags(struct net_device
> > *dev, u32 data)
> >  	int changed = 0;
> >  	int rc = 0;
> >
> > -	if (data & ~(ETH_FLAG_LRO | ETH_FLAG_RXHASH))
> > -		return -EINVAL;
> > -
> >  	if (bp->recovery_state != BNX2X_RECOVERY_DONE) {
> >  		printk(KERN_ERR "Handling parity error recovery. Try again
> > later\n");
> >  		return -EAGAIN;
> >  	}
> >
> > +	if (!(data & ETH_FLAG_RXVLAN))
> > +		return -EOPNOTSUPP;
> > +
> > +	if ((data & ETH_FLAG_LRO) && bp->rx_csum && bp->disable_tpa)
> > +		return -EINVAL;
> > +
> > +	rc = ethtool_op_set_flags(dev, data, ETH_FLAG_LRO |
> > ETH_FLAG_RXVLAN |
> > +					ETH_FLAG_TXVLAN | ETH_FLAG_RXHASH);
> > +	if (rc)
> > +		return rc;
> > +
> >  	/* TPA requires Rx CSUM offloading */
> >  	if ((data & ETH_FLAG_LRO) && bp->rx_csum) {
> > -		if (!bp->disable_tpa) {
> > -			if (!(dev->features & NETIF_F_LRO)) {
> > -				dev->features |= NETIF_F_LRO;
> > -				bp->flags |= TPA_ENABLE_FLAG;
> > -				changed = 1;
> > -			}
> > -		} else
> > -			rc = -EINVAL;
> > -	} else if (dev->features & NETIF_F_LRO) {
> > +		if (!(bp->flags & TPA_ENABLE_FLAG)) {
> > +			bp->flags |= TPA_ENABLE_FLAG;
> > +			changed = 1;
> > +		}
> > +	} else if (bp->flags & TPA_ENABLE_FLAG) {
> >  		dev->features &= ~NETIF_F_LRO;
> >  		bp->flags &= ~TPA_ENABLE_FLAG;
> >  		changed = 1;
> >  	}
> >
> > -	if (data & ETH_FLAG_RXHASH)
> > -		dev->features |= NETIF_F_RXHASH;
> > -	else
> > -		dev->features &= ~NETIF_F_RXHASH;
> > -
> >  	if (changed && netif_running(dev)) {
> >  		bnx2x_nic_unload(bp, UNLOAD_NORMAL);
> >  		rc = bnx2x_nic_load(bp, LOAD_NORMAL);
> > diff --git a/drivers/net/bnx2x/bnx2x_main.c
> > b/drivers/net/bnx2x/bnx2x_main.c
> > index f22e283..ff99a2f 100644
> > --- a/drivers/net/bnx2x/bnx2x_main.c
> > +++ b/drivers/net/bnx2x/bnx2x_main.c
> > @@ -2371,10 +2371,8 @@ static inline u16 bnx2x_get_cl_flags(struct
> > bnx2x *bp,
> >  	flags |= QUEUE_FLG_HC;
> >  	flags |= IS_MF(bp) ? QUEUE_FLG_OV : 0;
> >
> > -#ifdef BCM_VLAN
> >  	flags |= QUEUE_FLG_VLAN;
> >  	DP(NETIF_MSG_IFUP, "vlan removal enabled\n");
> > -#endif
> >
> >  	if (!fp->disable_tpa)
> >  		flags |= QUEUE_FLG_TPA;
> > @@ -8630,9 +8628,6 @@ static const struct net_device_ops
> > bnx2x_netdev_ops = {
> >  	.ndo_do_ioctl		= bnx2x_ioctl,
> >  	.ndo_change_mtu		= bnx2x_change_mtu,
> >  	.ndo_tx_timeout		= bnx2x_tx_timeout,
> > -#ifdef BCM_VLAN
> > -	.ndo_vlan_rx_register	= bnx2x_vlan_rx_register,
> > -#endif
> >  #ifdef CONFIG_NET_POLL_CONTROLLER
> >  	.ndo_poll_controller	= poll_bnx2x,
> >  #endif
> > @@ -8764,9 +8759,7 @@ static int __devinit bnx2x_init_dev(struct
> > pci_dev *pdev,
> >  		dev->features |= NETIF_F_HIGHDMA;
> >  	dev->features |= (NETIF_F_TSO | NETIF_F_TSO_ECN);
> >  	dev->features |= NETIF_F_TSO6;
> > -#ifdef BCM_VLAN
> >  	dev->features |= (NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX);
> > -	bp->flags |= (HW_VLAN_RX_FLAG | HW_VLAN_TX_FLAG);
> >
> >  	dev->vlan_features |= NETIF_F_SG;
> >  	dev->vlan_features |= NETIF_F_HW_CSUM;
> > @@ -8774,7 +8767,6 @@ static int __devinit bnx2x_init_dev(struct
> > pci_dev *pdev,
> >  		dev->vlan_features |= NETIF_F_HIGHDMA;
> >  	dev->vlan_features |= (NETIF_F_TSO | NETIF_F_TSO_ECN);
> >  	dev->vlan_features |= NETIF_F_TSO6;
> > -#endif
> >
> >  	/* get_port_hwinfo() will set prtad and mmds properly */
> >  	bp->mdio.prtad = MDIO_PRTAD_NONE;
> > --
> > 1.7.1
> 
> Guys, when I compiled the kernel with these patches without VLAN
> support (CONFIG_VLAN_8021Q is not set) and tried to send VLAN tagged
> frames from the remote side to the bnx2x interface the kernel panicked.
> 
> The stack trace got cut with the __netif_receive_skb() on top by the
> IPKVM and I'll have to connect a serial to get it all. But until I
> did that maybe somebody will have any ideas anyway...
> 
> It happens regardless there is HW RX VLAN stripping enabled or not.

When RX VLAN stripping is enabled we hit the BUG() in the 
vlan_hwaccel_do_receive().





> 
> Thanks,
> vlad
> 
> >
> > --
> > To unsubscribe from this list: send the line "unsubscribe netdev" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
> 
> --
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html



^ permalink raw reply

* Re: [PATCH v2 1/9] tproxy: split off ipv6 defragmentation to a separate module
From: Patrick McHardy @ 2010-10-21 14:04 UTC (permalink / raw)
  To: KOVACS Krisztian; +Cc: netdev, netfilter-devel, Balazs Scheidler, David Miller
In-Reply-To: <1287661385.13326.45.camel@este.odu>

Am 21.10.2010 13:43, schrieb KOVACS Krisztian:
> tproxy: split off ipv6 defragmentation to a separate module
>     
>     Like with IPv4, TProxy needs IPv6 defragmentation but does not
>     require connection tracking. Since defragmentation was coupled
>     with conntrack, I split off the two, creating an nf_defrag_ipv6 module,
>     similar to the already existing nf_defrag_ipv4.

Applied, thanks.

^ permalink raw reply

* Re: [PATCH v2 2/9] tproxy: added const specifiers to udp lookup functions
From: Patrick McHardy @ 2010-10-21 14:05 UTC (permalink / raw)
  To: KOVACS Krisztian; +Cc: netdev, netfilter-devel, Balazs Scheidler, David Miller
In-Reply-To: <20101021104709.5192.54276.stgit@este.odu>

Am 21.10.2010 12:47, schrieb KOVACS Krisztian:
> The parameters for various UDP lookup functions were non-const, even though
> they could be const. TProxy has some const references and instead of
> downcasting it, I added const specifiers along the path.

Applied, thanks.

^ permalink raw reply

* Re: [PATCH v2 3/9] tproxy: added udp6_lib_lookup function
From: Patrick McHardy @ 2010-10-21 14:06 UTC (permalink / raw)
  To: KOVACS Krisztian; +Cc: netdev, netfilter-devel, Balazs Scheidler, David Miller
In-Reply-To: <20101021104709.5192.57640.stgit@este.odu>

Am 21.10.2010 12:47, schrieb KOVACS Krisztian:
> Just like with IPv4, we need access to the UDP hash table to look up local
> sockets, but instead of exporting the global udp_table, export a lookup
> function.

Applied, thanks.

^ permalink raw reply

* Re: [PATCH v2 4/9] tproxy: added tproxy sockopt interface in the IPV6 layer
From: Patrick McHardy @ 2010-10-21 14:09 UTC (permalink / raw)
  To: KOVACS Krisztian; +Cc: netdev, netfilter-devel, Balazs Scheidler, David Miller
In-Reply-To: <20101021104709.5192.34941.stgit@este.odu>

Am 21.10.2010 12:47, schrieb KOVACS Krisztian:
> Support for IPV6_RECVORIGDSTADDR sockopt for UDP sockets were contributed by
> Harry Mason.

Applied, thanks.

^ permalink raw reply

* Re: [PATCH v2] ipv4: synchronize bind() with RTM_NEWADDR notifications
From: Eric Dumazet @ 2010-10-21 14:10 UTC (permalink / raw)
  To: Timo Teräs; +Cc: David Miller, netdev
In-Reply-To: <1287666383-17615-1-git-send-email-timo.teras@iki.fi>

Le jeudi 21 octobre 2010 à 16:06 +0300, Timo Teräs a écrit :
> Otherwise we have race condition to user land:
>  1. process A: changes IP address
>  2. process A: kernel sends RTM_NEWADDR (and schedules out)
>  3. process B: gets notification
>  4. process B: tries to bind() to new IP, but fails with EADDRNOTAVAIL
>       because FIB is not yet updated and inet_addr_type() in inet_bind()
>       does not recognize the IP as local
>  5. process A: calls inetaddr_chain notifiers which updates FIB
> 
> Fix the error path to synchronize with configuration changes and retry
> the address type check.
> 
> IPv6 side seems to handle the notifications properly: bind() immediately
> after RTM_NEWADDR succeeds as expected.  This is because ipv6_chk_addr()
> uses inet6_addr_lst which is updated before address notification.
> 
> Signed-off-by: Timo Teräs <timo.teras@iki.fi>
> ---
> Since there was no reply to my question if this is ok, I interpreted it
> as "maybe". So here's the code for review. Hopefully this helps determining
> if this is an acceptable fix.
> 

Just say : no

Really Timo, this problem must get another fix.

I understand you need an urgent fix, you can use your patch in the
meantime, of course ;)




^ permalink raw reply

* Re: [PATCH v2 5/9] tproxy: allow non-local binds of IPv6 sockets if IP_TRANSPARENT is enabled
From: Patrick McHardy @ 2010-10-21 14:11 UTC (permalink / raw)
  To: KOVACS Krisztian; +Cc: netdev, netfilter-devel, Balazs Scheidler, David Miller
In-Reply-To: <20101021104709.5192.12412.stgit@este.odu>

Am 21.10.2010 12:47, schrieb KOVACS Krisztian:
> @@ -343,7 +343,7 @@ int inet6_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
>  			 */
>  			v4addr = LOOPBACK4_IPV6;
>  			if (!(addr_type & IPV6_ADDR_MULTICAST))	{
> -				if (!ipv6_chk_addr(net, &addr->sin6_addr,
> +				if (!inet->transparent && !ipv6_chk_addr(net, &addr->sin6_addr,
>  						   dev, 0)) {

This looked like it was supposed to have a line break at the &&, so I've
added that and applied it.

^ permalink raw reply

* Re: [PATCH v2 6/9] tproxy: added IPv6 socket lookup function to nf_tproxy_core
From: Patrick McHardy @ 2010-10-21 14:12 UTC (permalink / raw)
  To: KOVACS Krisztian; +Cc: netdev, netfilter-devel, Balazs Scheidler, David Miller
In-Reply-To: <20101021104709.5192.34304.stgit@este.odu>

Am 21.10.2010 12:47, schrieb KOVACS Krisztian:
> Signed-off-by: Balazs Scheidler <bazsi@balabit.hu>
> Signed-off-by: KOVACS Krisztian <hidden@balabit.hu>

Applied, thanks.

^ permalink raw reply

* Re: [PATCH net-next-2.6] be2net: Changes to use only priority codes allowed by f/w
From: David Miller @ 2010-10-21 14:14 UTC (permalink / raw)
  To: somnath.kotur; +Cc: netdev
In-Reply-To: <20101021134109.GA3195@emulex.com>

From: Somnath Kotur <somnath.kotur@emulex.com>
Date: Thu, 21 Oct 2010 19:11:09 +0530

> Changes to use one of the priority codes allowed by CNA f/w for NIC traffic
> from host. The driver gets the bit map of the priority codes allowed for
> host traffic through a asynchronous message from the f/w that the driver
> subscribes to.
> 
> Signed-off-by: Somnath Kotur <somnath.kotur@emulex.com>

Applied.

^ permalink raw reply

* Re: [PATCH v2 7/9] tproxy: added IPv6 support to the TPROXY target
From: Patrick McHardy @ 2010-10-21 14:17 UTC (permalink / raw)
  To: KOVACS Krisztian; +Cc: netdev, netfilter-devel, Balazs Scheidler, David Miller
In-Reply-To: <20101021104709.5192.99755.stgit@este.odu>

Am 21.10.2010 12:47, schrieb KOVACS Krisztian:
> This requires a new revision as the old target structure was
> IPv4 specific.

Applied, thanks.

^ permalink raw reply

* Re: [PATCH 1/3] cxgb3: function namespace cleanup
From: David Miller @ 2010-10-21 14:19 UTC (permalink / raw)
  To: divy; +Cc: shemminger, leedom, dm, netdev
In-Reply-To: <4CBCF10C.4010900@chelsio.com>

From: Divy Le Ray <divy@chelsio.com>
Date: Mon, 18 Oct 2010 18:14:52 -0700

>  On 10/15/2010 03:43 PM, Stephen Hemminger wrote:
>> Make local functions static. Remove functions that are
>> defined and never used. Compile tested only.
>>
>> Signed-off-by: Stephen Hemminger<shemminger@vyatta.com>
> 
> Acked-by: Divy Le Ray <divy@chelsio.com>

Applied.

^ permalink raw reply

* Re: [PATCH v2 8/9] tproxy: added IPv6 support to the socket match
From: Patrick McHardy @ 2010-10-21 14:20 UTC (permalink / raw)
  To: KOVACS Krisztian; +Cc: netdev, netfilter-devel, Balazs Scheidler, David Miller
In-Reply-To: <20101021104709.5192.41764.stgit@este.odu>

Am 21.10.2010 12:47, schrieb KOVACS Krisztian:
> The ICMP extraction bits were contributed by Harry Mason.

Applied, thanks.

^ permalink raw reply

* Re: [PATCH v2 9/9] tproxy: use the interface primary IP address as a default value for --on-ip
From: Patrick McHardy @ 2010-10-21 14:21 UTC (permalink / raw)
  To: KOVACS Krisztian; +Cc: netdev, netfilter-devel, Balazs Scheidler, David Miller
In-Reply-To: <20101021104710.5192.65152.stgit@este.odu>

Am 21.10.2010 12:47, schrieb KOVACS Krisztian:
> From: Balazs Scheidler <bazsi@balabit.hu>
> 
> The REDIRECT target and the older TProxy versions used the primary address
> of the incoming interface as the default value of the --on-ip parameter.
> This was unintentionally changed during the initial TProxy submission and
> caused confusion among users.
> 
> Since IPv6 has no notion of primary address, we just select the first address
> on the list: this way the socket lookup finds wildcard bound sockets
> properly and we cannot really do better without the user telling us the
> IPv6 address of the proxy.
> 
> This is implemented for both IPv4 and IPv6.


Also applied, thanks a lot.


^ permalink raw reply

* [GIT PULL nf-next-2.6] ipvs + nf_net
From: Simon Horman @ 2010-10-21 14:24 UTC (permalink / raw)
  To: netfilter-devel, lvs-devel, netdev
  Cc: Patrick McHardy, Julian Anastasov, Hans Schillstrom

Hi Patrick,

please consider pulling the following. The changes
are the 12 IPVS patch series that Julian recently posted
as well as his ICMP translation patch.

The following changes since commit d86bef73b4a24e59e7c1f896a72bbf38430ac2c6:

  Fixed race condition at ip_vs.ko module init. (2010-10-19 17:13:16 +0200)

are available in the git repository at:
  git://git.kernel.org/pub/scm/linux/kernel/git/horms/lvs-test-2.6.git for-patrick

Julian Anastasov (13):
      ipvs: fix CHECKSUM_PARTIAL for TCP, UDP
      ipvs: optimize checksums for apps
      ipvs: switch to notrack mode
      ipvs: do not schedule conns from real servers
      ipvs: stop ICMP from FORWARD to local
      ipvs: fix CHECKSUM_PARTIAL for TUN method
      ipvs: create ip_vs_defrag_user
      ipvs: move ip_route_me_harder for ICMP
      ipvs: changes for local real server
      ipvs: changes for local client
      ipvs: inherit forwarding method in backup
      ipvs: provide address family for debugging
      nf_nat: restrict ICMP translation for embedded header

 include/net/ip_vs.h                     |   53 +++-
 net/ipv4/netfilter/nf_nat_core.c        |   29 +-
 net/netfilter/ipvs/ip_vs_conn.c         |    2 +
 net/netfilter/ipvs/ip_vs_core.c         |  586 ++++++++++++++++++++++---------
 net/netfilter/ipvs/ip_vs_ctl.c          |   18 +-
 net/netfilter/ipvs/ip_vs_ftp.c          |    7 +-
 net/netfilter/ipvs/ip_vs_proto.c        |    8 +-
 net/netfilter/ipvs/ip_vs_proto_ah_esp.c |   52 +---
 net/netfilter/ipvs/ip_vs_proto_sctp.c   |    8 +-
 net/netfilter/ipvs/ip_vs_proto_tcp.c    |   52 ++-
 net/netfilter/ipvs/ip_vs_proto_udp.c    |   51 ++-
 net/netfilter/ipvs/ip_vs_xmit.c         |  503 +++++++++++++++++++++------
 12 files changed, 959 insertions(+), 410 deletions(-)

^ permalink raw reply

* Re: [PATCH v2 9/9] tproxy: use the interface primary IP address as a default value for --on-ip
From: Amos Jeffries @ 2010-10-21 14:26 UTC (permalink / raw)
  To: Patrick McHardy
  Cc: KOVACS Krisztian, netdev, netfilter-devel, Balazs Scheidler
In-Reply-To: <4CC04C81.9080504@trash.net>

On 22/10/10 03:21, Patrick McHardy wrote:
> Am 21.10.2010 12:47, schrieb KOVACS Krisztian:
>> From: Balazs Scheidler<bazsi@balabit.hu>
>>
>> The REDIRECT target and the older TProxy versions used the primary address
>> of the incoming interface as the default value of the --on-ip parameter.
>> This was unintentionally changed during the initial TProxy submission and
>> caused confusion among users.
>>
>> Since IPv6 has no notion of primary address, we just select the first address
>> on the list: this way the socket lookup finds wildcard bound sockets
>> properly and we cannot really do better without the user telling us the
>> IPv6 address of the proxy.
>>
>> This is implemented for both IPv4 and IPv6.
>
>
> Also applied, thanks a lot.
>

Hoooray!! Thanks very, very, very much.

Just one followup question:
   which kernel and iptables release is this now headed for?

AYJ

^ permalink raw reply

* Re: [GIT PULL nf-next-2.6] ipvs + nf_net
From: Patrick McHardy @ 2010-10-21 14:27 UTC (permalink / raw)
  To: Simon Horman
  Cc: netfilter-devel, lvs-devel, netdev, Julian Anastasov,
	Hans Schillstrom
In-Reply-To: <20101021142446.GA19085@verge.net.au>

Am 21.10.2010 16:24, schrieb Simon Horman:
>   git://git.kernel.org/pub/scm/linux/kernel/git/horms/lvs-test-2.6.git for-patrick

Pulled, thanks Simon.

^ permalink raw reply

* Re: [RFC PATCH 5/9] ipvs network name space aware
From: Simon Horman @ 2010-10-21 14:34 UTC (permalink / raw)
  To: Hans Schillstrom
  Cc: Eric Dumazet, lvs-devel@vger.kernel.org, netdev@vger.kernel.org,
	netfilter-devel@vger.kernel.org, ja@ssi.bg, wensong@linux-vs.org,
	daniel.lezcano@free.fr
In-Reply-To: <201010211349.25921.hans.schillstrom@ericsson.com>

On Thu, Oct 21, 2010 at 01:49:25PM +0200, Hans Schillstrom wrote:
> On Thursday 21 October 2010 13:26:54 Eric Dumazet wrote:
> > Le jeudi 21 octobre 2010 à 13:16 +0200, Simon Horman a écrit :
> >
> > > > @@ -2680,10 +2664,15 @@ static int ip_vs_genl_dump_services(struct sk_buff *skb,
> > > >  	int idx = 0, i;
> > > >  	int start = cb->args[0];
> > > >  	struct ip_vs_service *svc;
> > > > -
> > > > +	struct net *net = skb->sk->sk_net;
> > >
> > > skb->sk->sk_net needs CONFIG_NS_NET.
> > > Is your plan for IPVS to unconditionally depend on CONFIG_NS_NET?
> > > It would be nice to avoid that, but I fear it will be too messy.
> > >
> >
> >
> > struct net *net = sock_net(skb->sk);
> >
> > is your friend ;)
> >
> >
> Tanks Eric,
> 
> Simon,
> do forget about my last mail....

Done :-)

^ permalink raw reply

* [PATCH] ibmveth: Increase default copybreak limits to 2k
From: Robert Jennings @ 2010-10-21 14:37 UTC (permalink / raw)
  To: David Miller; +Cc: netdev

Increase the copybreak limits for rx and tx from 128 bytes
to 2048 bytes. These limits were added by commits
8d86c61ae41d9068fd5e5cc01a4abd53c4fe3ab5 and
c08cc3ccebd46dce44d13a8ce81d249e687eeb8a to make use of a
bounce buffer for packets below 128 bytes.  This avoids
tearing down and creating a TCE entry.

Performance testing shows that this default limit can be
increased from 128 to 2048 for both rx and tx copybreak.
This resulted in ~10% throughput increase for for packets
that fit this limit without affecting performance for larger
packets.

Signed-off-by: Robert Jennings <rcj@linux.vnet.ibm.com>
---
 drivers/net/ibmveth.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ibmveth.c b/drivers/net/ibmveth.c
index c454b45..20b7a98 100644
--- a/drivers/net/ibmveth.c
+++ b/drivers/net/ibmveth.c
@@ -65,12 +65,12 @@ MODULE_DESCRIPTION("IBM Power Virtual Ethernet Driver");
 MODULE_LICENSE("GPL");
 MODULE_VERSION(ibmveth_driver_version);
 
-static unsigned int tx_copybreak __read_mostly = 128;
+static unsigned int tx_copybreak __read_mostly = 2048;
 module_param(tx_copybreak, uint, 0644);
 MODULE_PARM_DESC(tx_copybreak,
 	"Maximum size of packet that is copied to a new buffer on transmit");
 
-static unsigned int rx_copybreak __read_mostly = 128;
+static unsigned int rx_copybreak __read_mostly = 2048;
 module_param(rx_copybreak, uint, 0644);
 MODULE_PARM_DESC(rx_copybreak,
 	"Maximum size of packet that is copied to a new buffer on receive");
-- 
1.7.0.4


^ permalink raw reply related

* [PATCH v2 02/22] bitops: rename generic little-endian bitops functions
From: Akinobu Mita @ 2010-10-21 14:40 UTC (permalink / raw)
  To: linux-kernel, linux-arch, Arnd Bergmann, Christoph Hellwig,
	Andrew Morton
  Cc: rds-devel, kvm, Marcelo Tosatti, Akinobu Mita, David S. Miller,
	Andy Grover, linux-m68k, netdev, Andreas Schwab, Avi Kivity,
	Greg Ungerer, Geert Uytterhoeven, linuxppc-dev,
	Hans-Christian Egtvedt, Paul Mackerras
In-Reply-To: <1287672077-5797-1-git-send-email-akinobu.mita@gmail.com>

As a preparation for providing little-endian bitops for all architectures,
This removes generic_ prefix from little-endian bitops function names
in asm-generic/bitops/le.h.

s/generic_find_next_le_bit/find_next_le_bit/
s/generic_find_next_zero_le_bit/find_next_zero_le_bit/
s/generic_find_first_zero_le_bit/find_first_zero_le_bit/
s/generic___test_and_set_le_bit/__test_and_set_le_bit/
s/generic___test_and_clear_le_bit/__test_and_clear_le_bit/
s/generic_test_le_bit/test_le_bit/
s/generic___set_le_bit/__set_le_bit/
s/generic___clear_le_bit/__clear_le_bit/
s/generic_test_and_set_le_bit/test_and_set_le_bit/
s/generic_test_and_clear_le_bit/test_and_clear_le_bit/

Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Cc: Hans-Christian Egtvedt <hans-christian.egtvedt@atmel.com>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Roman Zippel <zippel@linux-m68k.org>
Cc: Andreas Schwab <schwab@linux-m68k.org>
Cc: linux-m68k@lists.linux-m68k.org
Cc: Greg Ungerer <gerg@uclinux.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: linuxppc-dev@lists.ozlabs.org
Cc: Andy Grover <andy.grover@oracle.com>
Cc: rds-devel@oss.oracle.com
Cc: "David S. Miller" <davem@davemloft.net>
Cc: netdev@vger.kernel.org
Cc: Avi Kivity <avi@redhat.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>
Cc: kvm@vger.kernel.org
---
No change from previous submission

 arch/avr32/kernel/avr32_ksyms.c              |    4 ++--
 arch/avr32/lib/findbit.S                     |    4 ++--
 arch/m68k/include/asm/bitops_mm.h            |    8 ++++----
 arch/m68k/include/asm/bitops_no.h            |    2 +-
 arch/powerpc/include/asm/bitops.h            |   11 ++++++-----
 include/asm-generic/bitops/ext2-non-atomic.h |   12 ++++++------
 include/asm-generic/bitops/le.h              |   26 +++++++++++++-------------
 include/asm-generic/bitops/minix-le.h        |   10 +++++-----
 lib/find_next_bit.c                          |    9 ++++-----
 net/rds/cong.c                               |    6 +++---
 virt/kvm/kvm_main.c                          |    2 +-
 11 files changed, 47 insertions(+), 47 deletions(-)

diff --git a/arch/avr32/kernel/avr32_ksyms.c b/arch/avr32/kernel/avr32_ksyms.c
index 11e310c..c63b943 100644
--- a/arch/avr32/kernel/avr32_ksyms.c
+++ b/arch/avr32/kernel/avr32_ksyms.c
@@ -58,8 +58,8 @@ EXPORT_SYMBOL(find_first_zero_bit);
 EXPORT_SYMBOL(find_next_zero_bit);
 EXPORT_SYMBOL(find_first_bit);
 EXPORT_SYMBOL(find_next_bit);
-EXPORT_SYMBOL(generic_find_next_le_bit);
-EXPORT_SYMBOL(generic_find_next_zero_le_bit);
+EXPORT_SYMBOL(find_next_le_bit);
+EXPORT_SYMBOL(find_next_zero_le_bit);
 
 /* I/O primitives (lib/io-*.S) */
 EXPORT_SYMBOL(__raw_readsb);
diff --git a/arch/avr32/lib/findbit.S b/arch/avr32/lib/findbit.S
index 997b33b..6880d85 100644
--- a/arch/avr32/lib/findbit.S
+++ b/arch/avr32/lib/findbit.S
@@ -123,7 +123,7 @@ ENTRY(find_next_bit)
 	brgt	1b
 	retal	r11
 
-ENTRY(generic_find_next_le_bit)
+ENTRY(find_next_le_bit)
 	lsr	r8, r10, 5
 	sub	r9, r11, r10
 	retle	r11
@@ -153,7 +153,7 @@ ENTRY(generic_find_next_le_bit)
 	brgt	1b
 	retal	r11
 
-ENTRY(generic_find_next_zero_le_bit)
+ENTRY(find_next_zero_le_bit)
 	lsr	r8, r10, 5
 	sub	r9, r11, r10
 	retle	r11
diff --git a/arch/m68k/include/asm/bitops_mm.h b/arch/m68k/include/asm/bitops_mm.h
index b4ecdaa..f1010ab 100644
--- a/arch/m68k/include/asm/bitops_mm.h
+++ b/arch/m68k/include/asm/bitops_mm.h
@@ -366,9 +366,9 @@ static inline int minix_test_bit(int nr, const void *vaddr)
 #define ext2_clear_bit(nr, addr)		__test_and_clear_bit((nr) ^ 24, (unsigned long *)(addr))
 #define ext2_clear_bit_atomic(lock, nr, addr)	test_and_clear_bit((nr) ^ 24, (unsigned long *)(addr))
 #define ext2_find_next_zero_bit(addr, size, offset) \
-	generic_find_next_zero_le_bit((unsigned long *)addr, size, offset)
+	find_next_zero_le_bit((unsigned long *)addr, size, offset)
 #define ext2_find_next_bit(addr, size, offset) \
-	generic_find_next_le_bit((unsigned long *)addr, size, offset)
+	find_next_le_bit((unsigned long *)addr, size, offset)
 
 static inline int ext2_test_bit(int nr, const void *vaddr)
 {
@@ -398,7 +398,7 @@ static inline int ext2_find_first_zero_bit(const void *vaddr, unsigned size)
 	return (p - addr) * 32 + res;
 }
 
-static inline unsigned long generic_find_next_zero_le_bit(const unsigned long *addr,
+static inline unsigned long find_next_zero_le_bit(const unsigned long *addr,
 		unsigned long size, unsigned long offset)
 {
 	const unsigned long *p = addr + (offset >> 5);
@@ -440,7 +440,7 @@ static inline int ext2_find_first_bit(const void *vaddr, unsigned size)
 	return (p - addr) * 32 + res;
 }
 
-static inline unsigned long generic_find_next_le_bit(const unsigned long *addr,
+static inline unsigned long find_next_le_bit(const unsigned long *addr,
 		unsigned long size, unsigned long offset)
 {
 	const unsigned long *p = addr + (offset >> 5);
diff --git a/arch/m68k/include/asm/bitops_no.h b/arch/m68k/include/asm/bitops_no.h
index 9d3cbe5..292e1ce 100644
--- a/arch/m68k/include/asm/bitops_no.h
+++ b/arch/m68k/include/asm/bitops_no.h
@@ -325,7 +325,7 @@ found_middle:
 }
 
 #define ext2_find_next_bit(addr, size, off) \
-	generic_find_next_le_bit((unsigned long *)(addr), (size), (off))
+	find_next_le_bit((unsigned long *)(addr), (size), (off))
 #include <asm-generic/bitops/minix.h>
 
 #endif /* __KERNEL__ */
diff --git a/arch/powerpc/include/asm/bitops.h b/arch/powerpc/include/asm/bitops.h
index 30964ae..b4f3f84 100644
--- a/arch/powerpc/include/asm/bitops.h
+++ b/arch/powerpc/include/asm/bitops.h
@@ -294,11 +294,12 @@ static __inline__ int test_le_bit(unsigned long nr,
 #define __test_and_clear_le_bit(nr, addr) \
 	__test_and_clear_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
 
-#define find_first_zero_le_bit(addr, size) generic_find_next_zero_le_bit((addr), (size), 0)
-unsigned long generic_find_next_zero_le_bit(const unsigned long *addr,
+#define find_first_zero_le_bit(addr, size) \
+	find_next_zero_le_bit((addr), (size), 0)
+unsigned long find_next_zero_le_bit(const unsigned long *addr,
 				    unsigned long size, unsigned long offset);
 
-unsigned long generic_find_next_le_bit(const unsigned long *addr,
+unsigned long find_next_le_bit(const unsigned long *addr,
 				    unsigned long size, unsigned long offset);
 /* Bitmap functions for the ext2 filesystem */
 
@@ -317,10 +318,10 @@ unsigned long generic_find_next_le_bit(const unsigned long *addr,
 #define ext2_find_first_zero_bit(addr, size) \
 	find_first_zero_le_bit((unsigned long*)addr, size)
 #define ext2_find_next_zero_bit(addr, size, off) \
-	generic_find_next_zero_le_bit((unsigned long*)addr, size, off)
+	find_next_zero_le_bit((unsigned long *)addr, size, off)
 
 #define ext2_find_next_bit(addr, size, off) \
-	generic_find_next_le_bit((unsigned long *)addr, size, off)
+	find_next_le_bit((unsigned long *)addr, size, off)
 /* Bitmap functions for the minix filesystem.  */
 
 #define minix_test_and_set_bit(nr,addr) \
diff --git a/include/asm-generic/bitops/ext2-non-atomic.h b/include/asm-generic/bitops/ext2-non-atomic.h
index 63cf822..9c7bb9a 100644
--- a/include/asm-generic/bitops/ext2-non-atomic.h
+++ b/include/asm-generic/bitops/ext2-non-atomic.h
@@ -4,17 +4,17 @@
 #include <asm-generic/bitops/le.h>
 
 #define ext2_set_bit(nr,addr)	\
-	generic___test_and_set_le_bit((nr),(unsigned long *)(addr))
+	__test_and_set_le_bit((nr), (unsigned long *)(addr))
 #define ext2_clear_bit(nr,addr)	\
-	generic___test_and_clear_le_bit((nr),(unsigned long *)(addr))
+	__test_and_clear_le_bit((nr), (unsigned long *)(addr))
 
 #define ext2_test_bit(nr,addr)	\
-	generic_test_le_bit((nr),(unsigned long *)(addr))
+	test_le_bit((nr), (unsigned long *)(addr))
 #define ext2_find_first_zero_bit(addr, size) \
-	generic_find_first_zero_le_bit((unsigned long *)(addr), (size))
+	find_first_zero_le_bit((unsigned long *)(addr), (size))
 #define ext2_find_next_zero_bit(addr, size, off) \
-	generic_find_next_zero_le_bit((unsigned long *)(addr), (size), (off))
+	find_next_zero_le_bit((unsigned long *)(addr), (size), (off))
 #define ext2_find_next_bit(addr, size, off) \
-	generic_find_next_le_bit((unsigned long *)(addr), (size), (off))
+	find_next_le_bit((unsigned long *)(addr), (size), (off))
 
 #endif /* _ASM_GENERIC_BITOPS_EXT2_NON_ATOMIC_H_ */
diff --git a/include/asm-generic/bitops/le.h b/include/asm-generic/bitops/le.h
index db2be81..6ad46ce 100644
--- a/include/asm-generic/bitops/le.h
+++ b/include/asm-generic/bitops/le.h
@@ -8,42 +8,42 @@
 
 #define BITOP_LE_SWIZZLE	0
 
-#define generic_find_next_zero_le_bit(addr, size, offset) \
+#define find_next_zero_le_bit(addr, size, offset) \
 	find_next_zero_bit(addr, size, offset)
-#define generic_find_next_le_bit(addr, size, offset) \
+#define find_next_le_bit(addr, size, offset) \
 	find_next_bit(addr, size, offset)
 
 #elif defined(__BIG_ENDIAN)
 
 #define BITOP_LE_SWIZZLE	((BITS_PER_LONG-1) & ~0x7)
 
-extern unsigned long generic_find_next_zero_le_bit(const unsigned long *addr,
+extern unsigned long find_next_zero_le_bit(const unsigned long *addr,
 		unsigned long size, unsigned long offset);
-extern unsigned long generic_find_next_le_bit(const unsigned long *addr,
+extern unsigned long find_next_le_bit(const unsigned long *addr,
 		unsigned long size, unsigned long offset);
 
 #else
 #error "Please fix <asm/byteorder.h>"
 #endif
 
-#define generic_test_le_bit(nr, addr) \
+#define test_le_bit(nr, addr) \
 	test_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
-#define generic___set_le_bit(nr, addr) \
+#define __set_le_bit(nr, addr) \
 	__set_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
-#define generic___clear_le_bit(nr, addr) \
+#define __clear_le_bit(nr, addr) \
 	__clear_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
 
-#define generic_test_and_set_le_bit(nr, addr) \
+#define test_and_set_le_bit(nr, addr) \
 	test_and_set_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
-#define generic_test_and_clear_le_bit(nr, addr) \
+#define test_and_clear_le_bit(nr, addr) \
 	test_and_clear_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
 
-#define generic___test_and_set_le_bit(nr, addr) \
+#define __test_and_set_le_bit(nr, addr) \
 	__test_and_set_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
-#define generic___test_and_clear_le_bit(nr, addr) \
+#define __test_and_clear_le_bit(nr, addr) \
 	__test_and_clear_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
 
-#define generic_find_first_zero_le_bit(addr, size) \
-        generic_find_next_zero_le_bit((addr), (size), 0)
+#define find_first_zero_le_bit(addr, size) \
+	find_next_zero_le_bit((addr), (size), 0)
 
 #endif /* _ASM_GENERIC_BITOPS_LE_H_ */
diff --git a/include/asm-generic/bitops/minix-le.h b/include/asm-generic/bitops/minix-le.h
index 4a981c1..ed0ae09 100644
--- a/include/asm-generic/bitops/minix-le.h
+++ b/include/asm-generic/bitops/minix-le.h
@@ -4,14 +4,14 @@
 #include <asm-generic/bitops/le.h>
 
 #define minix_test_and_set_bit(nr,addr)	\
-	generic___test_and_set_le_bit((nr),(unsigned long *)(addr))
+	__test_and_set_le_bit((nr), (unsigned long *)(addr))
 #define minix_set_bit(nr,addr)		\
-	generic___set_le_bit((nr),(unsigned long *)(addr))
+	__set_le_bit((nr), (unsigned long *)(addr))
 #define minix_test_and_clear_bit(nr,addr) \
-	generic___test_and_clear_le_bit((nr),(unsigned long *)(addr))
+	__test_and_clear_le_bit((nr), (unsigned long *)(addr))
 #define minix_test_bit(nr,addr)		\
-	generic_test_le_bit((nr),(unsigned long *)(addr))
+	test_le_bit((nr), (unsigned long *)(addr))
 #define minix_find_first_zero_bit(addr,size) \
-	generic_find_first_zero_le_bit((unsigned long *)(addr),(size))
+	find_first_zero_le_bit((unsigned long *)(addr), (size))
 
 #endif /* _ASM_GENERIC_BITOPS_MINIX_LE_H_ */
diff --git a/lib/find_next_bit.c b/lib/find_next_bit.c
index 24c59de..eb8934b 100644
--- a/lib/find_next_bit.c
+++ b/lib/find_next_bit.c
@@ -185,7 +185,7 @@ static inline unsigned long ext2_swab(const unsigned long y)
 #endif
 }
 
-unsigned long generic_find_next_zero_le_bit(const unsigned long *addr, unsigned
+unsigned long find_next_zero_le_bit(const unsigned long *addr, unsigned
 		long size, unsigned long offset)
 {
 	const unsigned long *p = addr + BITOP_WORD(offset);
@@ -226,10 +226,9 @@ found_middle:
 found_middle_swap:
 	return result + ffz(ext2_swab(tmp));
 }
+EXPORT_SYMBOL(find_next_zero_le_bit);
 
-EXPORT_SYMBOL(generic_find_next_zero_le_bit);
-
-unsigned long generic_find_next_le_bit(const unsigned long *addr, unsigned
+unsigned long find_next_le_bit(const unsigned long *addr, unsigned
 		long size, unsigned long offset)
 {
 	const unsigned long *p = addr + BITOP_WORD(offset);
@@ -271,5 +270,5 @@ found_middle:
 found_middle_swap:
 	return result + __ffs(ext2_swab(tmp));
 }
-EXPORT_SYMBOL(generic_find_next_le_bit);
+EXPORT_SYMBOL(find_next_le_bit);
 #endif /* __BIG_ENDIAN */
diff --git a/net/rds/cong.c b/net/rds/cong.c
index 0871a29..c6784d5 100644
--- a/net/rds/cong.c
+++ b/net/rds/cong.c
@@ -285,7 +285,7 @@ void rds_cong_set_bit(struct rds_cong_map *map, __be16 port)
 	i = be16_to_cpu(port) / RDS_CONG_MAP_PAGE_BITS;
 	off = be16_to_cpu(port) % RDS_CONG_MAP_PAGE_BITS;
 
-	generic___set_le_bit(off, (void *)map->m_page_addrs[i]);
+	__set_le_bit(off, (void *)map->m_page_addrs[i]);
 }
 
 void rds_cong_clear_bit(struct rds_cong_map *map, __be16 port)
@@ -299,7 +299,7 @@ void rds_cong_clear_bit(struct rds_cong_map *map, __be16 port)
 	i = be16_to_cpu(port) / RDS_CONG_MAP_PAGE_BITS;
 	off = be16_to_cpu(port) % RDS_CONG_MAP_PAGE_BITS;
 
-	generic___clear_le_bit(off, (void *)map->m_page_addrs[i]);
+	__clear_le_bit(off, (void *)map->m_page_addrs[i]);
 }
 
 static int rds_cong_test_bit(struct rds_cong_map *map, __be16 port)
@@ -310,7 +310,7 @@ static int rds_cong_test_bit(struct rds_cong_map *map, __be16 port)
 	i = be16_to_cpu(port) / RDS_CONG_MAP_PAGE_BITS;
 	off = be16_to_cpu(port) % RDS_CONG_MAP_PAGE_BITS;
 
-	return generic_test_le_bit(off, (void *)map->m_page_addrs[i]);
+	return test_le_bit(off, (void *)map->m_page_addrs[i]);
 }
 
 void rds_cong_add_socket(struct rds_sock *rs)
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index 5186e72..2d9927c 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -1208,7 +1208,7 @@ void mark_page_dirty(struct kvm *kvm, gfn_t gfn)
 	if (memslot && memslot->dirty_bitmap) {
 		unsigned long rel_gfn = gfn - memslot->base_gfn;
 
-		generic___set_le_bit(rel_gfn, memslot->dirty_bitmap);
+		__set_le_bit(rel_gfn, memslot->dirty_bitmap);
 	}
 }
 
-- 
1.7.1.231.gd0b16

^ permalink raw reply related

* [PATCH v2 08/22] rds: stop including asm-generic/bitops/le.h
From: Akinobu Mita @ 2010-10-21 14:41 UTC (permalink / raw)
  To: linux-kernel, linux-arch, Arnd Bergmann, Christoph Hellwig,
	Andrew Morton
  Cc: Akinobu Mita, Andy Grover, rds-devel, David S. Miller, netdev
In-Reply-To: <1287672077-5797-1-git-send-email-akinobu.mita@gmail.com>

No need to include asm-generic/bitops/le.h as all architectures
provide little-endian bit operations now.

Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Cc: Andy Grover <andy.grover@oracle.com>
Cc: rds-devel@oss.oracle.com
Cc: "David S. Miller" <davem@davemloft.net>
Cc: netdev@vger.kernel.org
---
No change from previous submission

 net/rds/cong.c |    2 --
 1 files changed, 0 insertions(+), 2 deletions(-)

diff --git a/net/rds/cong.c b/net/rds/cong.c
index c6784d5..15a65f0 100644
--- a/net/rds/cong.c
+++ b/net/rds/cong.c
@@ -34,8 +34,6 @@
 #include <linux/types.h>
 #include <linux/rbtree.h>
 
-#include <asm-generic/bitops/le.h>
-
 #include "rds.h"
 
 /*
-- 
1.7.1.231.gd0b16

^ permalink raw reply related

* Re: [PATCH] ibmveth: Increase default copybreak limits to 2k
From: David Miller @ 2010-10-21 14:45 UTC (permalink / raw)
  To: rcj; +Cc: netdev
In-Reply-To: <20101021143753.GA5567@linux.vnet.ibm.com>

From: Robert Jennings <rcj@linux.vnet.ibm.com>
Date: Thu, 21 Oct 2010 09:37:53 -0500

> Increase the copybreak limits for rx and tx from 128 bytes
> to 2048 bytes. These limits were added by commits
> 8d86c61ae41d9068fd5e5cc01a4abd53c4fe3ab5 and
> c08cc3ccebd46dce44d13a8ce81d249e687eeb8a to make use of a
> bounce buffer for packets below 128 bytes.  This avoids
> tearing down and creating a TCE entry.
> 
> Performance testing shows that this default limit can be
> increased from 128 to 2048 for both rx and tx copybreak.
> This resulted in ~10% throughput increase for for packets
> that fit this limit without affecting performance for larger
> packets.
> 
> Signed-off-by: Robert Jennings <rcj@linux.vnet.ibm.com>

For a default MTU of 1500 this means the copybreak will
never be used.

This makes absolutely no sense, are you doing these tests
with Jumbo frames?

^ permalink raw reply

* Re: [PATCH v2 9/9] tproxy: use the interface primary IP address as a default value for --on-ip
From: Patrick McHardy @ 2010-10-21 14:48 UTC (permalink / raw)
  To: Amos Jeffries; +Cc: KOVACS Krisztian, netdev, netfilter-devel, Balazs Scheidler
In-Reply-To: <4CC04D97.9020105@treenet.co.nz>

Am 21.10.2010 16:26, schrieb Amos Jeffries:
> On 22/10/10 03:21, Patrick McHardy wrote:
>> Also applied, thanks a lot.
>>
> 
> Hoooray!! Thanks very, very, very much.
> 
> Just one followup question:
>   which kernel and iptables release is this now headed for?

These patches will appear in 2.6.37-rc.

^ permalink raw reply

* email-selected
From: Microsoft @ 2010-10-21 14:45 UTC (permalink / raw)


Your Email Id has won 1,000,000.00 GBP in the British Online Promotion 2010. send your

Names.
Age:
Address.
Occupation:
Tel.

to our claims department :claims.012@hotmail.com
+44 7010 039 919

^ permalink raw reply

* RE: [PATCH v2 11/14] bnx2x: Update bnx2x to use new vlan accleration.
From: Vladislav Zolotarov @ 2010-10-21 14:50 UTC (permalink / raw)
  To: Jesse Gross, David Miller
  Cc: netdev@vger.kernel.org, Hao Zheng, Eilon Greenstein
In-Reply-To: <8628FE4E7912BF47A96AE7DD7BAC0AADDDEE429137@SJEXCHCCR02.corp.ad.broadcom.com>



> -----Original Message-----
> From: Vladislav Zolotarov
> Sent: Thursday, October 21, 2010 4:03 PM
> To: Vladislav Zolotarov; Jesse Gross; David Miller
> Cc: netdev@vger.kernel.org; Hao Zheng; Eilon Greenstein
> Subject: RE: [PATCH v2 11/14] bnx2x: Update bnx2x to use new vlan
> accleration.
> 
> 
> 
> > -----Original Message-----
> > From: netdev-owner@vger.kernel.org [mailto:netdev-
> > owner@vger.kernel.org] On Behalf Of Vladislav Zolotarov
> > Sent: Thursday, October 21, 2010 3:55 PM
> > To: Jesse Gross; David Miller
> > Cc: netdev@vger.kernel.org; Hao Zheng; Eilon Greenstein
> > Subject: RE: [PATCH v2 11/14] bnx2x: Update bnx2x to use new vlan
> > accleration.
> >
> >
> >
> > > -----Original Message-----
> > > From: netdev-owner@vger.kernel.org [mailto:netdev-
> > > owner@vger.kernel.org] On Behalf Of Jesse Gross
> > > Sent: Thursday, October 21, 2010 1:56 AM
> > > To: David Miller
> > > Cc: netdev@vger.kernel.org; Hao Zheng; Eilon Greenstein
> > > Subject: [PATCH v2 11/14] bnx2x: Update bnx2x to use new vlan
> > > accleration.
> > >
> > > From: Hao Zheng <hzheng@nicira.com>
> > >
> > > Make the bnx2x driver use the new vlan accleration model.
> > >
> > > Signed-off-by: Hao Zheng <hzheng@nicira.com>
> > > Signed-off-by: Jesse Gross <jesse@nicira.com>
> > > CC: Eilon Greenstein <eilong@broadcom.com>
> > > ---
> > >  drivers/net/bnx2x/bnx2x.h         |   10 ------
> > >  drivers/net/bnx2x/bnx2x_cmn.c     |   60 +++++++------------------
> --
> > --
> > > --------
> > >  drivers/net/bnx2x/bnx2x_ethtool.c |   33 ++++++++++----------
> > >  drivers/net/bnx2x/bnx2x_main.c    |    8 -----
> > >  4 files changed, 27 insertions(+), 84 deletions(-)
> > >
> > > diff --git a/drivers/net/bnx2x/bnx2x.h b/drivers/net/bnx2x/bnx2x.h
> > > index 3bf236b..9571ecf 100644
> > > --- a/drivers/net/bnx2x/bnx2x.h
> > > +++ b/drivers/net/bnx2x/bnx2x.h
> > > @@ -24,10 +24,6 @@
> > >  #define DRV_MODULE_RELDATE      "2010/10/19"
> > >  #define BNX2X_BC_VER            0x040200
> > >
> > > -#if defined(CONFIG_VLAN_8021Q) ||
> defined(CONFIG_VLAN_8021Q_MODULE)
> > > -#define BCM_VLAN			1
> > > -#endif
> > > -
> > >  #define BNX2X_MULTI_QUEUE
> > >
> > >  #define BNX2X_NEW_NAPI
> > > @@ -858,10 +854,6 @@ struct bnx2x {
> > >
> > >  	int			tx_ring_size;
> > >
> > > -#ifdef BCM_VLAN
> > > -	struct vlan_group	*vlgrp;
> > > -#endif
> > > -
> > >  	u32			rx_csum;
> > >  	u32			rx_buf_size;
> > >  /* L2 header size + 2*VLANs (8 bytes) + LLC SNAP (8 bytes) */
> > > @@ -925,8 +917,6 @@ struct bnx2x {
> > >  #define NO_MCP_FLAG			0x100
> > >  #define DISABLE_MSI_FLAG		0x200
> > >  #define BP_NOMCP(bp)			(bp->flags & NO_MCP_FLAG)
> > > -#define HW_VLAN_TX_FLAG			0x400
> > > -#define HW_VLAN_RX_FLAG			0x800
> > >  #define MF_FUNC_DIS			0x1000
> > >
> > >  	int			pf_num;	/* absolute PF number */
> > > diff --git a/drivers/net/bnx2x/bnx2x_cmn.c
> > > b/drivers/net/bnx2x/bnx2x_cmn.c
> > > index 6905b2e..bc58375 100644
> > > --- a/drivers/net/bnx2x/bnx2x_cmn.c
> > > +++ b/drivers/net/bnx2x/bnx2x_cmn.c
> > > @@ -16,16 +16,13 @@
> > >   */
> > >
> > >  #include <linux/etherdevice.h>
> > > +#include <linux/if_vlan.h>
> > >  #include <linux/ip.h>
> > >  #include <net/ipv6.h>
> > >  #include <net/ip6_checksum.h>
> > >  #include <linux/firmware.h>
> > >  #include "bnx2x_cmn.h"
> > >
> > > -#ifdef BCM_VLAN
> > > -#include <linux/if_vlan.h>
> > > -#endif
> > > -
> > >  #include "bnx2x_init.h"
> > >
> > >
> > > @@ -346,13 +343,6 @@ static void bnx2x_tpa_stop(struct bnx2x *bp,
> > > struct bnx2x_fastpath *fp,
> > >  	if (likely(new_skb)) {
> > >  		/* fix ip xsum and give it to the stack */
> > >  		/* (no need to map the new skb) */
> > > -#ifdef BCM_VLAN
> > > -		int is_vlan_cqe =
> > > -			(le16_to_cpu(cqe->fast_path_cqe.pars_flags.flags) &
> > > -			 PARSING_FLAGS_VLAN);
> > > -		int is_not_hwaccel_vlan_cqe =
> > > -			(is_vlan_cqe && (!(bp->flags & HW_VLAN_RX_FLAG)));
> > > -#endif
> > >
> > >  		prefetch(skb);
> > >  		prefetch(((char *)(skb)) + L1_CACHE_BYTES);
> > > @@ -377,28 +367,18 @@ static void bnx2x_tpa_stop(struct bnx2x *bp,
> > > struct bnx2x_fastpath *fp,
> > >  			struct iphdr *iph;
> > >
> > >  			iph = (struct iphdr *)skb->data;
> > > -#ifdef BCM_VLAN
> > > -			/* If there is no Rx VLAN offloading -
> > > -			   take VLAN tag into an account */
> > > -			if (unlikely(is_not_hwaccel_vlan_cqe))
> > > -				iph = (struct iphdr *)((u8 *)iph + VLAN_HLEN);
> > > -#endif
> > >  			iph->check = 0;
> > >  			iph->check = ip_fast_csum((u8 *)iph, iph->ihl);
> > >  		}
> > >
> > >  		if (!bnx2x_fill_frag_skb(bp, fp, skb,
> > >  					 &cqe->fast_path_cqe, cqe_idx)) {
> > > -#ifdef BCM_VLAN
> > > -			if ((bp->vlgrp != NULL) &&
> > > -				(le16_to_cpu(cqe->fast_path_cqe.
> > > -				pars_flags.flags) & PARSING_FLAGS_VLAN))
> > > -				vlan_gro_receive(&fp->napi, bp->vlgrp,
> > > +			if ((le16_to_cpu(cqe->fast_path_cqe.
> > > +			    pars_flags.flags) & PARSING_FLAGS_VLAN))
> > > +				__vlan_hwaccel_put_tag(skb,
> > >  						 le16_to_cpu(cqe->fast_path_cqe.
> > > -							     vlan_tag), skb);
> > > -			else
> > > -#endif
> > > -				napi_gro_receive(&fp->napi, skb);
> > > +							     vlan_tag));
> > > +			napi_gro_receive(&fp->napi, skb);
> > >  		} else {
> > >  			DP(NETIF_MSG_RX_STATUS, "Failed to allocate new
> > > pages"
> > >  			   " - dropping packet!\n");
> > > @@ -633,15 +613,11 @@ reuse_rx:
> > >
> > >  		skb_record_rx_queue(skb, fp->index);
> > >
> > > -#ifdef BCM_VLAN
> > > -		if ((bp->vlgrp != NULL) && (bp->flags & HW_VLAN_RX_FLAG) &&
> > > -		    (le16_to_cpu(cqe->fast_path_cqe.pars_flags.flags) &
> > > -		     PARSING_FLAGS_VLAN))
> > > -			vlan_gro_receive(&fp->napi, bp->vlgrp,
> > > -				le16_to_cpu(cqe->fast_path_cqe.vlan_tag), skb);
> > > -		else
> > > -#endif
> > > -			napi_gro_receive(&fp->napi, skb);
> > > +		if (le16_to_cpu(cqe->fast_path_cqe.pars_flags.flags) &
> > > +		     PARSING_FLAGS_VLAN)
> > > +			__vlan_hwaccel_put_tag(skb,
> > > +				le16_to_cpu(cqe->fast_path_cqe.vlan_tag));
> > > +		napi_gro_receive(&fp->napi, skb);
> > >
> > >
> > >  next_rx:
> > > @@ -2025,14 +2001,12 @@ netdev_tx_t bnx2x_start_xmit(struct sk_buff
> > > *skb, struct net_device *dev)
> > >  	   "sending pkt %u @%p  next_idx %u  bd %u @%p\n",
> > >  	   pkt_prod, tx_buf, fp->tx_pkt_prod, bd_prod, tx_start_bd);
> > >
> > > -#ifdef BCM_VLAN
> > >  	if (vlan_tx_tag_present(skb)) {
> > >  		tx_start_bd->vlan_or_ethertype =
> > >  		    cpu_to_le16(vlan_tx_tag_get(skb));
> > >  		tx_start_bd->bd_flags.as_bitfield |=
> > >  		    (X_ETH_OUTBAND_VLAN <<
> > > ETH_TX_BD_FLAGS_VLAN_MODE_SHIFT);
> > >  	} else
> > > -#endif
> > >  		tx_start_bd->vlan_or_ethertype = cpu_to_le16(pkt_prod);
> > >
> > >  	/* turn on parsing and get a BD */
> > > @@ -2317,18 +2291,6 @@ void bnx2x_tx_timeout(struct net_device
> *dev)
> > >  	schedule_delayed_work(&bp->reset_task, 0);
> > >  }
> > >
> > > -#ifdef BCM_VLAN
> > > -/* called with rtnl_lock */
> > > -void bnx2x_vlan_rx_register(struct net_device *dev,
> > > -				   struct vlan_group *vlgrp)
> > > -{
> > > -	struct bnx2x *bp = netdev_priv(dev);
> > > -
> > > -	bp->vlgrp = vlgrp;
> > > -}
> > > -
> > > -#endif
> > > -
> > >  int bnx2x_suspend(struct pci_dev *pdev, pm_message_t state)
> > >  {
> > >  	struct net_device *dev = pci_get_drvdata(pdev);
> > > diff --git a/drivers/net/bnx2x/bnx2x_ethtool.c
> > > b/drivers/net/bnx2x/bnx2x_ethtool.c
> > > index 54fe061..daefef6 100644
> > > --- a/drivers/net/bnx2x/bnx2x_ethtool.c
> > > +++ b/drivers/net/bnx2x/bnx2x_ethtool.c
> > > @@ -1117,35 +1117,34 @@ static int bnx2x_set_flags(struct
> net_device
> > > *dev, u32 data)
> > >  	int changed = 0;
> > >  	int rc = 0;
> > >
> > > -	if (data & ~(ETH_FLAG_LRO | ETH_FLAG_RXHASH))
> > > -		return -EINVAL;
> > > -
> > >  	if (bp->recovery_state != BNX2X_RECOVERY_DONE) {
> > >  		printk(KERN_ERR "Handling parity error recovery. Try again
> > > later\n");
> > >  		return -EAGAIN;
> > >  	}
> > >
> > > +	if (!(data & ETH_FLAG_RXVLAN))
> > > +		return -EOPNOTSUPP;
> > > +
> > > +	if ((data & ETH_FLAG_LRO) && bp->rx_csum && bp->disable_tpa)
> > > +		return -EINVAL;
> > > +
> > > +	rc = ethtool_op_set_flags(dev, data, ETH_FLAG_LRO |
> > > ETH_FLAG_RXVLAN |
> > > +					ETH_FLAG_TXVLAN | ETH_FLAG_RXHASH);
> > > +	if (rc)
> > > +		return rc;
> > > +
> > >  	/* TPA requires Rx CSUM offloading */
> > >  	if ((data & ETH_FLAG_LRO) && bp->rx_csum) {
> > > -		if (!bp->disable_tpa) {
> > > -			if (!(dev->features & NETIF_F_LRO)) {
> > > -				dev->features |= NETIF_F_LRO;
> > > -				bp->flags |= TPA_ENABLE_FLAG;
> > > -				changed = 1;
> > > -			}
> > > -		} else
> > > -			rc = -EINVAL;
> > > -	} else if (dev->features & NETIF_F_LRO) {
> > > +		if (!(bp->flags & TPA_ENABLE_FLAG)) {
> > > +			bp->flags |= TPA_ENABLE_FLAG;
> > > +			changed = 1;
> > > +		}
> > > +	} else if (bp->flags & TPA_ENABLE_FLAG) {
> > >  		dev->features &= ~NETIF_F_LRO;
> > >  		bp->flags &= ~TPA_ENABLE_FLAG;
> > >  		changed = 1;
> > >  	}
> > >
> > > -	if (data & ETH_FLAG_RXHASH)
> > > -		dev->features |= NETIF_F_RXHASH;
> > > -	else
> > > -		dev->features &= ~NETIF_F_RXHASH;
> > > -
> > >  	if (changed && netif_running(dev)) {
> > >  		bnx2x_nic_unload(bp, UNLOAD_NORMAL);
> > >  		rc = bnx2x_nic_load(bp, LOAD_NORMAL);
> > > diff --git a/drivers/net/bnx2x/bnx2x_main.c
> > > b/drivers/net/bnx2x/bnx2x_main.c
> > > index f22e283..ff99a2f 100644
> > > --- a/drivers/net/bnx2x/bnx2x_main.c
> > > +++ b/drivers/net/bnx2x/bnx2x_main.c
> > > @@ -2371,10 +2371,8 @@ static inline u16 bnx2x_get_cl_flags(struct
> > > bnx2x *bp,
> > >  	flags |= QUEUE_FLG_HC;
> > >  	flags |= IS_MF(bp) ? QUEUE_FLG_OV : 0;
> > >
> > > -#ifdef BCM_VLAN
> > >  	flags |= QUEUE_FLG_VLAN;
> > >  	DP(NETIF_MSG_IFUP, "vlan removal enabled\n");
> > > -#endif
> > >
> > >  	if (!fp->disable_tpa)
> > >  		flags |= QUEUE_FLG_TPA;
> > > @@ -8630,9 +8628,6 @@ static const struct net_device_ops
> > > bnx2x_netdev_ops = {
> > >  	.ndo_do_ioctl		= bnx2x_ioctl,
> > >  	.ndo_change_mtu		= bnx2x_change_mtu,
> > >  	.ndo_tx_timeout		= bnx2x_tx_timeout,
> > > -#ifdef BCM_VLAN
> > > -	.ndo_vlan_rx_register	= bnx2x_vlan_rx_register,
> > > -#endif
> > >  #ifdef CONFIG_NET_POLL_CONTROLLER
> > >  	.ndo_poll_controller	= poll_bnx2x,
> > >  #endif
> > > @@ -8764,9 +8759,7 @@ static int __devinit bnx2x_init_dev(struct
> > > pci_dev *pdev,
> > >  		dev->features |= NETIF_F_HIGHDMA;
> > >  	dev->features |= (NETIF_F_TSO | NETIF_F_TSO_ECN);
> > >  	dev->features |= NETIF_F_TSO6;
> > > -#ifdef BCM_VLAN
> > >  	dev->features |= (NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX);
> > > -	bp->flags |= (HW_VLAN_RX_FLAG | HW_VLAN_TX_FLAG);
> > >
> > >  	dev->vlan_features |= NETIF_F_SG;
> > >  	dev->vlan_features |= NETIF_F_HW_CSUM;
> > > @@ -8774,7 +8767,6 @@ static int __devinit bnx2x_init_dev(struct
> > > pci_dev *pdev,
> > >  		dev->vlan_features |= NETIF_F_HIGHDMA;
> > >  	dev->vlan_features |= (NETIF_F_TSO | NETIF_F_TSO_ECN);
> > >  	dev->vlan_features |= NETIF_F_TSO6;
> > > -#endif
> > >
> > >  	/* get_port_hwinfo() will set prtad and mmds properly */
> > >  	bp->mdio.prtad = MDIO_PRTAD_NONE;
> > > --
> > > 1.7.1
> >
> > Guys, when I compiled the kernel with these patches without VLAN
> > support (CONFIG_VLAN_8021Q is not set) and tried to send VLAN tagged
> > frames from the remote side to the bnx2x interface the kernel
> panicked.
> >
> > The stack trace got cut with the __netif_receive_skb() on top by the
> > IPKVM and I'll have to connect a serial to get it all. But until I
> > did that maybe somebody will have any ideas anyway...
> >
> > It happens regardless there is HW RX VLAN stripping enabled or not.
> 
> When RX VLAN stripping is enabled we hit the BUG() in the
> vlan_hwaccel_do_receive().:

We hit the same BUG() both when VLAN stripping is disabled. 

Thanks,
vlad

> 
> 
> 
> 
> 
> >
> > Thanks,
> > vlad
> >
> > >
> > > --
> > > To unsubscribe from this list: send the line "unsubscribe netdev"
> in
> > > the body of a message to majordomo@vger.kernel.org
> > > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> >
> >
> > --
> > To unsubscribe from this list: send the line "unsubscribe netdev" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html



^ permalink raw reply

* Re: [BUG] problems with "ip xfrm" on 32-bit userspace with 64-bit kernel
From: Chris Friesen @ 2010-10-21 15:05 UTC (permalink / raw)
  To: Florian Westphal; +Cc: netdev, Linux Kernel Mailing List
In-Reply-To: <20101021075056.GE15247@Chamillionaire.breakpoint.cc>

On 10/21/2010 01:50 AM, Florian Westphal wrote:
> Chris Friesen <chris.friesen@genband.com> wrote:
>> We've run into a 32/64 compatibility problem with iproute2.  The "ip
>> xfrm monitor acquire" command doesn't work properly due to struct size
>> mismatches between kernel and userspace.
> 
> Yes.  See archives for 'xfrm: add x86 CONFIG_COMPAT support'
> (http://marc.info/?t=127050655600003&r=1&w=2)
> 
> for a discussion on why the patch set to fix this was rejected.

Interesting discussion.  Kind of sucks for people trying to use it though.

How do distros resolve this?  Do they build iproute2 as a 64-bit package
or something?

Chris

-- 
Chris Friesen
Software Developer
GENBAND
chris.friesen@genband.com
www.genband.com

^ 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