Netdev List
 help / color / mirror / Atom feed
* Re: [PATCH] ipv6: fix incorrect ipsec transport mode fragment
From: Gao feng @ 2012-05-15  3:44 UTC (permalink / raw)
  To: Steffen Klassert; +Cc: netdev, davem, lw
In-Reply-To: <20120514130528.GA24733@secunet.com>

Hi steffen:

于 2012年05月14日 21:05, Steffen Klassert 写道:
> On Mon, May 14, 2012 at 11:21:00AM +0800, Gao feng wrote:
>> Since commit 299b0767(ipv6: Fix IPsec slowpath fragmentation problem)
>> the fragment of ipsec transport mode packets is incorrect.
>> because tunnel mode needs IPsec headers and trailer for all fragments,
>> while on transport mode it is sufficient to add the headers to the
>> first fragment and the trailer to the last.
> 
> I mentioned this in an other thread some time ago,
> this is due to commit ad0081e43a
> "ipv6: Fragment locally generated tunnel-mode IPSec6 packets as needed"
> changed tunnel mode to do fragmentation before the transformation
> while transport mode still does fragmentation after transformation.
> Now, tunnel mode needs IPsec headers and trailer for all fragments,
> while on transport mode it is sufficient to add the headers to the
> first fragment and the trailer to the last.
> 
>>
>> so modify mtu and maxfraglen base on ipsec mode and if fragment is first
>> or last.
> 
> There might be other opinions, but I don't like to see this IPsec mode
> dependent stuff hacked into the generic ipv6 output path.
> 
> Basically we have two cases. One where we have to add rt->dst.header_len
> to the first fragment and rt->dst.trailer_len to the last fragment,
> and the other where we have to add both to all fragments. So perhaps we
> could isolate this code and create two functions, one for each case.
> 

how about add a function pointer append_data to the struct rt6_info?
so we can just call rt->append_data in ip6_append_data without conside
witch mode it is.

of course, we will set rt->append_data appropriatly in xfrm_lookup.

But the only problem is this will bloats up rt6_info,I don't konw if
it's worth doing it in this way.

