Netdev List
 help / color / mirror / Atom feed
* Re: [PATCHv3] sctp: Enforce retransmission limit during shutdown
From: Vladislav Yasevich @ 2011-07-07 13:36 UTC (permalink / raw)
  To: netdev, davem, Wei Yongjun, Sridhar Samudrala, linux-sctp
In-Reply-To: <20110707102835.GA6277@canuck.infradead.org>

On 07/07/2011 06:28 AM, Thomas Graf wrote:
> When initiating a graceful shutdown while having data chunks
> on the retransmission queue with a peer which is in zero
> window mode the shutdown is never completed because the
> retransmission error count is reset periodically by the
> following two rules:
> 
>  - Do not timeout association while doing zero window probe.
>  - Reset overall error count when a heartbeat request has
>    been acknowledged.
> 
> The graceful shutdown will wait for all outstanding TSN to
> be acknowledged before sending the SHUTDOWN request. This
> never happens due to the peer's zero window not acknowledging
> the continuously retransmitted data chunks. Although the
> error counter is incremented for each failed retransmission,
> the receiving of the SACK announcing the zero window clears
> the error count again immediately. Also heartbeat requests
> continue to be sent periodically. The peer acknowledges these
> requests causing the error counter to be reset as well.
> 
> This patch changes behaviour to only reset the overall error
> counter for the above rules while not in shutdown. After
> reaching the maximum number of retransmission attempts, the
> T5 shutdown guard timer is scheduled to give the receiver
> some additional time to recover. The timer is stopped as soon
> as the receiver acknowledges any data.
> 
> The issue can be easily reproduced by establishing a sctp
> association over the loopback device, constantly queueing
> data at the sender while not reading any at the receiver.
> Wait for the window to reach zero, then initiate a shutdown
> by killing both processes simultaneously. The association
> will never be freed and the chunks on the retransmission
> queue will be retransmitted indefinitely.
> 
> Signed-off-by: Thomas Graf <tgraf@infradead.org>

Acked-by: Vlad Yasevich <vladislav.yasevich@hp.com>

Thanks
-vlad