> 
>>
>> with my test,it work well and does not trigger slow fragment path.
>>
>> Signed-off-by: Gao feng <gaofeng@cn.fujitsu.com>
>> ---
>>  net/ipv6/ip6_output.c |   80 +++++++++++++++++++++++++++++++++++++-----------
>>  1 files changed, 61 insertions(+), 19 deletions(-)
>>
>> diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
>> index b7ca461..9416887 100644
>> --- a/net/ipv6/ip6_output.c
>> +++ b/net/ipv6/ip6_output.c
>> @@ -1191,19 +1191,23 @@ int ip6_append_data(struct sock *sk, int getfrag(void *from, char *to,
>>  	struct ipv6_pinfo *np = inet6_sk(sk);
>>  	struct inet_cork *cork;
>>  	struct sk_buff *skb;
>> -	unsigned int maxfraglen, fragheaderlen;
>> +	unsigned int maxfraglen, maxfraglen_prev, fragheaderlen;
>>  	int exthdrlen;
>>  	int dst_exthdrlen;
>>  	int hh_len;
>> -	int mtu;
>> +	int mtu, mtu_prev;
>>  	int copy;
>>  	int err;
>>  	int offset = 0;
>>  	int csummode = CHECKSUM_NONE;
>>  	__u8 tx_flags = 0;
>> -
>> +	bool transport_mode = false;
>> +	struct xfrm_state *x = rt->dst.xfrm;
>>  	if (flags&MSG_PROBE)
>>  		return 0;
>> +	if (x && x->props.mode == XFRM_MODE_TRANSPORT)
>> +		transport_mode = true;
>> +
> 
> Btw. beet mode should behave like transport mode here, just tunnel
> mode was changed to do fragmentation before the transformation.
> 

thanks steffen,I miss it and CONFIG_XFRM...

^ permalink raw reply

* [PATCH 6/7] pch_gbe: Do not abort probe on bad MAC
From: Tomoya MORINAGA @ 2012-05-15  2:11 UTC (permalink / raw)
  To: stable
  Cc: Tomoya MORINAGA, Darren Hart, Arjan van de Ven, Alan Cox,
	Jeff Kirsher, David S. Miller, Paul Gortmaker, Jon Mason, netdev,
	Mark Brown, David Laight, Joe Perches
In-Reply-To: <1337047891-2973-1-git-send-email-tomoya.rohm@gmail.com>

If the MAC is invalid or not implemented, do not abort the probe. Issue
a warning and prevent bringing the interface up until a MAC is set manually
(via ifconfig $IFACE hw ether $MAC).

Tested on two platforms, one with a valid MAC, the other without a MAC. The real
MAC is used if present, the interface fails to come up until the MAC is set on
the other. They successfully get an IP over DHCP and pass a simple ping and
login over ssh test.

This is meant to allow the Inforce SYS940X development board:
http://www.inforcecomputing.com/SYS940X_ECX.html
(and others suffering from a missing MAC) to work with the mainline kernel.
Without this patch, the probe will fail and the interface will not be created,
preventing the user from configuring the MAC manually.

This does not make any attempt to address a missing or invalid MAC for the
pch_phub driver.

commit 2b53d07891630dead46d65c8f896955fd3ae0302
Kernel 3.0

Cc: stable@vger.kernel.org
Signed-off-by: Darren Hart <dvhart@linux.intel.com>
CC: Arjan van de Ven <arjan@linux.intel.com>
CC: Alan Cox <alan@linux.intel.com>
CC: Tomoya MORINAGA <tomoya.rohm@gmail.com>
CC: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
CC: "David S. Miller" <davem@davemloft.net>
CC: Paul Gortmaker <paul.gortmaker@windriver.com>
CC: Jon Mason <jdmason@kudzu.us>
CC: netdev@vger.kernel.org
CC: Mark Brown <broonie@opensource.wolfsonmicro.com>
CC: David Laight <David.Laight@ACULAB.COM>
CC: Joe Perches <joe@perches.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Tomoya MORINAGA <tomoya.rohm@gmail.com>
---
 drivers/net/pch_gbe/pch_gbe_main.c |   17 ++++++++++++++---
 1 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/drivers/net/pch_gbe/pch_gbe_main.c b/drivers/net/pch_gbe/pch_gbe_main.c
index b8b4ba2..d506e28 100644
--- a/drivers/net/pch_gbe/pch_gbe_main.c
+++ b/drivers/net/pch_gbe/pch_gbe_main.c
@@ -1745,6 +1745,12 @@ int pch_gbe_up(struct pch_gbe_adapter *adapter)
 	struct pch_gbe_rx_ring *rx_ring = adapter->rx_ring;
 	int err;
 
+	/* Ensure we have a valid MAC */
+	if (!is_valid_ether_addr(adapter->hw.mac.addr)) {
+		pr_err("Error: Invalid MAC address\n");
+		return -EINVAL;
+	}
+
 	/* hardware has been reset, we need to reload some things */
 	pch_gbe_set_multi(netdev);
 
@@ -2467,9 +2473,14 @@ static int pch_gbe_probe(struct pci_dev *pdev,
 
 	memcpy(netdev->dev_addr, adapter->hw.mac.addr, netdev->addr_len);
 	if (!is_valid_ether_addr(netdev->dev_addr)) {
-		dev_err(&pdev->dev, "Invalid MAC Address\n");
-		ret = -EIO;
-		goto err_free_adapter;
+		/*
+		 * If the MAC is invalid (or just missing), display a warning
+		 * but do not abort setting up the device. pch_gbe_up will
+		 * prevent the interface from being brought up until a valid MAC
+		 * is set.
+		 */
+		dev_err(&pdev->dev, "Invalid MAC address, "
+		                    "interface disabled.\n");
 	}
 	setup_timer(&adapter->watchdog_timer, pch_gbe_watchdog,
 		    (unsigned long)adapter);
-- 
1.7.7.6

^ permalink raw reply related

* Re: [PATCH 0/4] netfilter fixes for 3.4-rc7
From: Pablo Neira Ayuso @ 2012-05-14 23:25 UTC (permalink / raw)
  To: David Miller; +Cc: netfilter-devel, netdev
In-Reply-To: <20120514.185607.1967456974676336550.davem@davemloft.net>

On Mon, May 14, 2012 at 06:56:07PM -0400, David Miller wrote:
> From: pablo@netfilter.org
> Date: Mon, 14 May 2012 13:46:59 +0200
> 
> > * One fix for possible timeout overflow for ipset, from Jozsef
> >   Kadlecsik.
> > 
> > * One fix to ensure that hash size is correct, again for ipset
> >   from Jozsef Kadlecsik.
> > 
> > * Removal of redundant include in xt_CT from Eldad Zack.
> > 
> > * Fix for wrong usage of MODULE_ALIAS_NFCT_HELPER in nf_ct_h323
> >   helper from myself.
> 
> I don't consider any of these appropriate this late in the -RC
> series.
> 
> They don't fix major regressions seen by many users.
> 
> And the duplicate header include is extremely out-of-scope and
> inappropriate.
> 
> Sorry.

No problem, I'll schedule those for net-next.

^ permalink raw reply

* Re: [PATCH 0/4] netfilter fixes for 3.4-rc7
From: David Miller @ 2012-05-14 22:56 UTC (permalink / raw)
  To: pablo; +Cc: netfilter-devel, netdev
In-Reply-To: <1336996023-20249-1-git-send-email-pablo@netfilter.org>

From: pablo@netfilter.org
Date: Mon, 14 May 2012 13:46:59 +0200

> * One fix for possible timeout overflow for ipset, from Jozsef
>   Kadlecsik.
> 
> * One fix to ensure that hash size is correct, again for ipset
>   from Jozsef Kadlecsik.
> 
> * Removal of redundant include in xt_CT from Eldad Zack.
> 
> * Fix for wrong usage of MODULE_ALIAS_NFCT_HELPER in nf_ct_h323
>   helper from myself.

I don't consider any of these appropriate this late in the -RC
series.

They don't fix major regressions seen by many users.

And the duplicate header include is extremely out-of-scope and
inappropriate.

Sorry.

^ permalink raw reply

* Re: [net-next 3/3] stmmac: fix suspend/resume locking
From: David Miller @ 2012-05-14 22:54 UTC (permalink / raw)
  To: peppe.cavallaro; +Cc: netdev
In-Reply-To: <1336983523-4075-3-git-send-email-peppe.cavallaro@st.com>

From: Giuseppe CAVALLARO <peppe.cavallaro@st.com>
Date: Mon, 14 May 2012 10:18:43 +0200

> Upon resume from standby, there is a possible interrupt
> unsafe locking scenario raised when configure the Kernel
> with CONFIG_PROVE_LOCKING. So this patch fixes that in
> PM driver stuff by calling lock/unlock_irqsave/restore.
> 
> Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com>

Applied.

^ permalink raw reply

* Re: [net-next 2/3 (v2)] stmmac: add mixed burst for DMA
From: David Miller @ 2012-05-14 22:54 UTC (permalink / raw)
  To: peppe.cavallaro; +Cc: netdev
In-Reply-To: <1336983523-4075-2-git-send-email-peppe.cavallaro@st.com>

From: Giuseppe CAVALLARO <peppe.cavallaro@st.com>
Date: Mon, 14 May 2012 10:18:42 +0200

> From: Giuseppe CAVALLARO <peppe.cavallaro@st.com>
> 
> In mixed burst (MB) mode, the AHB master always initiates
> the bursts with fixed-size when the DMA requests transfers
> of size less than or equal to 16 beats.
> This patch adds the MB support and the flag that can be
> passed from the platform to select it.
> MB mode can also give some benefits in terms of performances
> on some platforms.
> 
> v2: fixed Coding Style
> 
> Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com>

Applied.

^ permalink raw reply

* Re: [net-next 1/3 (v2)] stmmac: extend mac addr reg and fix perfect filering
From: David Miller @ 2012-05-14 22:53 UTC (permalink / raw)
  To: peppe.cavallaro; +Cc: netdev, gianni.antoniazzi-ext
In-Reply-To: <1336983523-4075-1-git-send-email-peppe.cavallaro@st.com>

From: Giuseppe CAVALLARO <peppe.cavallaro@st.com>
Date: Mon, 14 May 2012 10:18:41 +0200

> From: Giuseppe CAVALLARO <peppe.cavallaro@st.com>
> 
> This patch is to extend the number of MAC address registers
> for 16 to 32. In fact, other new 16 registers are available in new
> chips and this can help on perfect filter mode for unicast.
> 
> This patch also fixes the perfect filtering mode by setting the
> bit 31 in the MAC address registers.
> 
> v2: fixed Coding Style.
> 
> Signed-off-by: Gianni Antoniazzi <gianni.antoniazzi-ext@st.com>
> Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com>

Applied.

^ permalink raw reply

* Re: [PATCH v3 6/6] net: sh_eth: use NAPI
From: David Miller @ 2012-05-14 22:50 UTC (permalink / raw)
  To: yoshihiro.shimoda.uh; +Cc: netdev, linux-sh
In-Reply-To: <4FB0AA7C.1000603@renesas.com>

From: "Shimoda, Yoshihiro" <yoshihiro.shimoda.uh@renesas.com>
Date: Mon, 14 May 2012 15:47:24 +0900

> This patch modifies the driver to use NAPI.
> 
> Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>

I think your TX path is still extremely racey.

No locks are held here, so you tell me what happens if we execute:

> +	/* check txdesc */
> +	txfree_num = sh_eth_txfree(ndev);
> +	if (txfree_num)

and at this exact moment the queue was in fact already awake and
another thread of control transmits packets, and this action fills up
the TX queue and stops the queue.

>  		netif_wake_queue(ndev);

This will erroneously wake the queue and trigger the debugging
message in your TX function.

You need strict synchronization between your TX queueing and TX
liberation flows.  So that queue stop and wake are only performed
at the correct moment.

In fact, looking at how the mdp->lock is used in your TX routine, it
seems to protect absolutely against nothing.

Please read the TX flow of drivers/net/ethernet/broadcom/tg3.c to see
how to do this correctly, and lock free, in a NAPI driver.

^ permalink raw reply

* Re: [PATCH] ipv6: fix incorrect ipsec transport mode fragment
From: David Miller @ 2012-05-14 22:41 UTC (permalink / raw)
  To: steffen.klassert; +Cc: gaofeng, netdev, lw
In-Reply-To: <20120514130528.GA24733@secunet.com>

From: Steffen Klassert <steffen.klassert@secunet.com>
Date: Mon, 14 May 2012 15:05:28 +0200

> There might be other opinions, but I don't like to see this IPsec mode
> dependent stuff hacked into the generic ipv6 output path.

Completely agreed.

^ permalink raw reply

* Re: [net-next 06/12] ixgbe: Hardware Timestamping + PTP Hardware Clock (PHC)
From: Jacob Keller @ 2012-05-14 22:42 UTC (permalink / raw)
  To: Richard Cochran
  Cc: Kirsher, Jeffrey T, davem@davemloft.net, netdev@vger.kernel.org,
	gospo@redhat.com, sassmann@redhat.com
In-Reply-To: <20120512053458.GC2190@netboy.at.omicron.at>

On 05/11/2012 10:34 PM, Richard Cochran wrote:
> On Fri, May 11, 2012 at 07:23:44PM +0000, Keller, Jacob E wrote:
>>
>>
>> I believe this very rare case might be possible, but I don't think
>> that checking the ptp seqid will fix anything. In normal cases,
>> hardware latches Rx packet timestamp, then the ptp packet goes into
>> the queue and we process it shortly after. Before we process that
>> packet there will never be another packet in the queue that needs a
>> timestamp. We know this because the hardware stops timestamping
>> until we unlatch the RX registers. This should mean we don't need to
>> check the sequence ID, and spending time doing it would never fix
>> the issue you are talking about.
>>
>> The issue is for when a packet is timestamped and then never reaches
>> the queue. Then the rx stamp registers are locked for good, because
>> we never clear them, and hardware would never timestamp another
>> receive packet. I don't know a good solution to this, except to
>> clear the registers periodically. Do you have any suggestions?
>
> Well, one solution would be to check every received packet with the
> BPF in ptp_classify.h (whenever Rx time stamping is enabled).
>
> When the driver finds an event packet in the Rx queue, and
> TSYNCRXCTL[RXTT] is set, it reads out the time stamp along with
> RXSATRL/H. If the fields match, then add the time stamp to the skb.
>
> [ Or perhaps instead of using RXSATRL/H, just use the descriptor bit.
>    If *not* set, then the time stamp does not belong to this packet. ]
>
> HTH,
> Richard

sk_run_filter is always returning PTP_CLASS_NONE (0), instead of the 
correct type. Do you know what I am doing wrong? I can send you the 
patch I am working with...

- Jake

^ permalink raw reply

* Re: [PATCH] dm9000: some coldfire boards need this
From: David Miller @ 2012-05-14 22:40 UTC (permalink / raw)
  To: sfking; +Cc: netdev
In-Reply-To: <201205110949.46767.sfking@fdwdc.com>

From: Steven King <sfking@fdwdc.com>
Date: Fri, 11 May 2012 09:49:46 -0700

> Some coldfire boards (ie m5253demo) have a dm9000 onboard.
> 
> Signed-off-by: Steven King <sfking@fdwdc.com>

Applied to net-next, thanks.

^ permalink raw reply

* Re: [PATCH v2] xfrm: take iphdr size into account for esp payload size calculation
From: David Miller @ 2012-05-14 22:39 UTC (permalink / raw)
  To: bpoirier; +Cc: netdev, kuznet, jmorris, yoshfuji, kaber, linux-kernel
In-Reply-To: <1336698442-25148-1-git-send-email-bpoirier@suse.de>

From: Benjamin Poirier <bpoirier@suse.de>
Date: Thu, 10 May 2012 21:07:22 -0400

> -	return mtu - 2;
> +	return ((mtu - x->props.header_len - crypto_aead_authsize(esp->aead) -
> +			l3_adj) & ~(align - 1)) + (l3_adj - 2);
>  }

The formatting of this expression is completely wrong, you need
to make the "l3_adj" in the second line be aligned with the openning
parenthesis on the previous line at a depth determined based upon
how deeply in the openning parenthesis context this expression sits.

Just using TABS is ugly, and not allowed.

Use something like emacs's "C mode" with Linux coding style enabled
to assist you if you can't figure it out yourself.

^ permalink raw reply

* Re: [PATCH] xfrm: make xfrm_algo.c a module
From: David Miller @ 2012-05-14 22:37 UTC (permalink / raw)
  To: JBeulich; +Cc: netdev, linux-kernel
In-Reply-To: <4FAA3EAF02000078000826E4@nat28.tlf.novell.com>

From: "Jan Beulich" <JBeulich@suse.com>
Date: Wed, 09 May 2012 08:53:51 +0100

> By making this a standalone config option (selected as needed),
> selecting CRYPTO from here rather than from XFRM (which is boolean)
> allows the core crypto code to become a module again even when XFRM=y.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
 ...
> @@ -15,9 +15,6 @@
>  #include <linux/crypto.h>
>  #include <linux/scatterlist.h>
>  #include <net/xfrm.h>
> -#if defined(CONFIG_INET_AH) || defined(CONFIG_INET_AH_MODULE) || defined(CONFIG_INET6_AH) || defined(CONFIG_INET6_AH_MODULE)
> -#include <net/ah.h>
> -#endif

This is completely unrelated to the change you are trying to make in
this patch.

It belongs in a separate change.

^ permalink raw reply

* Re: [PATCH net-next] codel: use Newton method instead of sqrt() and divides
From: David Miller @ 2012-05-14 22:33 UTC (permalink / raw)
  To: eric.dumazet
  Cc: dave.taht, netdev, nichols, van, codel, ycheng, mattmathis,
	therbert, shemminger, nanditad
In-Reply-To: <1336893803.8512.43.camel@edumazet-glaptop>

From: Eric Dumazet <eric.dumazet@gmail.com>
Date: Sun, 13 May 2012 09:23:23 +0200

> Fell free to add following cleanup patch, if you like it ;)
 ...
> [PATCH net-next] codel: use u16 field instead of 31bits for rec_inv_sqrt

I do, applied :-)

^ permalink raw reply

* Re: [PATCH 3/3] usbnet: fix skb traversing races during unlink(v1)
From: David Miller @ 2012-05-14 22:34 UTC (permalink / raw)
  To: tom.leiming-Re5JQEeQqe8AvxtiuMwx3w
  Cc: gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r,
	netdev-u79uwXL29TY76Z2rM5mHXA, linux-usb-u79uwXL29TY76Z2rM5mHXA,
	huajun.li.lee-Re5JQEeQqe8AvxtiuMwx3w, oneukum-l3A5Bk7waGM,
	stable-DgEjT+Ai2ygdnm+yROfE0A
In-Reply-To: <CACVXFVNYFSSP2+MFXAqT60E0qOp8+hjU3u0SbYoWHA_a5ouaxw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>

From: Ming Lei <tom.leiming-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Date: Thu, 10 May 2012 07:47:47 +0800

> Considered that this one(v2) doesn't depend on usb tree any more and looks
> no one objects it, could you apply this one on your tree?

I will, thanks.
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply

* Re: [PATCH net-next v4 02/13] mac802154: allocation of ieee802154 device
From: David Miller @ 2012-05-14 22:28 UTC (permalink / raw)
  To: alex.bluesman.smirnov; +Cc: netdev, dbaryshkov