> 
> diff --git a/include/net/sctp/command.h b/include/net/sctp/command.h
> index dd6847e..6506458 100644
> --- a/include/net/sctp/command.h
> +++ b/include/net/sctp/command.h
> @@ -63,6 +63,7 @@ typedef enum {
>  	SCTP_CMD_ECN_ECNE,	/* Do delayed ECNE processing. */
>  	SCTP_CMD_ECN_CWR,	/* Do delayed CWR processing.  */
>  	SCTP_CMD_TIMER_START,	/* Start a timer.  */
> +	SCTP_CMD_TIMER_START_ONCE, /* Start a timer once */
>  	SCTP_CMD_TIMER_RESTART,	/* Restart a timer. */
>  	SCTP_CMD_TIMER_STOP,	/* Stop a timer. */
>  	SCTP_CMD_INIT_CHOOSE_TRANSPORT, /* Choose transport for an INIT. */
> diff --git a/net/sctp/outqueue.c b/net/sctp/outqueue.c
> index 1c88c89..d036821 100644
> --- a/net/sctp/outqueue.c
> +++ b/net/sctp/outqueue.c
> @@ -1582,6 +1582,8 @@ static void sctp_check_transmitted(struct sctp_outq *q,
>  #endif /* SCTP_DEBUG */
>  	if (transport) {
>  		if (bytes_acked) {
> +			struct sctp_association *asoc = transport->asoc;
> +
>  			/* We may have counted DATA that was migrated
>  			 * to this transport due to DEL-IP operation.
>  			 * Subtract those bytes, since the were never
> @@ -1600,6 +1602,17 @@ static void sctp_check_transmitted(struct sctp_outq *q,
>  			transport->error_count = 0;
>  			transport->asoc->overall_error_count = 0;
>  
> +			/*
> +			 * While in SHUTDOWN PENDING, we may have started
> +			 * the T5 shutdown guard timer after reaching the
> +			 * retransmission limit. Stop that timer as soon
> +			 * as the receiver acknowledged any data.
> +			 */
> +			if (asoc->state == SCTP_STATE_SHUTDOWN_PENDING &&
> +			    del_timer(&asoc->timers
> +				[SCTP_EVENT_TIMEOUT_T5_SHUTDOWN_GUARD]))
> +					sctp_association_put(asoc);
> +
>  			/* Mark the destination transport address as
>  			 * active if it is not so marked.
>  			 */
> @@ -1629,10 +1642,15 @@ static void sctp_check_transmitted(struct sctp_outq *q,
>  			 * A sender is doing zero window probing when the
>  			 * receiver's advertised window is zero, and there is
>  			 * only one data chunk in flight to the receiver.
> +			 *
> +			 * Allow the association to timeout while in SHUTDOWN
> +			 * PENDING or SHUTDOWN RECEIVED in case the receiver
> +			 * stays in zero window mode forever.
>  			 */
>  			if (!q->asoc->peer.rwnd &&
>  			    !list_empty(&tlist) &&
> -			    (sack_ctsn+2 == q->asoc->next_tsn)) {
> +			    (sack_ctsn+2 == q->asoc->next_tsn) &&
> +			    q->asoc->state < SCTP_STATE_SHUTDOWN_PENDING) {
>  				SCTP_DEBUG_PRINTK("%s: SACK received for zero "
>  						  "window probe: %u\n",
>  						  __func__, sack_ctsn);
> diff --git a/net/sctp/sm_sideeffect.c b/net/sctp/sm_sideeffect.c
> index 534c2e5..6e0f882 100644
> --- a/net/sctp/sm_sideeffect.c
> +++ b/net/sctp/sm_sideeffect.c
> @@ -670,10 +670,19 @@ static void sctp_cmd_transport_on(sctp_cmd_seq_t *cmds,
>  	/* 8.3 Upon the receipt of the HEARTBEAT ACK, the sender of the
>  	 * HEARTBEAT should clear the error counter of the destination
>  	 * transport address to which the HEARTBEAT was sent.
> -	 * The association's overall error count is also cleared.
>  	 */
>  	t->error_count = 0;
> -	t->asoc->overall_error_count = 0;
> +
> +	/*
> +	 * Although RFC4960 specifies that the overall error count must
> +	 * be cleared when a HEARTBEAT ACK is received, we make an
> +	 * exception while in SHUTDOWN PENDING. If the peer keeps its
> +	 * window shut forever, we may never be able to transmit our
> +	 * outstanding data and rely on the retransmission limit be reached
> +	 * to shutdown the association.
> +	 */
> +	if (t->asoc->state != SCTP_STATE_SHUTDOWN_PENDING)
> +		t->asoc->overall_error_count = 0;
>  
>  	/* Clear the hb_sent flag to signal that we had a good
>  	 * acknowledgement.
> @@ -1437,6 +1446,13 @@ static int sctp_cmd_interpreter(sctp_event_t event_type,
>  			sctp_cmd_setup_t2(commands, asoc, cmd->obj.ptr);
>  			break;
>  
> +		case SCTP_CMD_TIMER_START_ONCE:
> +			timer = &asoc->timers[cmd->obj.to];
> +
> +			if (timer_pending(timer))
> +				break;
> +			/* fall through */
> +
>  		case SCTP_CMD_TIMER_START:
>  			timer = &asoc->timers[cmd->obj.to];
>  			timeout = asoc->timeouts[cmd->obj.to];
> diff --git a/net/sctp/sm_statefuns.c b/net/sctp/sm_statefuns.c
> index a297283..2461171 100644
> --- a/net/sctp/sm_statefuns.c
> +++ b/net/sctp/sm_statefuns.c
> @@ -5154,7 +5154,7 @@ sctp_disposition_t sctp_sf_do_9_2_start_shutdown(
>  	 * The sender of the SHUTDOWN MAY also start an overall guard timer
>  	 * 'T5-shutdown-guard' to bound the overall time for shutdown sequence.
>  	 */
> -	sctp_add_cmd_sf(commands, SCTP_CMD_TIMER_START,
> +	sctp_add_cmd_sf(commands, SCTP_CMD_TIMER_RESTART,
>  			SCTP_TO(SCTP_EVENT_TIMEOUT_T5_SHUTDOWN_GUARD));
>  
>  	if (asoc->autoclose)
> @@ -5299,14 +5299,28 @@ sctp_disposition_t sctp_sf_do_6_3_3_rtx(const struct sctp_endpoint *ep,
>  	SCTP_INC_STATS(SCTP_MIB_T3_RTX_EXPIREDS);
>  
>  	if (asoc->overall_error_count >= asoc->max_retrans) {
> -		sctp_add_cmd_sf(commands, SCTP_CMD_SET_SK_ERR,
> -				SCTP_ERROR(ETIMEDOUT));
> -		/* CMD_ASSOC_FAILED calls CMD_DELETE_TCB. */
> -		sctp_add_cmd_sf(commands, SCTP_CMD_ASSOC_FAILED,
> -				SCTP_PERR(SCTP_ERROR_NO_ERROR));
> -		SCTP_INC_STATS(SCTP_MIB_ABORTEDS);
> -		SCTP_DEC_STATS(SCTP_MIB_CURRESTAB);
> -		return SCTP_DISPOSITION_DELETE_TCB;
> +		if (asoc->state == SCTP_STATE_SHUTDOWN_PENDING) {
> +			/*
> +			 * We are here likely because the receiver had its rwnd
> +			 * closed for a while and we have not been able to
> +			 * transmit the locally queued data within the maximum
> +			 * retransmission attempts limit.  Start the T5
> +			 * shutdown guard timer to give the receiver one last
> +			 * chance and some additional time to recover before
> +			 * aborting.
> +			 */
> +			sctp_add_cmd_sf(commands, SCTP_CMD_TIMER_START_ONCE,
> +				SCTP_TO(SCTP_EVENT_TIMEOUT_T5_SHUTDOWN_GUARD));
> +		} else {
> +			sctp_add_cmd_sf(commands, SCTP_CMD_SET_SK_ERR,
> +					SCTP_ERROR(ETIMEDOUT));
> +			/* CMD_ASSOC_FAILED calls CMD_DELETE_TCB. */
> +			sctp_add_cmd_sf(commands, SCTP_CMD_ASSOC_FAILED,
> +					SCTP_PERR(SCTP_ERROR_NO_ERROR));
> +			SCTP_INC_STATS(SCTP_MIB_ABORTEDS);
> +			SCTP_DEC_STATS(SCTP_MIB_CURRESTAB);
> +			return SCTP_DISPOSITION_DELETE_TCB;
> +		}
>  	}
>  
>  	/* E1) For the destination address for which the timer
> diff --git a/net/sctp/sm_statetable.c b/net/sctp/sm_statetable.c
> index 0338dc6..7c211a7 100644
> --- a/net/sctp/sm_statetable.c
> +++ b/net/sctp/sm_statetable.c
> @@ -827,7 +827,7 @@ static const sctp_sm_table_entry_t other_event_table[SCTP_NUM_OTHER_TYPES][SCTP_
>  	/* SCTP_STATE_ESTABLISHED */ \
>  	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \
>  	/* SCTP_STATE_SHUTDOWN_PENDING */ \
> -	TYPE_SCTP_FUNC(sctp_sf_timer_ignore), \
> +	TYPE_SCTP_FUNC(sctp_sf_t5_timer_expire), \
>  	/* SCTP_STATE_SHUTDOWN_SENT */ \
>  	TYPE_SCTP_FUNC(sctp_sf_t5_timer_expire), \
>  	/* SCTP_STATE_SHUTDOWN_RECEIVED */ \
> 


^ permalink raw reply

* Re: [PATCH] net/fec: gasket needs to be enabled for some i.mx
From: Shawn Guo @ 2011-07-07 13:41 UTC (permalink / raw)
  To: David Miller
  Cc: shawn.guo, netdev, linux-arm-kernel, u.kleine-koenig, LW,
	troy.kisky, s.hauer, Grant Likely
In-Reply-To: <20110707.041257.670268148869400054.davem@davemloft.net>

On Thu, Jul 07, 2011 at 04:12:57AM -0700, David Miller wrote:
> From: Shawn Guo <shawn.guo@linaro.org>
> Date: Fri,  1 Jul 2011 18:11:22 +0800
> 
> > On the recent i.mx (mx25/50/53), there is a gasket inside fec
> > controller which needs to be enabled no matter phy works in MII
> > or RMII mode.
> > 
> > The current code enables the gasket only when phy interface is RMII.
> > It's broken when the driver works with a MII phy.  The patch uses
> > platform_device_id to distinguish the SoCs that have the gasket and
> > enables it on these SoCs for both MII and RMII mode.
> > 
> > Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com>
> > Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
> 
> Acked-by: David S. Miller <davem@davemloft.net>
> --

Thanks, David.  I will try to get it through Sascha's tree after
the rebase again dt series.

Hi Sascha,

How should we proceed?  It seems Grant will take the fec-dt series
on his tree.  Would you then merge that tree into yours, so that I
can rebase this patch on your tree and get it go through there?

-- 
Regards,
Shawn


^ permalink raw reply

* [PATCH net-next-2.6] af_packet: lock imbalance
From: Eric Dumazet @ 2011-07-07 13:33 UTC (permalink / raw)
  To: David Miller; +Cc: netdev

fanout_add() might return with fanout_mutex held.

Reduce indentation level while we are at it

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
---
 net/packet/af_packet.c |   62 +++++++++++++++++++--------------------
 1 file changed, 31 insertions(+), 31 deletions(-)

diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c
index aec50a1..caa9fba 100644
--- a/net/packet/af_packet.c
+++ b/net/packet/af_packet.c
@@ -589,43 +589,43 @@ static int fanout_add(struct sock *sk, u16 id, u16 type_flags)
 			break;
 		}
 	}
+	err = -EINVAL;
 	if (match && match->defrag != defrag)
-		return -EINVAL;
+		goto out;
 	if (!match) {
+		err = -ENOMEM;
 		match = kzalloc(sizeof(*match), GFP_KERNEL);
-		if (match) {
-			write_pnet(&match->net, sock_net(sk));
-			match->id = id;
-			match->type = type;
-			match->defrag = defrag;
-			atomic_set(&match->rr_cur, 0);
-			INIT_LIST_HEAD(&match->list);
-			spin_lock_init(&match->lock);
-			atomic_set(&match->sk_ref, 0);
-			match->prot_hook.type = po->prot_hook.type;
-			match->prot_hook.dev = po->prot_hook.dev;
-			match->prot_hook.func = packet_rcv_fanout;
-			match->prot_hook.af_packet_priv = match;
-			dev_add_pack(&match->prot_hook);
-			list_add(&match->list, &fanout_list);
-		}
+		if (!match)
+			goto out;
+		write_pnet(&match->net, sock_net(sk));
+		match->id = id;
+		match->type = type;
+		match->defrag = defrag;
+		atomic_set(&match->rr_cur, 0);
+		INIT_LIST_HEAD(&match->list);
+		spin_lock_init(&match->lock);
+		atomic_set(&match->sk_ref, 0);
+		match->prot_hook.type = po->prot_hook.type;
+		match->prot_hook.dev = po->prot_hook.dev;
+		match->prot_hook.func = packet_rcv_fanout;
+		match->prot_hook.af_packet_priv = match;
+		dev_add_pack(&match->prot_hook);
+		list_add(&match->list, &fanout_list);
 	}
-	err = -ENOMEM;
-	if (match) {
-		err = -EINVAL;
-		if (match->type == type &&
-		    match->prot_hook.type == po->prot_hook.type &&
-		    match->prot_hook.dev == po->prot_hook.dev) {
-			err = -ENOSPC;
-			if (atomic_read(&match->sk_ref) < PACKET_FANOUT_MAX) {
-				__dev_remove_pack(&po->prot_hook);
-				po->fanout = match;
-				atomic_inc(&match->sk_ref);
-				__fanout_link(sk, po);
-				err = 0;
-			}
+	err = -EINVAL;
+	if (match->type == type &&
+	    match->prot_hook.type == po->prot_hook.type &&
+	    match->prot_hook.dev == po->prot_hook.dev) {
+		err = -ENOSPC;
+		if (atomic_read(&match->sk_ref) < PACKET_FANOUT_MAX) {
+			__dev_remove_pack(&po->prot_hook);
+			po->fanout = match;
+			atomic_inc(&match->sk_ref);
+			__fanout_link(sk, po);
+			err = 0;
 		}
 	}
+out:
 	mutex_unlock(&fanout_mutex);
 	return err;
 }



^ permalink raw reply related

* Re: RFT: virtio_net: limit xmit polling
From: Roopa Prabhu @ 2011-07-07 13:24 UTC (permalink / raw)
  To: Michael S. Tsirkin, Tom Lendacky
  Cc: Krishna Kumar2, habanero, lguest, Shirley Ma, kvm, Carsten Otte,
	linux-s390, Heiko Carstens, linux-kernel, virtualization, steved,
	Christian Borntraeger, netdev, Martin Schwidefsky, linux390
In-Reply-To: <20110629084206.GA14627@redhat.com>


[-- Attachment #1.1: Type: text/plain, Size: 1756 bytes --]




On 6/29/11 1:42 AM, "Michael S. Tsirkin" <mst@redhat.com> wrote:
> 
>> >roprabhu, Tom,
>> >
>> >Thanks very much for the testing. So on the first glance
>> >one seems to see a significant performance gain in V0 here,
>> >and a slightly less significant in V2, with V1
>> >being worse than base. But I'm afraid that's not the
>> >whole story, and we'll need to work some more to
>> >know what really goes on, please see below.
>> >
>> >
>> >Some comments on the results: I found out that V0 because of mistake
>> >on my part was actually almost identical to base.
>> >I pushed out virtio-net-limit-xmit-polling/v1a instead that
>> >actually does what I intended to check. However,
>> >the fact we get such a huge distribution in the results by Tom
>> >most likely means that the noise factor is very large.
>> >
>> >
>> >From my experience one way to get stable results is to
>> >divide the throughput by the host CPU utilization
>> >(measured by something like mpstat).
>> >Sometimes throughput doesn't increase (e.g. guest-host)
>> >by CPU utilization does decrease. So it's interesting.
>> >
>> >
>> >Another issue is that we are trying to improve the latency
>> >of a busy queue here. However STREAM/MAERTS tests ignore the latency
>> >(more or less) while TCP_RR by default runs a single packet per queue.
>> >Without arguing about whether these are practically interesting
>> >workloads, these results are thus unlikely to be significantly affected
>> >by the optimization in question.
>> >
>> >What we are interested in, thus, is either TCP_RR with a -b flag
>> >(configure with  --enable-burst) or multiple concurrent
>> >TCP_RRs.
> 
> ok sounds good. I am testing your v1a patch. Will try to get some results out
> end of this week. Thanks.
> 


[-- Attachment #1.2: Type: text/html, Size: 2328 bytes --]

[-- Attachment #2: Type: text/plain, Size: 184 bytes --]

_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linux-foundation.org/mailman/listinfo/virtualization

^ permalink raw reply

* [PATCH] e1000: always call e1000_check_for_link() on e1000_ce4100 MACs.
From: nschichan @ 2011-07-07 13:16 UTC (permalink / raw)
  To: Nicolas Schichan, Jeff Kirsher, Dirk Brandewie, netdev
  Cc: Florian Fainelli, stable, Nicolas Schichan

From: Nicolas Schichan <nschichan@freebox.fr>

Interrupts about link lost or rx sequence errors are not reported by
the ce4100 hardware, leading to transitions from link UP to link DOWN
never being reported.

Signed-off-by: Nicolas Schichan <nschichan@freebox.fr>
---
 drivers/net/e1000/e1000_main.c |   11 +++++++----
 1 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index 76e8af0..a02333f 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -2357,13 +2357,16 @@ bool e1000_has_link(struct e1000_adapter *adapter)
 	struct e1000_hw *hw = &adapter->hw;
 	bool link_active = false;
 
-	/* get_link_status is set on LSC (link status) interrupt or
-	 * rx sequence error interrupt.  get_link_status will stay
-	 * false until the e1000_check_for_link establishes link
-	 * for copper adapters ONLY
+	/* get_link_status is set on LSC (link status) interrupt or rx
+	 * sequence error interrupt (except on intel ce4100).
+	 * get_link_status will stay false until the
+	 * e1000_check_for_link establishes link for copper adapters
+	 * ONLY
 	 */
 	switch (hw->media_type) {
 	case e1000_media_type_copper:
+		if (hw->mac_type == e1000_ce4100)
+			hw->get_link_status = 1;
 		if (hw->get_link_status) {
 			e1000_check_for_link(hw);
 			link_active = !hw->get_link_status;
-- 
1.7.1


^ permalink raw reply related

* Re: [PATCH] sky2: use GFP_KERNEL allocations at device setup
From: David Miller @ 2011-07-07 13:13 UTC (permalink / raw)
  To: eric.dumazet; +Cc: netdev, shemminger
In-Reply-To: <1310044288.2127.12.camel@edumazet-HP-Compaq-6005-Pro-SFF-PC>

From: Eric Dumazet <eric.dumazet@gmail.com>
Date: Thu, 07 Jul 2011 15:11:28 +0200

> In process and sleep allowed context, favor GFP_KERNEL allocations over
> GFP_ATOMIC ones.
> 
> Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>

Applied, thanks Eric.

^ permalink raw reply

* Re: [PATCH v2 net-next af-packet 1/2] Enhance af-packet to provide (near zero)lossless packet capture functionality.
From: David Miller @ 2011-07-07 13:11 UTC (permalink / raw)
  To: loke.chetan
  Cc: netdev, eric.dumazet, joe, bhutchings, shemminger, linux-kernel
In-Reply-To: <CAAsGZS4Y=-GSmP+2iYtd+V3RcE2+PpaStBzW7R7TDip7U-rdvA@mail.gmail.com>

From: chetan loke <loke.chetan@gmail.com>
Date: Thu, 7 Jul 2011 09:04:58 -0400

> On Thu, Jul 7, 2011 at 3:13 AM, David Miller <davem@davemloft.net> wrote:
> 
>> Get rid of __packed__, it's going to kill performance on RISC
>> platforms.  If you use __packed__, regardless of the actual alignment,
> 
> The performance boost has been achieved by amortizing the cost of
> static spin-wait/poll and not by shrinking the data-set.

Chetan, if you're implementing something for performance reasons,
getting rid of packed is non-negotiable.

We pass data structures between userspace and the kernel all the
time, and without __packed__.  We have mechanisms to ensure the
size of the individual data types, and we have mechanisms to make
sure 64-bit datums get aligned even on x86 (see "aligned_u64" and
friends")

Again, I can't seriously consider your patch if you keep the packed
attribute crap in there.

^ permalink raw reply

* [PATCH] sky2: use GFP_KERNEL allocations at device setup
From: Eric Dumazet @ 2011-07-07 13:11 UTC (permalink / raw)
  To: David Miller; +Cc: netdev, Stephen Hemminger

In process and sleep allowed context, favor GFP_KERNEL allocations over
GFP_ATOMIC ones.

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
CC: Stephen Hemminger <shemminger@vyatta.com>
---
 drivers/net/sky2.c |   13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c
index e14b86e..c91513e 100644
--- a/drivers/net/sky2.c
+++ b/drivers/net/sky2.c
@@ -1362,13 +1362,14 @@ static inline unsigned sky2_rx_pad(const struct sky2_hw *hw)
  * Allocate an skb for receiving. If the MTU is large enough
  * make the skb non-linear with a fragment list of pages.
  */
-static struct sk_buff *sky2_rx_alloc(struct sky2_port *sky2)
+static struct sk_buff *sky2_rx_alloc(struct sky2_port *sky2, gfp_t gfp)
 {
 	struct sk_buff *skb;
 	int i;
 
-	skb = netdev_alloc_skb(sky2->netdev,
-			       sky2->rx_data_size + sky2_rx_pad(sky2->hw));
+	skb = __netdev_alloc_skb(sky2->netdev,
+				 sky2->rx_data_size + sky2_rx_pad(sky2->hw),
+				 gfp);
 	if (!skb)
 		goto nomem;
 
@@ -1386,7 +1387,7 @@ static struct sk_buff *sky2_rx_alloc(struct sky2_port *sky2)
 		skb_reserve(skb, NET_IP_ALIGN);
 
 	for (i = 0; i < sky2->rx_nfrags; i++) {
-		struct page *page = alloc_page(GFP_ATOMIC);
+		struct page *page = alloc_page(gfp);
 
 		if (!page)
 			goto free_partial;
@@ -1416,7 +1417,7 @@ static int sky2_alloc_rx_skbs(struct sky2_port *sky2)
 	for (i = 0; i < sky2->rx_pending; i++) {
 		struct rx_ring_info *re = sky2->rx_ring + i;
 
-		re->skb = sky2_rx_alloc(sky2);
+		re->skb = sky2_rx_alloc(sky2, GFP_KERNEL);
 		if (!re->skb)
 			return -ENOMEM;
 
@@ -2384,7 +2385,7 @@ static struct sk_buff *receive_new(struct sky2_port *sky2,
 	struct rx_ring_info nre;
 	unsigned hdr_space = sky2->rx_data_size;
 
-	nre.skb = sky2_rx_alloc(sky2);
+	nre.skb = sky2_rx_alloc(sky2, GFP_ATOMIC);
 	if (unlikely(!nre.skb))
 		goto nobuf;
 



^ permalink raw reply related

* Re: [PATCH v2 net-next af-packet 1/2] Enhance af-packet to provide (near zero)lossless packet capture functionality.
From: chetan loke @ 2011-07-07 13:04 UTC (permalink / raw)
  To: David Miller
  Cc: netdev, eric.dumazet, joe, bhutchings, shemminger, linux-kernel
In-Reply-To: <20110707.001301.1054777374178479078.davem@davemloft.net>

On Thu, Jul 7, 2011 at 3:13 AM, David Miller <davem@davemloft.net> wrote:

> Get rid of __packed__, it's going to kill performance on RISC
> platforms.  If you use __packed__, regardless of the actual alignment,

The performance boost has been achieved by amortizing the cost of
static spin-wait/poll and not by shrinking the data-set.


> the compiler must assume that each part of the struct "might" be
> unaligned.  So on architectures such as sparc where alignment matters,
> a word is going to be accessed by a sequence of byte loads/stores.
>
Haven't worked with sparc so I didn't know. Thanks for the insight.
One also needs to analyze both the user/kernel components.The app
reads the header(hdr_size <<< blk_size) just once and then walks the
entire block. Apps operate on local copy of the variable and not on
the header.

kernel components - almost everything is cached in kbdq_core. block is
updated while closing.

> Do not use packed unless absolutely enforced by a protocol or hardware
> data structure, it's evil.
>
Depends. Why not evaluate on case-by-case basis? All I need to do is
pass this definition of the header around and only mandate how wide
the fields should be.
Once packed, I don't need to worry about padding on different
OS's/arch's. All I care about is the offset to the first pkt and other
details. The block says - you provide me offset to the first packet
and I will start walking the packets.

Another way to look at it - you pack something and then no padding is
needed(not the right example because every pkt-header will be
byte-sequenced if packed but you get the idea) :
http://git2.kernel.org/?p=linux/kernel/git/davem/net-2.6.git;a=commit;h=13fcb7bd322164c67926ffe272846d4860196dc6


Chetan Loke

^ permalink raw reply

* Re: [PATCH 00/14] Swap-over-NBD without deadlocking v5
From: Christoph Hellwig @ 2011-07-07 12:58 UTC (permalink / raw)
  To: Mel Gorman
  Cc: Andrew Morton, Linux-MM, Linux-Netdev, LKML, David Miller,
	Neil Brown, Peter Zijlstra
In-Reply-To: <20110707094737.GG15285@suse.de>

On Thu, Jul 07, 2011 at 10:47:37AM +0100, Mel Gorman wrote:
> Additional complexity is required for swap-over-NFS but affects the
> core kernel far less than this series. I do not have a series prepared
> but from what's in a distro kernel, supporting NFS requires extending
> address_space_operations for swapfile activation/deactivation with
> some minor helpers and the bulk of the remaining complexity within
> NFS itself.

The biggest addition for swap over NFS is to add proper support for
a filesystem interface to do I/O on random kernel pages instead of
the current nasty bmap hack the swapfile code is using.  Splitting
that work from all the required VM infrastructure should make life
easier for everyone involved and allows merging it independeny as
both bits have other uses case as well.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply

* Re: [PATCH 2/2] vhost: set log when updating used flags or avail event
From: Michael S. Tsirkin @ 2011-07-07 12:57 UTC (permalink / raw)
  To: Jason Wang; +Cc: netdev, virtualization, linux-kernel, kvm
In-Reply-To: <20110621100438.6777.20695.stgit@dhcp-91-7.nay.redhat.com.englab.nay.redhat.com>

Subject: vhost: used ring logging cleanup

remove extra log bit setting for used ring updates: it's no longer
necessary.  Also, use vhost_avail_event instead of duplicating offset
math.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---

> We need set log when updating used flags and avail event. Otherwise guest may
> see stale values after migration and then do not exit or exit unexpectedly.
> 
> Signed-off-by: Jason Wang <jasowang@redhat.com>

OK but this means we set the log twice now.
Also, hardcording offset is not as nice as using
vhost_avail_event. So I think the below is needed
on top. Comments?

 drivers/vhost/vhost.c |   29 +++++++++--------------------
 1 files changed, 9 insertions(+), 20 deletions(-)

diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c
index 540591b..c5f96ba 100644
--- a/drivers/vhost/vhost.c
+++ b/drivers/vhost/vhost.c
@@ -946,14 +946,16 @@ int vhost_log_write(struct vhost_virtqueue *vq, struct vhost_log *log,
 
 static int vhost_update_used_flags(struct vhost_virtqueue *vq)
 {
+	void __user *used;
 	if (put_user(vq->used_flags, &vq->used->flags) < 0)
 		return -EFAULT;
 	if (unlikely(vq->log_used)) {
 		/* Make sure the flag is seen before log. */
 		smp_wmb();
 		/* Log used flag write. */
-		log_write(vq->log_base,
-			  vq->log_addr + offsetof(struct vring_used, flags),
+		used = &vq->used->flags;
+		log_write(vq->log_base, vq->log_addr +
+			  (used - (void __user *)vq->used),
 			  sizeof vq->used->flags);
 		if (vq->log_ctx)
 			eventfd_signal(vq->log_ctx, 1);
@@ -966,13 +968,14 @@ static int vhost_update_avail_event(struct vhost_virtqueue *vq, u16 avail_event)
 	if (put_user(vq->avail_idx, vhost_avail_event(vq)))
 		return -EFAULT;
 	if (unlikely(vq->log_used)) {
+		void __user *used;
 		/* Make sure the event is seen before log. */
 		smp_wmb();
 		/* Log avail event write */
-		log_write(vq->log_base,
-			  vq->log_addr + offsetof(struct vring_used,
-						  ring[vq->num]),
-			  sizeof avail_event);
+		used = vhost_avail_event(vq);
+		log_write(vq->log_base, vq->log_addr +
+			  (used - (void __user *)vq->used),
+			  sizeof *vhost_avail_event(vq));
 		if (vq->log_ctx)
 			eventfd_signal(vq->log_ctx, 1);
 	}
@@ -1474,20 +1477,6 @@ bool vhost_enable_notify(struct vhost_dev *dev, struct vhost_virtqueue *vq)
 			return false;
 		}
 	}
-	if (unlikely(vq->log_used)) {
-		void __user *used;
-		/* Make sure data is seen before log. */
-		smp_wmb();
-		used = vhost_has_feature(dev, VIRTIO_RING_F_EVENT_IDX) ?
-			&vq->used->flags : vhost_avail_event(vq);
-		/* Log used flags or event index entry write. Both are 16 bit
-		 * fields. */
-		log_write(vq->log_base, vq->log_addr +
-			   (used - (void __user *)vq->used),
-			  sizeof(u16));
-		if (vq->log_ctx)
-			eventfd_signal(vq->log_ctx, 1);
-	}
 	/* They could have slipped one in as we were doing that: make
 	 * sure it's written, then check again. */
 	smp_mb();
-- 
1.7.5.53.gc233e

^ permalink raw reply related

* Re: Getting the correct asix AX88178 usb gige driver in mainline?
From: Arnd Bergmann @ 2011-07-07 12:55 UTC (permalink / raw)
  To: Marc MERLIN; +Cc: netdev, greg
In-Reply-To: <20110706210857.GH22090@merlins.org>

On Wednesday 06 July 2011, Marc MERLIN wrote:
> > The patch I mentioned was merged back in 2006, for 2.6.19. Either that
> > patch was never complete and is missing support for your hardware, or
> > it broke since then. You should probably try an old kernel to see if it's
> > actually a regression.
> 
> Thanks for the details Arnd, I'll see if I can boot 2.6.19 on that laptop
> and report back.

I would perhaps try something less ancient first, 2.6.27-longterm would be
a good candidate. If it was working at some point but broken later, chances
are that it wasn't broken until a few years ago, rather than shortly after
it was merged.

	Arnd

^ permalink raw reply

* Re: [PATCH] ATM: Fix wrong usage of INIT_WORK
From: chas williams - CONTRACTOR @ 2011-07-07 12:29 UTC (permalink / raw)
  To: Wang Shaoyan; +Cc: David Miller, netdev, wangshaoyan.pt, linux-atm-general
In-Reply-To: <CANxBZFo_2P+hrjNDmvU0wai2CA7Ry3LJ9vk+pZ4ML1RR12LKTQ@mail.gmail.com>

On Thu, 7 Jul 2011 20:04:25 +0800
Wang Shaoyan <stufever@gmail.com> wrote:

> I just don't know whether the marco FILL_RX_POOLS_IN_BH is useful?

the macro doesnt seem to be useful in anyway.  it can simply be
eliminated.

^ permalink raw reply

* Re: [PATCH] ATM: Fix wrong usage of INIT_WORK
From: David Miller @ 2011-07-07 12:10 UTC (permalink / raw)
  To: stufever; +Cc: netdev, wangshaoyan.pt, chas, linux-atm-general
In-Reply-To: <CANxBZFo_2P+hrjNDmvU0wai2CA7Ry3LJ9vk+pZ4ML1RR12LKTQ@mail.gmail.com>

From: Wang Shaoyan <stufever@gmail.com>
Date: Thu, 7 Jul 2011 20:04:25 +0800

> I just don't know whether the marco FILL_RX_POOLS_IN_BH is useful?

Yes, another option is to delete all of the code protected by
that macro altogether.

It obviously hasn't been build tested in a long time, if at all.

^ permalink raw reply

* Re: [PATCH net next] bnx2x: Add dcbnl notification
From: David Miller @ 2011-07-07 12:11 UTC (permalink / raw)
  To: shmulikr; +Cc: eilong, netdev
In-Reply-To: <1310046941.22577.20.camel@lb-tlvb-shmulik.il.broadcom.com>

From: "Shmulik Ravid" <shmulikr@broadcom.com>
Date: Thu, 7 Jul 2011 16:55:41 +0300

> This patch adds a dcbnl notification to the bnx2x. The notification is
> sent to user mode clients following a change in the dcb negotiated
> parameters as resolved by the embedded DCBX stack. 
> 
> Signed-off-by: Shmulik Ravid <shmulikr@broadcom.com>
> Signed-off-by: Eilon Greenstein <eilong@broadcom.com>

Applied.

^ permalink raw reply

* [PATCH net next] bnx2x: Add dcbnl notification
From: Shmulik Ravid @ 2011-07-07 13:55 UTC (permalink / raw)
  To: davem; +Cc: Eilon Greenstein, netdev

This patch adds a dcbnl notification to the bnx2x. The notification is
sent to user mode clients following a change in the dcb negotiated
parameters as resolved by the embedded DCBX stack. 

Signed-off-by: Shmulik Ravid <shmulikr@broadcom.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
---
 drivers/net/bnx2x/bnx2x_dcb.c |   12 +++++++++---
 1 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/drivers/net/bnx2x/bnx2x_dcb.c b/drivers/net/bnx2x/bnx2x_dcb.c
index b51a759..45cf3ce 100644
--- a/drivers/net/bnx2x/bnx2x_dcb.c
+++ b/drivers/net/bnx2x/bnx2x_dcb.c
@@ -19,14 +19,14 @@
 #include <linux/netdevice.h>
 #include <linux/types.h>
 #include <linux/errno.h>
-#ifdef BCM_DCBNL
-#include <linux/dcbnl.h>
-#endif
 
 #include "bnx2x.h"
 #include "bnx2x_cmn.h"
 #include "bnx2x_dcb.h"
 
+#ifdef BCM_DCBNL
+#include <linux/rtnetlink.h>
+#endif
 
 /* forward declarations of dcbx related functions */
 static void bnx2x_dcbx_stop_hw_tx(struct bnx2x *bp);
@@ -702,6 +702,12 @@ void bnx2x_dcbx_set_params(struct bnx2x *bp, u32 state)
 	case BNX2X_DCBX_STATE_TX_RELEASED:
 		DP(NETIF_MSG_LINK, "BNX2X_DCBX_STATE_TX_RELEASED\n");
 		bnx2x_fw_command(bp, DRV_MSG_CODE_DCBX_PMF_DRV_OK, 0);
+#ifdef BCM_DCBNL
+		/**
+		 * Send a notification for the new negotiated parameters
+		 */
+		dcbnl_cee_notify(bp->dev, RTM_GETDCB, DCB_CMD_CEE_GET, 0, 0);
+#endif
 		return;
 	default:
 		BNX2X_ERR("Unknown DCBX_STATE\n");
-- 
1.7.3.5





^ permalink raw reply related

* Re: [PATCH] ATM: Fix wrong usage of INIT_WORK
From: Wang Shaoyan @ 2011-07-07 12:04 UTC (permalink / raw)
  To: David Miller; +Cc: netdev, wangshaoyan.pt, chas, linux-atm-general
In-Reply-To: <20110707.045159.735589070219101177.davem@davemloft.net>

I just don't know whether the marco FILL_RX_POOLS_IN_BH is useful?

2011/7/7 David Miller <davem@davemloft.net>:

>
> This just makes the driver a bigger CPP mess.
>
> Unconditionally provide the dev->bh member, and unconditionally pass
> it into the worker function.
>
>



-- 
Wang Shaoyan

^ permalink raw reply

* Re: [PATCH] ATM: Fix wrong usage of INIT_WORK
From: David Miller @ 2011-07-07 11:51 UTC (permalink / raw)
  To: stufever; +Cc: netdev, wangshaoyan.pt, chas, linux-atm-general
In-Reply-To: <1310039512-17579-1-git-send-email-wangshaoyan.pt@taobao.com>

From: stufever@gmail.com
Date: Thu,  7 Jul 2011 19:51:52 +0800

> From: Wang Shaoyan <wangshaoyan.pt@taobao.com>
> 
> If we define FILL_RX_POOLS_IN_BH, the compiler will report error such as
>   drivers/atm/ambassador.c:2159:64: error: macro "INIT_WORK" passed 3 arguments, but takes just 2
> because the function INIT_WORK() don't accept "data" now, it only has
> two arguments, so use the right way to initialise work queue.
> 
> Cc: Chas Williams <chas@cmf.nrl.navy.mil> (maintainer:ATM)
> Cc: linux-atm-general@lists.sourceforge.net (open list:ATM)
> Signed-off-by: Wang Shaoyan <wangshaoyan.pt@taobao.com>

This just makes the driver a bigger CPP mess.

Unconditionally provide the dev->bh member, and unconditionally pass
it into the worker function.


^ permalink raw reply

* Re: [PATCH] lib/checksum.c: optimize do_csum a bit
From: David Miller @ 2011-07-07 11:52 UTC (permalink / raw)
  To: abbotti; +Cc: ian.abbott, netdev, arnd, linux-kernel
In-Reply-To: <20110707.043625.856190521365086318.davem@davemloft.net>

From: David Miller <davem@davemloft.net>
Date: Thu, 07 Jul 2011 04:36:25 -0700 (PDT)

> From: Ian Abbott <abbotti@mev.co.uk>
> Date: Thu, 7 Jul 2011 12:32:45 +0100
> 
>> On 07/07/11 12:29, David Miller wrote:
>>> From: Ian Abbott <abbotti@mev.co.uk>
>>> Date: Thu, 7 Jul 2011 12:18:49 +0100
>>> 
>>>> Reduce the number of variables modified by the loop in do_csum() by 1,
>>>> which seems like a good idea.  On Nios II (a RISC CPU with 3-operand
>>>> instruction set) it reduces the loop from 7 to 6 instructions, including
>>>> the conditional branch.
>>>>
>>>> Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
>>> 
>>> I think you'll overshoot past the end of the buffer when there are
>>> trailing bytes to handle.
>>> 
>>> The whole reason we need the count variable is to handle those
>>> kinds of cases.
>> 
>> I don't think it does.  That's what the & ~3 was for.
> 
> Aha, yes that indeed makes it work.

I've applied this to net-next-2.6, thanks.

^ permalink raw reply

* Re: [PATCH V8 0/4 net-next] macvtap/vhost TX zero-copy support
From: David Miller @ 2011-07-07 11:49 UTC (permalink / raw)
  To: mst; +Cc: mashirle, netdev, kvm, linux-kernel
In-Reply-To: <20110707113715.GA32632@redhat.com>

From: "Michael S. Tsirkin" <mst@redhat.com>
Date: Thu, 7 Jul 2011 14:37:15 +0300

> Apply patches 1-3 for now?

Done, and I fixed the use-after-free in patch #2.


^ permalink raw reply

* [PATCH] ATM: Fix wrong usage of INIT_WORK
From: stufever @ 2011-07-07 11:51 UTC (permalink / raw)
  To: netdev; +Cc: Wang Shaoyan, Chas Williams, open list:ATM

From: Wang Shaoyan <wangshaoyan.pt@taobao.com>

If we define FILL_RX_POOLS_IN_BH, the compiler will report error such as
  drivers/atm/ambassador.c:2159:64: error: macro "INIT_WORK" passed 3 arguments, but takes just 2
because the function INIT_WORK() don't accept "data" now, it only has
two arguments, so use the right way to initialise work queue.

Cc: Chas Williams <chas@cmf.nrl.navy.mil> (maintainer:ATM)
Cc: linux-atm-general@lists.sourceforge.net (open list:ATM)
Signed-off-by: Wang Shaoyan <wangshaoyan.pt@taobao.com>
---
 drivers/atm/ambassador.c |   11 ++++++++++-
 1 files changed, 10 insertions(+), 1 deletions(-)

diff --git a/drivers/atm/ambassador.c b/drivers/atm/ambassador.c
index a5fcb1e..3618c5c 100644
--- a/drivers/atm/ambassador.c
+++ b/drivers/atm/ambassador.c
@@ -814,7 +814,12 @@ static void fill_rx_pool (amb_dev * dev, unsigned char pool,
 }
 
 // top up all RX pools (can also be called as a bottom half)
+#ifdef FILL_RX_POOLS_IN_BH
+static void fill_rx_pools (struct work_struct * work) {
+  amb_dev * dev = container_of(work, amb_dev, bh);
+#else
 static void fill_rx_pools (amb_dev * dev) {
+#endif
   unsigned char pool;
   
   PRINTD (DBG_FLOW|DBG_POOL, "fill_rx_pools %p", dev);
@@ -1503,7 +1508,11 @@ static void do_housekeeping (unsigned long arg) {
   // could collect device-specific (not driver/atm-linux) stats here
       
   // last resort refill once every ten seconds
+#ifdef FILL_RX_POOLS_IN_BH
+  fill_rx_pools (&dev->bh);
+#else
   fill_rx_pools (dev);
+#endif
   mod_timer(&dev->housekeeping, jiffies + 10*HZ);
   
   return;
@@ -2156,7 +2165,7 @@ static void setup_dev(amb_dev *dev, struct pci_dev *pci_dev)
       
 #ifdef FILL_RX_POOLS_IN_BH
       // initialise bottom half
-      INIT_WORK(&dev->bh, (void (*)(void *)) fill_rx_pools, dev);
+      INIT_WORK(&dev->bh, fill_rx_pools);
 #endif
       
       // semaphore for txer/rxer modifications - we cannot use a
-- 
1.7.4.1


^ permalink raw reply related

* Re: [PATCH V8 0/4 net-next] macvtap/vhost TX zero-copy support
From: Michael S. Tsirkin @ 2011-07-07 11:37 UTC (permalink / raw)
  To: David Miller; +Cc: mashirle, netdev, kvm, linux-kernel
In-Reply-To: <20110707.040840.809661052978541081.davem@davemloft.net>

On Thu, Jul 07, 2011 at 04:08:40AM -0700, David Miller wrote:
> From: Shirley Ma <mashirle@us.ibm.com>
> Date: Wed, 06 Jul 2011 15:15:25 -0700
> 
> > This patchset add supports for TX zero-copy between guest and host
> > kernel through vhost. It significantly reduces CPU utilization on the
> > local host on which the guest is located (It reduced about 50% CPU usage
> > for single stream test on the host, while 4K message size BW has
> > increased about 50%). The patchset is based on previous submission and
> > comments from the community regarding when/how to handle guest kernel
> > buffers to be released. This is the simplest approach I can think of
> > after comparing with several other solutions.
> > 
> > This patchset has integrated V3 review comments from community: 
> 
> I'm personally fine with this patch set.  Unless there are others
> who object, please fix the use-after-free bug I reported, respin
> the patch set, and I'll apply it.
> 
> Thanks.

There's the FIXME in patch 4 where it spins in vhost waiting for
the pages to get freed. I'm fixing that up as Shirley's on vacation.

Apply patches 1-3 for now?

-- 
MST

^ permalink raw reply

* Re: [PATCH] lib/checksum.c: optimize do_csum a bit
From: David Miller @ 2011-07-07 11:36 UTC (permalink / raw)
  To: abbotti; +Cc: ian.abbott, netdev, arnd, linux-kernel
In-Reply-To: <4E15995D.6040405@mev.co.uk>

From: Ian Abbott <abbotti@mev.co.uk>
Date: Thu, 7 Jul 2011 12:32:45 +0100

> On 07/07/11 12:29, David Miller wrote:
>> From: Ian Abbott <abbotti@mev.co.uk>
>> Date: Thu, 7 Jul 2011 12:18:49 +0100
>> 
>>> Reduce the number of variables modified by the loop in do_csum() by 1,
>>> which seems like a good idea.  On Nios II (a RISC CPU with 3-operand
>>> instruction set) it reduces the loop from 7 to 6 instructions, including
>>> the conditional branch.
>>>
>>> Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
>> 
>> I think you'll overshoot past the end of the buffer when there are
>> trailing bytes to handle.
>> 
>> The whole reason we need the count variable is to handle those
>> kinds of cases.
> 
> I don't think it does.  That's what the & ~3 was for.

Aha, yes that indeed makes it work.

^ permalink raw reply

* Re: [PATCH] lib/checksum.c: optimize do_csum a bit
From: Ian Abbott @ 2011-07-07 11:32 UTC (permalink / raw)
  To: David Miller
  Cc: Ian Abbott, netdev@vger.kernel.org, arnd@arndb.de,
	linux-kernel@vger.kernel.org
In-Reply-To: <20110707.042925.1609726410655229616.davem@davemloft.net>

On 07/07/11 12:29, David Miller wrote:
> From: Ian Abbott <abbotti@mev.co.uk>
> Date: Thu, 7 Jul 2011 12:18:49 +0100
> 
>> Reduce the number of variables modified by the loop in do_csum() by 1,
>> which seems like a good idea.  On Nios II (a RISC CPU with 3-operand
>> instruction set) it reduces the loop from 7 to 6 instructions, including
>> the conditional branch.
>>
>> Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
> 
> I think you'll overshoot past the end of the buffer when there are
> trailing bytes to handle.
> 
> The whole reason we need the count variable is to handle those
> kinds of cases.

I don't think it does.  That's what the & ~3 was for.

-- 
-=( Ian Abbott @ MEV Ltd.    E-mail: <abbotti@mev.co.uk>        )=-
-=( Tel: +44 (0)161 477 1898   FAX: +44 (0)161 718 3587         )=-

^ permalink raw reply

* [GIT] Networking
From: David Miller @ 2011-07-07 11:32 UTC (permalink / raw)
  To: torvalds; +Cc: akpm, netdev, linux-kernel


1) iwl_tx_queue_reset() doesn't clear out the right number of slots,
   fix from Emmanuel Grumbach.

2) DMA buffer leak in iwlagn, fix from Johannes Berg.

3) iwlwifi command buffers need to be DMA mapped as "bidirectional" as
   the chip can write back to them sometimes, fix from Johannes Berg.

4) Fix OOPS in mac80211 on MIC failure, from Arik Nemtsov.

5) Fix lost power up during resume in ath9k, from Rajkumar Manoharan.

6) Memory leak in ath5k, fix from Bob Copeland.

7) 6pack/mkiss need to use BH locking, fix from Arnd Bergmann.

8) Get rid of artificial ipv6 routing table size limits, this is
   hitting real people now.

9) Don't send ICMP errors on local socket created MTU events.  Fix
   from Steffen Klassert.

10) Fix mailbox execution crash in qlge, from Jitendra Kalsaria.

11) Fix mixup between "spin_lock_irqsave()" flags and flags
    passed to request_irq in bna driver, fix from Shyam Iyer.

12) vlan_features not set properly in 8139too, from Shan Wei.

13) Fix DMA unmap length in natsemi, from FUJITA Tomonori.

14) Use more POSIX'ly correct when wrong address family is used
    during ipv4 bind().  From Marcus Meissner.

15) Fix MAC address setting in greth driver, from Kristoffer Glembo.

16) Regression fix, have to always flood broadcasts on bridge.  Fix
    from Herbert Xu.

17) Global memory limits of TCP/UDP/SCTP are miscalculated when lots
    of hugepages are reserved.  Fix from Eric Dumazet.

18) SCTP_SENDER_DRY_EVENT are not always sent when they should be, fix
    from Wei Yongjun.

Please pull, thanks a lot!

The following changes since commit 4dd1b49c6d215dc41ce50c80b4868388b93f31a3:

  Merge branch 'gpio/merge' of git://git.secretlab.ca/git/linux-2.6 (2011-07-06 18:36:53 -0700)

are available in the git repository at:

  master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6.git master

Arik Nemtsov (1):
      mac80211: fix rx->key NULL dereference during mic failure

Arnd Bergmann (1):
      6pack,mkiss: fix lock inconsistency

David S. Miller (3):
      Merge branch 'for-davem' of git://git.kernel.org/.../linville/wireless-2.6
      ipv6: Don't change dst->flags using assignments.
      ipv6: Don't put artificial limit on routing table size.

Emmanuel Grumbach (1):
      iwlagn: Fix a bug introduced by the HUGE command removal

Eric Dumazet (1):
      net: refine {udp|tcp|sctp}_mem limits

Eugene A. Shatokhin (1):
      ath5k: fix memory leak when fewer than N_PD_CURVES are in use

Evgeni Golov (1):
      iwlagn: fix *_UCODE_API_MAX output in the firmware field

FUJITA Tomonori (1):
      natsemi: silence dma-debug warnings

Herbert Xu (1):
      bridge: Always flood broadcast packets

Jitendra Kalsaria (3):
      qlge:Fix crash caused by mailbox execution on wedged chip.
      qlge: Fix printk priority so chip fatal errors are always reported.
      qlge:Version change to v1.00.00.29

Johannes Berg (3):
      iwlagn: fix change_interface for P2P types
      iwlagn: fix cmd queue unmap
      iwlagn: map command buffers BIDI

John W. Linville (3):
      Merge branch 'wireless-2.6' of git://git.kernel.org/.../iwlwifi/iwlwifi-2.6
      iwlagn: use PCI_DMA_* for pci_* operations
      Merge branch 'master' of git://git.kernel.org/.../linville/wireless-2.6 into for-davem

Kristoffer Glembo (1):
      greth: greth_set_mac_add would corrupt the MAC address.

Marcus Meissner (1):
      net: bind() fix error return on wrong address family

Rajkumar Manoharan (1):
      ath9k: Fix suspend/resume when no interface is UP

Shan Wei (2):
      net: 8139too: Initial necessary vlan_features to support vlan
      net: vlan: enable soft features regardless of underlying device

Shreyas Bhatewara (2):
      vmxnet3: fix starving rx ring whenoc_skb kb fails
      vmxnet3: round down # of queues to power of two

Shyam Iyer (1):
      Fix call trace when interrupts are disabled while sleeping function kzalloc is called

Steffen Klassert (3):
      xfrm: Remove family arg from xfrm_bundle_ok
      ipv4: Don't use ufo handling on later transformed packets
      xfrm4: Don't call icmp_send on local error

Wei Yongjun (1):
      sctp: fix missing send up SCTP_SENDER_DRY_EVENT when subscribe it

Yoshihiro Shimoda (2):
      net: sh_eth: fix cannot work half-duplex mode
      net: sh_eth: fix the parameter for the ETHER of SH7757

 drivers/net/8139too.c                   |    1 +
 drivers/net/bna/bnad.c                  |    7 +-
 drivers/net/greth.c                     |    7 +-
 drivers/net/hamradio/6pack.c            |    4 +-
 drivers/net/hamradio/mkiss.c            |    4 +-
 drivers/net/natsemi.c                   |    3 +-
 drivers/net/qlge/qlge.h                 |    3 +-
 drivers/net/qlge/qlge_main.c            |   42 ++++++----
 drivers/net/sh_eth.c                    |    6 +-
 drivers/net/vmxnet3/vmxnet3_drv.c       |  138 ++++++++++++++++++++++---------
 drivers/net/vmxnet3/vmxnet3_int.h       |    5 +-
 drivers/net/wireless/ath/ath5k/eeprom.c |    8 +-
 drivers/net/wireless/ath/ath9k/pci.c    |    6 ++
 drivers/net/wireless/iwlwifi/iwl-1000.c |    5 +-
 drivers/net/wireless/iwlwifi/iwl-2000.c |    7 +-
 drivers/net/wireless/iwlwifi/iwl-5000.c |    5 +-
 drivers/net/wireless/iwlwifi/iwl-6000.c |    9 +-
 drivers/net/wireless/iwlwifi/iwl-core.c |    3 +-
 drivers/net/wireless/iwlwifi/iwl-tx.c   |   25 ++----
 include/net/cfg80211.h                  |    2 +-
 include/net/dst.h                       |    1 +
 net/8021q/vlan_dev.c                    |    5 +
 net/bridge/br_device.c                  |    4 +-
 net/bridge/br_input.c                   |    6 +-
 net/core/dst.c                          |    6 +-
 net/ipv4/af_inet.c                      |    4 +-
 net/ipv4/ip_output.c                    |    2 +-
 net/ipv4/tcp.c                          |   10 +--
 net/ipv4/udp.c                          |   10 +--
 net/ipv4/xfrm4_output.c                 |    7 ++-
 net/ipv6/af_inet6.c                     |    2 +-
 net/ipv6/route.c                        |   25 ++----
 net/mac80211/wpa.c                      |    8 ++-
 net/sctp/protocol.c                     |   11 +--
 net/sctp/socket.c                       |   23 +++++
 net/wireless/nl80211.c                  |    3 +-
 net/xfrm/xfrm_policy.c                  |    6 +-
 37 files changed, 257 insertions(+), 166 deletions(-)

^ 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