In-Reply-To: <1336831165-23944-3-git-send-email-alex.bluesman.smirnov@gmail.com>

From: Alexander Smirnov <alex.bluesman.smirnov@gmail.com>
Date: Sat, 12 May 2012 17:59:14 +0400

> Add interface for device drivers to allocate and register ieee802154
> compatible device.
> 
> This code is based on net/mac80211/main.c file
> 
> Signed-off-by: Alexander Smirnov <alex.bluesman.smirnov@gmail.com>

Sorry, this needs to be fixed up.

I can almost understand using a comment formatting style I
disagree with, if you do so consistently.

But formatting them in THREE completely different ways?  Give me a
break:

> +	/* As in mac80211 slaves list is modified:
> +	 * 1) under the RTNL
> +	 * 2) protected by slaves_mtx;
> +	 * 3) in an RCU manner
> +	 *
> +	 * So atomic readers can use any of this protection methods
> +	 */
 ...
> +	/* This one is used for scanning and other
> +	 * jobs not to be interfered with serial driver */
 ...
> +	/*
> +	 * The following flag is also modified under slaves_mtx and RTNL,
> +	 * so you can read them using any of protection methods.
> +	 */
> +	/*
> +	 * SoftMAC device is registered and running. One can add
> +	 * subinterfaces.
> +	 */

That's just beyond silly, and the last two comments are right next to
eachother just combine them to one.

Go over your entire patch set and make sure that all of your comments
are of the form:

	/* Like
	 * this.
	 */

^ permalink raw reply

* Re: pull request: batman-adv 2012-05-14
From: David Miller @ 2012-05-14 22:17 UTC (permalink / raw)
  To: ordex-GaUfNO9RBHfsrOwW+9ziJQ
  Cc: netdev-u79uwXL29TY76Z2rM5mHXA,
	b.a.t.m.a.n-ZwoEplunGu2X36UT3dwllkB+6BGkLq7r
In-Reply-To: <1336979858-13928-1-git-send-email-ordex-GaUfNO9RBHfsrOwW+9ziJQ@public.gmane.org>

From: Antonio Quartulli <ordex-GaUfNO9RBHfsrOwW+9ziJQ@public.gmane.org>
Date: Mon, 14 May 2012 09:17:30 +0200

> Hello David,
> 
> here is our last set of changes intended for net-next/linux-3.5.
> In this patchset there are:
> 
> 1) several minor cleanups and fixes
> 2) an optimisation that avoid to linearise the whole packet when not needed
> 3) an optimisation for client traffic rerouting after a roaming event.
> 
> Patches that modify the whole naming schema will be sent later for merging
> with linux-3.6.

Pulled, thanks.

^ permalink raw reply

* Re: pull request: wireless-next 2012-05-14
From: David Miller @ 2012-05-14 22:12 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, netdev
In-Reply-To: <20120514195508.GC2428@tuxdriver.com>

From: "John W. Linville" <linville@tuxdriver.com>
Date: Mon, 14 May 2012 15:55:08 -0400

> This is essentially the same batch of updates for 3.5 that I originally
> offered ~1.5 weeks ago.  The difference is that I rebased the tree
> both to drop the offending bluetooth-next pull and to base on top of
> a more recent net-next in order to resolve the continuing NLA_PUT_*
> issues affecting linux-next.  I also took the opportunity to resolve
> a little merge damage resulting from a recent pull of the net tree
> into net-next.
> 
> Other highlights of this pull request include some HT enhancements
> for mac80211, an expansion of the ethtool support for cfg80211-
> and mac80211-based drivers, and some more iwlwifi refactoring.
> 
> Please let me know if there are problems!

Pulled, thanks John.

^ permalink raw reply

* Re: [PATCH v2] net: codel: fix build errors
From: Sasha Levin @ 2012-05-14 22:09 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: edumazet, dave.taht, davem, linux-kernel, netdev
In-Reply-To: <20120514150544.6b17d3c5@nehalam.linuxnetplumber.net>

On Tue, May 15, 2012 at 12:05 AM, Stephen Hemminger
<shemminger@vyatta.com> wrote:
> On Mon, 14 May 2012 23:57:06 +0200
> Sasha Levin <levinsasha928@gmail.com> wrote:
>
>> Fix the following build error:
>>
>> net/sched/sch_fq_codel.c: In function 'fq_codel_dump_stats':
>> net/sched/sch_fq_codel.c:464:3: error: unknown field 'qdisc_stats' specified in initializer
>> net/sched/sch_fq_codel.c:464:3: warning: missing braces around initializer
>> net/sched/sch_fq_codel.c:464:3: warning: (near initialization for 'st.<anonymous>')
>> net/sched/sch_fq_codel.c:465:3: error: unknown field 'qdisc_stats' specified in initializer
>> net/sched/sch_fq_codel.c:465:3: warning: excess elements in struct initializer
>> net/sched/sch_fq_codel.c:465:3: warning: (near initialization for 'st')
>> net/sched/sch_fq_codel.c:466:3: error: unknown field 'qdisc_stats' specified in initializer
>> net/sched/sch_fq_codel.c:466:3: warning: excess elements in struct initializer
>> net/sched/sch_fq_codel.c:466:3: warning: (near initialization for 'st')
>> net/sched/sch_fq_codel.c:467:3: error: unknown field 'qdisc_stats' specified in initializer
>> net/sched/sch_fq_codel.c:467:3: warning: excess elements in struct initializer
>> net/sched/sch_fq_codel.c:467:3: warning: (near initialization for 'st')
>> make[1]: *** [net/sched/sch_fq_codel.o] Error 1
>>
>> Signed-off-by: Sasha Levin <levinsasha928@gmail.com>
>> ---
>>  net/sched/sch_fq_codel.c |    9 +++++----
>>  1 files changed, 5 insertions(+), 4 deletions(-)
>>
>> diff --git a/net/sched/sch_fq_codel.c b/net/sched/sch_fq_codel.c
>> index a7b3754..337ff20 100644
>> --- a/net/sched/sch_fq_codel.c
>> +++ b/net/sched/sch_fq_codel.c
>> @@ -461,13 +461,14 @@ static int fq_codel_dump_stats(struct Qdisc *sch, struct gnet_dump *d)
>>       struct fq_codel_sched_data *q = qdisc_priv(sch);
>>       struct tc_fq_codel_xstats st = {
>>               .type                           = TCA_FQ_CODEL_XSTATS_QDISC,
>> -             .qdisc_stats.maxpacket          = q->cstats.maxpacket,
>> -             .qdisc_stats.drop_overlimit     = q->drop_overlimit,
>> -             .qdisc_stats.ecn_mark           = q->cstats.ecn_mark,
>> -             .qdisc_stats.new_flow_count     = q->new_flow_count,
>>       };
>>       struct list_head *pos;
>>
>> +     st.qdisc_stats.maxpacket = q->cstats.maxpacket;
>> +     st.qdisc_stats.drop_overlimit = q->drop_overlimit;
>> +     st.qdisc_stats.ecn_mark = q->cstats.ecn_mark;
>> +     st.qdisc_stats.new_flow_count = q->new_flow_count;
>> +
>>       list_for_each(pos, &q->new_flows)
>>               st.qdisc_stats.new_flows_len++;
>>
>
> Cleaner and simpler to just use nested initialization.
>        struct tc_fq_codel_xstats st = {
>                .type                           = TCA_FQ_CODEL_XSTATS_QDISC,
>                .qdisc_stats = {
>                        .maxpacket      = q->cstats.maxpacket,
>                        .drop_overlimit = q->drop_overlimit,
>                        .ecn_mark       = q->cstats.ecn_mark,
>                        .new_flow_count = q->new_flow_count,
>                },
>        };

You'll get the same errors. You can't directly initialize members that
are in an anonymous union.

^ permalink raw reply

* Re: [PATCH v2] net: codel: fix build errors
From: Stephen Hemminger @ 2012-05-14 22:05 UTC (permalink / raw)
  To: Sasha Levin; +Cc: edumazet, dave.taht, davem, linux-kernel, netdev
In-Reply-To: <1337032626-7104-1-git-send-email-levinsasha928@gmail.com>

On Mon, 14 May 2012 23:57:06 +0200
Sasha Levin <levinsasha928@gmail.com> wrote:

> Fix the following build error:
> 
> net/sched/sch_fq_codel.c: In function 'fq_codel_dump_stats':
> net/sched/sch_fq_codel.c:464:3: error: unknown field 'qdisc_stats' specified in initializer
> net/sched/sch_fq_codel.c:464:3: warning: missing braces around initializer
> net/sched/sch_fq_codel.c:464:3: warning: (near initialization for 'st.<anonymous>')
> net/sched/sch_fq_codel.c:465:3: error: unknown field 'qdisc_stats' specified in initializer
> net/sched/sch_fq_codel.c:465:3: warning: excess elements in struct initializer
> net/sched/sch_fq_codel.c:465:3: warning: (near initialization for 'st')
> net/sched/sch_fq_codel.c:466:3: error: unknown field 'qdisc_stats' specified in initializer
> net/sched/sch_fq_codel.c:466:3: warning: excess elements in struct initializer
> net/sched/sch_fq_codel.c:466:3: warning: (near initialization for 'st')
> net/sched/sch_fq_codel.c:467:3: error: unknown field 'qdisc_stats' specified in initializer
> net/sched/sch_fq_codel.c:467:3: warning: excess elements in struct initializer
> net/sched/sch_fq_codel.c:467:3: warning: (near initialization for 'st')
> make[1]: *** [net/sched/sch_fq_codel.o] Error 1
> 
> Signed-off-by: Sasha Levin <levinsasha928@gmail.com>
> ---
>  net/sched/sch_fq_codel.c |    9 +++++----
>  1 files changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/net/sched/sch_fq_codel.c b/net/sched/sch_fq_codel.c
> index a7b3754..337ff20 100644
> --- a/net/sched/sch_fq_codel.c
> +++ b/net/sched/sch_fq_codel.c
> @@ -461,13 +461,14 @@ static int fq_codel_dump_stats(struct Qdisc *sch, struct gnet_dump *d)
>  	struct fq_codel_sched_data *q = qdisc_priv(sch);
>  	struct tc_fq_codel_xstats st = {
>  		.type				= TCA_FQ_CODEL_XSTATS_QDISC,
> -		.qdisc_stats.maxpacket		= q->cstats.maxpacket,
> -		.qdisc_stats.drop_overlimit	= q->drop_overlimit,
> -		.qdisc_stats.ecn_mark		= q->cstats.ecn_mark,
> -		.qdisc_stats.new_flow_count	= q->new_flow_count,
>  	};
>  	struct list_head *pos;
>  
> +	st.qdisc_stats.maxpacket = q->cstats.maxpacket;
> +	st.qdisc_stats.drop_overlimit = q->drop_overlimit;
> +	st.qdisc_stats.ecn_mark = q->cstats.ecn_mark;
> +	st.qdisc_stats.new_flow_count = q->new_flow_count;
> +
>  	list_for_each(pos, &q->new_flows)
>  		st.qdisc_stats.new_flows_len++;
>  

Cleaner and simpler to just use nested initialization.
 	struct tc_fq_codel_xstats st = {
		.type				= TCA_FQ_CODEL_XSTATS_QDISC,
		.qdisc_stats = {
			.maxpacket	= q->cstats.maxpacket,
			.drop_overlimit	= q->drop_overlimit,
			.ecn_mark	= q->cstats.ecn_mark,
			.new_flow_count	= q->new_flow_count,
		},
	};

^ permalink raw reply

* Re: [PATCH v2] net: codel: fix build errors
From: Eric Dumazet @ 2012-05-14 22:00 UTC (permalink / raw)
  To: Sasha Levin; +Cc: edumazet, dave.taht, davem, linux-kernel, netdev
In-Reply-To: <1337032626-7104-1-git-send-email-levinsasha928@gmail.com>

On Mon, 2012-05-14 at 23:57 +0200, Sasha Levin wrote:
> Fix the following build error:
> 
> net/sched/sch_fq_codel.c: In function 'fq_codel_dump_stats':
> net/sched/sch_fq_codel.c:464:3: error: unknown field 'qdisc_stats' specified in initializer
> net/sched/sch_fq_codel.c:464:3: warning: missing braces around initializer
> net/sched/sch_fq_codel.c:464:3: warning: (near initialization for 'st.<anonymous>')
> net/sched/sch_fq_codel.c:465:3: error: unknown field 'qdisc_stats' specified in initializer
> net/sched/sch_fq_codel.c:465:3: warning: excess elements in struct initializer
> net/sched/sch_fq_codel.c:465:3: warning: (near initialization for 'st')
> net/sched/sch_fq_codel.c:466:3: error: unknown field 'qdisc_stats' specified in initializer
> net/sched/sch_fq_codel.c:466:3: warning: excess elements in struct initializer
> net/sched/sch_fq_codel.c:466:3: warning: (near initialization for 'st')
> net/sched/sch_fq_codel.c:467:3: error: unknown field 'qdisc_stats' specified in initializer
> net/sched/sch_fq_codel.c:467:3: warning: excess elements in struct initializer
> net/sched/sch_fq_codel.c:467:3: warning: (near initialization for 'st')
> make[1]: *** [net/sched/sch_fq_codel.o] Error 1
> 
> Signed-off-by: Sasha Levin <levinsasha928@gmail.com>
> ---

Acked-by: Eric Dumazet <edumazet@google.com>

^ permalink raw reply

* Re: [PATCH v2] net: codel: fix build errors
From: David Miller @ 2012-05-14 21:59 UTC (permalink / raw)
  To: levinsasha928; +Cc: edumazet, dave.taht, linux-kernel, netdev
In-Reply-To: <1337032626-7104-1-git-send-email-levinsasha928@gmail.com>

From: Sasha Levin <levinsasha928@gmail.com>
Date: Mon, 14 May 2012 23:57:06 +0200

> Fix the following build error:
  ...
> Signed-off-by: Sasha Levin <levinsasha928@gmail.com>

Applied, but:

>  	struct tc_fq_codel_xstats st = {
>  		.type				= TCA_FQ_CODEL_XSTATS_QDISC,
> -		.qdisc_stats.maxpacket		= q->cstats.maxpacket,
> -		.qdisc_stats.drop_overlimit	= q->drop_overlimit,
> -		.qdisc_stats.ecn_mark		= q->cstats.ecn_mark,
> -		.qdisc_stats.new_flow_count	= q->new_flow_count,
>  	};
>  	struct list_head *pos;
>  
> +	st.qdisc_stats.maxpacket = q->cstats.maxpacket;
> +	st.qdisc_stats.drop_overlimit = q->drop_overlimit;
> +	st.qdisc_stats.ecn_mark = q->cstats.ecn_mark;
> +	st.qdisc_stats.new_flow_count = q->new_flow_count;
> +

This is now a very inefficient initialization of this structure.

GCC is going to fill all the non-explictly-initialized fields with
zero, then we'll write to the same fields again in the st.qdisc*
assignments.

Eric please resolve this, I hate knowing we have code like this :-)

^ permalink raw reply

* Re: [PATCH -next] net/codel: Add missing #include <linux/prefetch.h>
From: David Miller @ 2012-05-14 21:59 UTC (permalink / raw)
  To: eric.dumazet; +Cc: geert, edumazet, dave.taht, netdev, linux-kernel, linux-next
In-Reply-To: <1337029498.8512.624.camel@edumazet-glaptop>

From: Eric Dumazet <eric.dumazet@gmail.com>
Date: Mon, 14 May 2012 23:04:58 +0200

> On Mon, 2012-05-14 at 21:47 +0200, Geert Uytterhoeven wrote:
>> m68k allmodconfig:
>> 
>> net/sched/sch_codel.c: In function ‘dequeue’:
>> net/sched/sch_codel.c:70: error: implicit declaration of function ‘prefetch’
>> make[1]: *** [net/sched/sch_codel.o] Error 1
>> 
>> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
>> ---
> 
> I plaid guilty
> 
> Acked-by: Eric Dumazet <edumazet@google.com>

Applied.

^ permalink raw reply

* [PATCH v2] net: codel: fix build errors
From: Sasha Levin @ 2012-05-14 21:57 UTC (permalink / raw)
  To: edumazet, dave.taht, davem; +Cc: linux-kernel, netdev, Sasha Levin

Fix the following build error:

net/sched/sch_fq_codel.c: In function 'fq_codel_dump_stats':
net/sched/sch_fq_codel.c:464:3: error: unknown field 'qdisc_stats' specified in initializer
net/sched/sch_fq_codel.c:464:3: warning: missing braces around initializer
net/sched/sch_fq_codel.c:464:3: warning: (near initialization for 'st.<anonymous>')
net/sched/sch_fq_codel.c:465:3: error: unknown field 'qdisc_stats' specified in initializer
net/sched/sch_fq_codel.c:465:3: warning: excess elements in struct initializer
net/sched/sch_fq_codel.c:465:3: warning: (near initialization for 'st')
net/sched/sch_fq_codel.c:466:3: error: unknown field 'qdisc_stats' specified in initializer
net/sched/sch_fq_codel.c:466:3: warning: excess elements in struct initializer
net/sched/sch_fq_codel.c:466:3: warning: (near initialization for 'st')
net/sched/sch_fq_codel.c:467:3: error: unknown field 'qdisc_stats' specified in initializer
net/sched/sch_fq_codel.c:467:3: warning: excess elements in struct initializer
net/sched/sch_fq_codel.c:467:3: warning: (near initialization for 'st')
make[1]: *** [net/sched/sch_fq_codel.o] Error 1

Signed-off-by: Sasha Levin <levinsasha928@gmail.com>
---
 net/sched/sch_fq_codel.c |    9 +++++----
 1 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/net/sched/sch_fq_codel.c b/net/sched/sch_fq_codel.c
index a7b3754..337ff20 100644
--- a/net/sched/sch_fq_codel.c
+++ b/net/sched/sch_fq_codel.c
@@ -461,13 +461,14 @@ static int fq_codel_dump_stats(struct Qdisc *sch, struct gnet_dump *d)
 	struct fq_codel_sched_data *q = qdisc_priv(sch);
 	struct tc_fq_codel_xstats st = {
 		.type				= TCA_FQ_CODEL_XSTATS_QDISC,
-		.qdisc_stats.maxpacket		= q->cstats.maxpacket,
-		.qdisc_stats.drop_overlimit	= q->drop_overlimit,
-		.qdisc_stats.ecn_mark		= q->cstats.ecn_mark,
-		.qdisc_stats.new_flow_count	= q->new_flow_count,
 	};
 	struct list_head *pos;
 
+	st.qdisc_stats.maxpacket = q->cstats.maxpacket;
+	st.qdisc_stats.drop_overlimit = q->drop_overlimit;
+	st.qdisc_stats.ecn_mark = q->cstats.ecn_mark;
+	st.qdisc_stats.new_flow_count = q->new_flow_count;
+
 	list_for_each(pos, &q->new_flows)
 		st.qdisc_stats.new_flows_len++;
 
-- 
1.7.8.6

^ permalink raw reply related

* Re: [PATCH] net: codel: fix build errors
From: Eric Dumazet @ 2012-05-14 21:49 UTC (permalink / raw)
  To: Sasha Levin; +Cc: edumazet, dave.taht, davem, linux-kernel, netdev
In-Reply-To: <CA+1xoqfWR+BA4xqqG+8SzVGYSH1z6nu_=iEFX7XoZzMhv_GvqA@mail.gmail.com>

On Mon, 2012-05-14 at 23:39 +0200, Sasha Levin wrote:
> On Mon, May 14, 2012 at 11:08 PM, Eric Dumazet <eric.dumazet@gmail.com> wrote:
> > Anonymous unions are fine, we use them a lot in kernel.
> 
> While we use them a lot, we don't try initializing them that often.
> 
> > Please fix the initializers instead in fq_codel_dump_stats(), because
> > these two #define are not very nice.
> 
> The only method I know of fixing that up is getting braces around them
> in the initializer, which is hacky and will break every time a new
> member is added to the struct before the anonymous union. Is there a
> different solution?


instead of 

	struct foo x = {
		.field = value;
		.sub.f2 = xxx;
		...
	};

use :

	struct foo x = {
		.field = value;
	};

	x.sub.f2 = xxx;
	...

^ 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