linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Stephen Rothwell <sfr@canb.auug.org.au>
To: David Miller <davem@davemloft.net>, Networking <netdev@vger.kernel.org>
Cc: Linux Next Mailing List <linux-next@vger.kernel.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Mat Martineau <mathew.j.martineau@linux.intel.com>,
	Paolo Abeni <pabeni@redhat.com>
Subject: linux-next: manual merge of the net-next tree with the net tree
Date: Thu, 1 Oct 2020 13:49:36 +1000	[thread overview]
Message-ID: <20201001134936.305b51c6@canb.auug.org.au> (raw)

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

Hi all,

Today's linux-next merge of the net-next tree got a conflict in:

  net/mptcp/protocol.c

between commit:

  917944da3bfc ("mptcp: Consistently use READ_ONCE/WRITE_ONCE with msk->ack_seq")

from the net tree and commit:

  8268ed4c9d19 ("mptcp: introduce and use mptcp_try_coalesce()")
  ab174ad8ef76 ("mptcp: move ooo skbs into msk out of order queue.")

from the net-next tree.

I fixed it up (I think - see below) and can carry the fix as
necessary. This is now fixed as far as linux-next is concerned, but any
non trivial conflicts should be mentioned to your upstream maintainer
when your tree is submitted for merging.  You may also want to consider
cooperating with the maintainer of the conflicting tree to minimise any
particularly complex conflicts.

-- 
Cheers,
Stephen Rothwell

diff --cc net/mptcp/protocol.c
index 5d747c6a610e,34c037731f35..000000000000
--- a/net/mptcp/protocol.c
+++ b/net/mptcp/protocol.c
@@@ -112,64 -112,205 +112,205 @@@ static int __mptcp_socket_create(struc
  	return 0;
  }
  
- static void __mptcp_move_skb(struct mptcp_sock *msk, struct sock *ssk,
- 			     struct sk_buff *skb,
- 			     unsigned int offset, size_t copy_len)
+ static void mptcp_drop(struct sock *sk, struct sk_buff *skb)
+ {
+ 	sk_drops_add(sk, skb);
+ 	__kfree_skb(skb);
+ }
+ 
+ static bool mptcp_try_coalesce(struct sock *sk, struct sk_buff *to,
+ 			       struct sk_buff *from)
+ {
+ 	bool fragstolen;
+ 	int delta;
+ 
+ 	if (MPTCP_SKB_CB(from)->offset ||
+ 	    !skb_try_coalesce(to, from, &fragstolen, &delta))
+ 		return false;
+ 
+ 	pr_debug("colesced seq %llx into %llx new len %d new end seq %llx",
+ 		 MPTCP_SKB_CB(from)->map_seq, MPTCP_SKB_CB(to)->map_seq,
+ 		 to->len, MPTCP_SKB_CB(from)->end_seq);
+ 	MPTCP_SKB_CB(to)->end_seq = MPTCP_SKB_CB(from)->end_seq;
+ 	kfree_skb_partial(from, fragstolen);
+ 	atomic_add(delta, &sk->sk_rmem_alloc);
+ 	sk_mem_charge(sk, delta);
+ 	return true;
+ }
+ 
+ static bool mptcp_ooo_try_coalesce(struct mptcp_sock *msk, struct sk_buff *to,
+ 				   struct sk_buff *from)
+ {
+ 	if (MPTCP_SKB_CB(from)->map_seq != MPTCP_SKB_CB(to)->end_seq)
+ 		return false;
+ 
+ 	return mptcp_try_coalesce((struct sock *)msk, to, from);
+ }
+ 
+ /* "inspired" by tcp_data_queue_ofo(), main differences:
+  * - use mptcp seqs
+  * - don't cope with sacks
+  */
+ static void mptcp_data_queue_ofo(struct mptcp_sock *msk, struct sk_buff *skb)
  {
  	struct sock *sk = (struct sock *)msk;
- 	struct sk_buff *tail;
+ 	struct rb_node **p, *parent;
+ 	u64 seq, end_seq, max_seq;
+ 	struct sk_buff *skb1;
+ 	int space;
+ 
+ 	seq = MPTCP_SKB_CB(skb)->map_seq;
+ 	end_seq = MPTCP_SKB_CB(skb)->end_seq;
+ 	space = tcp_space(sk);
+ 	max_seq = space > 0 ? space + msk->ack_seq : msk->ack_seq;
+ 
+ 	pr_debug("msk=%p seq=%llx limit=%llx empty=%d", msk, seq, max_seq,
+ 		 RB_EMPTY_ROOT(&msk->out_of_order_queue));
+ 	if (after64(seq, max_seq)) {
+ 		/* out of window */
+ 		mptcp_drop(sk, skb);
+ 		MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_NODSSWINDOW);
+ 		return;
+ 	}
  
- 	__skb_unlink(skb, &ssk->sk_receive_queue);
+ 	p = &msk->out_of_order_queue.rb_node;
+ 	MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_OFOQUEUE);
+ 	if (RB_EMPTY_ROOT(&msk->out_of_order_queue)) {
+ 		rb_link_node(&skb->rbnode, NULL, p);
+ 		rb_insert_color(&skb->rbnode, &msk->out_of_order_queue);
+ 		msk->ooo_last_skb = skb;
+ 		goto end;
+ 	}
  
- 	skb_ext_reset(skb);
- 	skb_orphan(skb);
- 	WRITE_ONCE(msk->ack_seq, msk->ack_seq + copy_len);
+ 	/* with 2 subflows, adding at end of ooo queue is quite likely
+ 	 * Use of ooo_last_skb avoids the O(Log(N)) rbtree lookup.
+ 	 */
+ 	if (mptcp_ooo_try_coalesce(msk, msk->ooo_last_skb, skb)) {
+ 		MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_OFOMERGE);
+ 		MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_OFOQUEUETAIL);
+ 		return;
+ 	}
  
- 	tail = skb_peek_tail(&sk->sk_receive_queue);
- 	if (offset == 0 && tail) {
- 		bool fragstolen;
- 		int delta;
+ 	/* Can avoid an rbtree lookup if we are adding skb after ooo_last_skb */
+ 	if (!before64(seq, MPTCP_SKB_CB(msk->ooo_last_skb)->end_seq)) {
+ 		MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_OFOQUEUETAIL);
+ 		parent = &msk->ooo_last_skb->rbnode;
+ 		p = &parent->rb_right;
+ 		goto insert;
+ 	}
  
- 		if (skb_try_coalesce(tail, skb, &fragstolen, &delta)) {
- 			kfree_skb_partial(skb, fragstolen);
- 			atomic_add(delta, &sk->sk_rmem_alloc);
- 			sk_mem_charge(sk, delta);
+ 	/* Find place to insert this segment. Handle overlaps on the way. */
+ 	parent = NULL;
+ 	while (*p) {
+ 		parent = *p;
+ 		skb1 = rb_to_skb(parent);
+ 		if (before64(seq, MPTCP_SKB_CB(skb1)->map_seq)) {
+ 			p = &parent->rb_left;
+ 			continue;
+ 		}
+ 		if (before64(seq, MPTCP_SKB_CB(skb1)->end_seq)) {
+ 			if (!after64(end_seq, MPTCP_SKB_CB(skb1)->end_seq)) {
+ 				/* All the bits are present. Drop. */
+ 				mptcp_drop(sk, skb);
+ 				MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_DUPDATA);
+ 				return;
+ 			}
+ 			if (after64(seq, MPTCP_SKB_CB(skb1)->map_seq)) {
+ 				/* partial overlap:
+ 				 *     |     skb      |
+ 				 *  |     skb1    |
+ 				 * continue traversing
+ 				 */
+ 			} else {
+ 				/* skb's seq == skb1's seq and skb covers skb1.
+ 				 * Replace skb1 with skb.
+ 				 */
+ 				rb_replace_node(&skb1->rbnode, &skb->rbnode,
+ 						&msk->out_of_order_queue);
+ 				mptcp_drop(sk, skb1);
+ 				MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_DUPDATA);
+ 				goto merge_right;
+ 			}
+ 		} else if (mptcp_ooo_try_coalesce(msk, skb1, skb)) {
+ 			MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_OFOMERGE);
  			return;
  		}
+ 		p = &parent->rb_right;
  	}
  
- 	skb_set_owner_r(skb, sk);
- 	__skb_queue_tail(&sk->sk_receive_queue, skb);
- 	MPTCP_SKB_CB(skb)->offset = offset;
- }
+ insert:
+ 	/* Insert segment into RB tree. */
+ 	rb_link_node(&skb->rbnode, parent, p);
+ 	rb_insert_color(&skb->rbnode, &msk->out_of_order_queue);
  
- static void mptcp_stop_timer(struct sock *sk)
- {
- 	struct inet_connection_sock *icsk = inet_csk(sk);
+ merge_right:
+ 	/* Remove other segments covered by skb. */
+ 	while ((skb1 = skb_rb_next(skb)) != NULL) {
+ 		if (before64(end_seq, MPTCP_SKB_CB(skb1)->end_seq))
+ 			break;
+ 		rb_erase(&skb1->rbnode, &msk->out_of_order_queue);
+ 		mptcp_drop(sk, skb1);
+ 		MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_DUPDATA);
+ 	}
+ 	/* If there is no skb after us, we are the last_skb ! */
+ 	if (!skb1)
+ 		msk->ooo_last_skb = skb;
  
- 	sk_stop_timer(sk, &icsk->icsk_retransmit_timer);
- 	mptcp_sk(sk)->timer_ival = 0;
+ end:
+ 	skb_condense(skb);
+ 	skb_set_owner_r(skb, sk);
  }
  
- /* both sockets must be locked */
- static bool mptcp_subflow_dsn_valid(const struct mptcp_sock *msk,
- 				    struct sock *ssk)
+ static bool __mptcp_move_skb(struct mptcp_sock *msk, struct sock *ssk,
+ 			     struct sk_buff *skb, unsigned int offset,
+ 			     size_t copy_len)
  {
  	struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk);
- 	u64 dsn = mptcp_subflow_get_mapped_dsn(subflow);
+ 	struct sock *sk = (struct sock *)msk;
+ 	struct sk_buff *tail;
  
- 	/* revalidate data sequence number.
- 	 *
- 	 * mptcp_subflow_data_available() is usually called
- 	 * without msk lock.  Its unlikely (but possible)
- 	 * that msk->ack_seq has been advanced since the last
- 	 * call found in-sequence data.
+ 	__skb_unlink(skb, &ssk->sk_receive_queue);
+ 
+ 	skb_ext_reset(skb);
+ 	skb_orphan(skb);
+ 
+ 	/* the skb map_seq accounts for the skb offset:
+ 	 * mptcp_subflow_get_mapped_dsn() is based on the current tp->copied_seq
+ 	 * value
  	 */
- 	if (likely(dsn == msk->ack_seq))
+ 	MPTCP_SKB_CB(skb)->map_seq = mptcp_subflow_get_mapped_dsn(subflow);
+ 	MPTCP_SKB_CB(skb)->end_seq = MPTCP_SKB_CB(skb)->map_seq + copy_len;
+ 	MPTCP_SKB_CB(skb)->offset = offset;
+ 
+ 	if (MPTCP_SKB_CB(skb)->map_seq == msk->ack_seq) {
+ 		/* in sequence */
 -		msk->ack_seq += copy_len;
++		WRITE_ONCE(msk->ack_seq, msk->ack_seq + copy_len);
+ 		tail = skb_peek_tail(&sk->sk_receive_queue);
+ 		if (tail && mptcp_try_coalesce(sk, tail, skb))
+ 			return true;
+ 
+ 		skb_set_owner_r(skb, sk);
+ 		__skb_queue_tail(&sk->sk_receive_queue, skb);
  		return true;
+ 	} else if (after64(MPTCP_SKB_CB(skb)->map_seq, msk->ack_seq)) {
+ 		mptcp_data_queue_ofo(msk, skb);
+ 		return false;
+ 	}
  
- 	subflow->data_avail = 0;
- 	return mptcp_subflow_data_available(ssk);
+ 	/* old data, keep it simple and drop the whole pkt, sender
+ 	 * will retransmit as needed, if needed.
+ 	 */
+ 	MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_DUPDATA);
+ 	mptcp_drop(sk, skb);
+ 	return false;
+ }
+ 
+ static void mptcp_stop_timer(struct sock *sk)
+ {
+ 	struct inet_connection_sock *icsk = inet_csk(sk);
+ 
+ 	sk_stop_timer(sk, &icsk->icsk_retransmit_timer);
+ 	mptcp_sk(sk)->timer_ival = 0;
  }
  
  static void mptcp_check_data_fin_ack(struct sock *sk)

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

             reply	other threads:[~2020-10-01  3:49 UTC|newest]

Thread overview: 554+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-01  3:49 Stephen Rothwell [this message]
2020-10-02  0:07 ` linux-next: manual merge of the net-next tree with the net tree Mat Martineau
  -- strict thread matches above, loose matches on Subject: below --
2024-04-01 23:32 Stephen Rothwell
2024-02-27 23:30 Stephen Rothwell
2024-01-05  0:55 Stephen Rothwell
2023-12-20  0:51 Stephen Rothwell
2023-12-14  0:30 Stephen Rothwell
2023-12-11  0:03 Stephen Rothwell
2023-12-11  0:00 Stephen Rothwell
2023-12-06  0:03 Stephen Rothwell
2023-08-21  1:06 Stephen Rothwell
2023-08-21 12:09 ` Matthieu Baerts
2023-08-18  1:21 Stephen Rothwell
2023-08-01  0:17 Stephen Rothwell
2023-07-31  0:26 Stephen Rothwell
2023-07-31  0:22 Stephen Rothwell
2023-07-31 15:39 ` Russell King (Oracle)
2023-06-19  0:54 Stephen Rothwell
2023-06-14  1:17 Stephen Rothwell
2023-06-14  8:51 ` Matthieu Baerts
2023-06-14 13:01   ` Stephen Rothwell
2023-06-14 17:41   ` Jakub Kicinski
2023-06-15 15:30     ` Matthieu Baerts
2023-06-08  0:31 Stephen Rothwell
2023-06-05  0:08 Stephen Rothwell
2023-05-25  1:00 Stephen Rothwell
2023-05-25  9:07 ` Guillaume Nault
2023-05-15 23:42 Stephen Rothwell
2023-04-06  0:49 Stephen Rothwell
2023-04-06 19:04 ` Jakub Kicinski
2023-03-24  1:06 Stephen Rothwell
2023-03-14 23:09 Stephen Rothwell
2023-03-13 23:54 Stephen Rothwell
2023-02-12 23:20 Stephen Rothwell
2023-02-13  9:24 ` Matthieu Baerts
2023-02-07 22:46 Stephen Rothwell
2023-02-08 10:28 ` Matthieu Baerts
2023-02-02 22:44 Stephen Rothwell
2023-01-27  1:50 Stephen Rothwell
2023-01-27  1:40 Stephen Rothwell
2023-01-27  1:36 Stephen Rothwell
2023-01-27 10:39 ` Matthieu Baerts
2023-01-28  6:25   ` Jakub Kicinski
2023-01-19  0:41 Stephen Rothwell
2023-01-19 14:30 ` Caleb Connolly
2023-01-13  0:36 Stephen Rothwell
2022-11-13 22:50 Stephen Rothwell
2022-11-09 23:25 Stephen Rothwell
2022-11-10  7:28 ` Oliver Hartkopp
2022-10-04  1:11 Stephen Rothwell
2022-09-21  1:04 Stephen Rothwell
2022-09-21  9:18 ` Matthieu Baerts
2022-09-22 19:59   ` Jakub Kicinski
2022-09-23  8:28     ` Matthieu Baerts
2022-09-23 12:25       ` Jakub Kicinski
2022-09-21  0:53 Stephen Rothwell
2022-09-01  0:55 Stephen Rothwell
2022-09-01 19:59 ` Axel Rasmussen
2022-08-25  0:44 Stephen Rothwell
2022-08-02 15:19 broonie
2022-08-03  7:42 ` Eric Dumazet
2022-08-03 10:41   ` Mark Brown
2022-07-11  2:02 Stephen Rothwell
2022-05-24  1:44 Stephen Rothwell
2022-05-23  1:10 Stephen Rothwell
2022-05-19  1:58 Stephen Rothwell
2022-05-19  1:51 Stephen Rothwell
2022-05-19  1:41 Stephen Rothwell
2022-05-16  1:19 Stephen Rothwell
2022-05-16  1:14 Stephen Rothwell
2022-05-02  1:15 Stephen Rothwell
2022-04-28  1:21 Stephen Rothwell
2022-04-28  1:19 Stephen Rothwell
2022-04-28  1:29 ` Stephen Rothwell
2022-04-18 23:34 Stephen Rothwell
2022-03-10  0:28 Stephen Rothwell
2022-03-06 23:14 Stephen Rothwell
2022-03-02  0:22 Stephen Rothwell
2022-03-02  5:56 ` Tony Lu
2022-02-24 16:06 broonie
2022-02-21 13:18 broonie
2021-12-22  3:16 Stephen Rothwell
2021-10-21 23:19 Stephen Rothwell
2021-10-17 23:52 Stephen Rothwell
2021-10-17 23:51 Stephen Rothwell
2021-10-18  6:05 ` Ido Schimmel
2021-10-12 23:42 Stephen Rothwell
2021-09-30  1:41 Stephen Rothwell
2021-08-30  1:58 Stephen Rothwell
2021-08-17  4:16 Stephen Rothwell
2021-08-17  9:36 ` Andy Shevchenko
2021-08-13  1:24 Stephen Rothwell
2021-08-11  1:39 Stephen Rothwell
2021-08-11  1:35 Stephen Rothwell
2021-08-09  3:14 Stephen Rothwell
2021-08-02 20:25 Mark Brown
2021-08-02 20:31 ` Vladimir Oltean
2021-07-28 11:57 wengjianfeng
2021-07-28 10:54 Mark Brown
2021-07-28 12:03 ` tangbin
2021-07-19  0:51 Stephen Rothwell
2021-06-24  1:58 Stephen Rothwell
2021-06-17  1:04 Stephen Rothwell
2021-06-16  1:47 Stephen Rothwell
2021-06-04  1:28 Stephen Rothwell
2021-06-04 12:56 ` Vladimir Oltean
2021-06-04  1:24 Stephen Rothwell
2021-06-03  1:46 Stephen Rothwell
2021-05-28  1:06 Stephen Rothwell
2021-04-15  2:17 Stephen Rothwell
2021-04-15 14:00 ` Ong, Boon Leong
2021-04-15 22:05   ` Stephen Rothwell
2021-04-08  3:19 Stephen Rothwell
2021-04-08  2:49 Stephen Rothwell
2021-04-06  3:49 Stephen Rothwell
2021-03-24  1:21 Stephen Rothwell
2021-03-24  1:18 Stephen Rothwell
2021-03-19  0:16 Stephen Rothwell
     [not found] ` <CAFzhf4pCdJStzBcveahKYQFHJCKenuT+VZAP+8PWSEQcooKLgQ@mail.gmail.com>
2021-03-19  7:21   ` Daniel Borkmann
2021-03-19 15:17     ` Yonghong Song
2021-03-19 15:33       ` Alexei Starovoitov
2021-03-19 15:38         ` Daniel Borkmann
2021-03-18  0:22 Stephen Rothwell
2021-02-17  1:43 Stephen Rothwell
2021-02-18 18:40 ` Sukadev Bhattiprolu
2021-02-15  0:52 Stephen Rothwell
2021-02-16 21:28 ` Saeed Mahameed
2021-02-15  0:43 Stephen Rothwell
2021-02-15 11:01 ` Guillaume Nault
2021-02-15 11:35   ` Davide Caratti
2021-02-15 11:52     ` Stephen Rothwell
2021-02-12  1:44 Stephen Rothwell
2021-01-08  0:26 Stephen Rothwell
2020-12-02  1:20 Stephen Rothwell
2020-12-02 17:13 ` Thomas Falcon
2020-11-30  2:02 Stephen Rothwell
2020-11-04  0:43 Stephen Rothwell
2020-11-06 20:19 ` ljp
2020-10-12  2:45 Stephen Rothwell
2020-10-07  2:08 Stephen Rothwell
2020-10-02  3:02 Stephen Rothwell
2020-10-02  7:32 ` Geert Uytterhoeven
2020-10-01  3:52 Stephen Rothwell
2020-10-02  0:09 ` Mat Martineau
2020-09-30  3:25 Stephen Rothwell
2020-09-28  2:46 Stephen Rothwell
2020-09-28 12:37 ` Andrew Lunn
2020-09-17  2:47 Stephen Rothwell
2020-09-11  1:17 Stephen Rothwell
2020-09-11 10:18 ` Paul Barker
2020-08-28  0:39 Stephen Rothwell
2020-08-27  0:34 Stephen Rothwell
2020-07-24  2:28 Stephen Rothwell
2020-07-24  2:23 Stephen Rothwell
2020-07-24  9:56 ` Claudiu Manoil
2020-07-23  2:08 Stephen Rothwell
2020-07-21  1:55 Stephen Rothwell
2020-06-23  1:03 Stephen Rothwell
2020-05-12  3:30 Stephen Rothwell
2020-05-12 16:47 ` Jakub Kicinski
2020-05-13  1:51   ` luobin (L)
2020-05-01  2:48 Stephen Rothwell
2020-05-03  5:21 ` Leon Romanovsky
2020-05-01  2:41 Stephen Rothwell
2020-03-26  0:07 Stephen Rothwell
2020-03-25  0:40 Stephen Rothwell
2020-03-19  0:10 Stephen Rothwell
2020-03-19  3:36 ` Kiyanovski, Arthur
2020-03-11  1:33 Stephen Rothwell
2020-03-11  9:50 ` Vladimir Oltean
2020-03-19  4:59   ` Stephen Rothwell
2020-03-10  0:06 Stephen Rothwell
2020-02-27 23:29 Stephen Rothwell
2020-02-27 23:24 Stephen Rothwell
2020-02-28  9:07 ` Paolo Abeni
2020-02-20 23:12 Stephen Rothwell
2019-12-15 23:12 Stephen Rothwell
2019-12-15 23:14 ` Russell King - ARM Linux admin
2019-12-15 23:05 Stephen Rothwell
2019-12-17  6:55 ` Jubran, Samih
2019-11-21  0:48 Stephen Rothwell
2019-11-12 23:55 Stephen Rothwell
2019-10-27 23:59 Stephen Rothwell
2019-10-13 23:02 Stephen Rothwell
2019-09-12 16:25 Stephen Rothwell
2019-09-12 16:29 ` Jeff Kirsher
2019-09-12 16:19 Stephen Rothwell
2019-08-30  4:19 Stephen Rothwell
2019-08-26  2:27 Stephen Rothwell
2019-08-26  5:27 ` Heiner Kallweit
2019-08-12  2:21 Stephen Rothwell
2019-07-25  0:58 Stephen Rothwell
2019-07-04  2:07 Stephen Rothwell
2019-07-02  2:13 Stephen Rothwell
2019-07-09  0:27 ` Stephen Rothwell
2019-07-09  2:57   ` David Miller
2019-06-28  1:45 Stephen Rothwell
2019-06-27  3:26 Stephen Rothwell
2019-06-17  1:55 Stephen Rothwell
2019-06-17  1:50 Stephen Rothwell
2019-06-11  1:37 Stephen Rothwell
2019-06-11  1:28 Stephen Rothwell
2019-05-31  0:25 Stephen Rothwell
2019-05-29 23:56 Stephen Rothwell
2019-05-30  6:51 ` Maxim Uvarov
2019-05-02  2:57 Stephen Rothwell
2019-04-15  0:54 Stephen Rothwell
2019-03-31 22:11 Stephen Rothwell
2019-04-01 18:15 ` Saeed Mahameed
2019-02-19  0:30 Stephen Rothwell
2019-02-13  0:13 Stephen Rothwell
2019-02-13  0:33 ` Stephen Rothwell
2019-02-12  0:23 Stephen Rothwell
2019-02-08  0:24 Stephen Rothwell
2019-02-07  0:54 Stephen Rothwell
2019-02-07 18:36 ` Pablo Neira Ayuso
2019-01-17  1:27 Stephen Rothwell
2018-12-20  2:07 Stephen Rothwell
2018-12-20  6:54 ` Or Gerlitz
2018-12-20  2:00 Stephen Rothwell
2018-12-20  1:56 Stephen Rothwell
2018-12-17  0:31 Stephen Rothwell
2018-12-17 10:03 ` Ido Schimmel
2018-12-17 10:12   ` Eric Dumazet
2018-12-17  0:25 Stephen Rothwell
2018-12-17 21:20 ` Saeed Mahameed
2018-12-17 22:01   ` Or Gerlitz
2018-12-17 22:14     ` Stephen Rothwell
2018-12-17  0:13 Stephen Rothwell
2018-12-10  1:36 Stephen Rothwell
2018-12-10 11:38 ` Or Gerlitz
2018-12-10 18:38 ` Nambiar, Amritha
2018-12-10  1:31 Stephen Rothwell
2018-12-07  1:39 Stephen Rothwell
2018-12-05  0:33 Stephen Rothwell
2018-12-03  1:50 Stephen Rothwell
2018-10-18 23:56 Stephen Rothwell
2018-10-16 23:46 Stephen Rothwell
2018-10-11 23:53 Stephen Rothwell
2018-10-12  0:10 ` Stephen Rothwell
2018-10-11 23:45 Stephen Rothwell
2018-10-14  7:58 ` Kiyanovski, Arthur
2018-10-09  1:21 Stephen Rothwell
2018-10-09 10:02 ` Jamal Hadi Salim
2018-10-09 20:58   ` Stephen Rothwell
2018-10-03  2:18 Stephen Rothwell
2018-09-21  0:24 Stephen Rothwell
2018-09-18  0:11 Stephen Rothwell
2018-09-18  8:44 ` Daniel Borkmann
2018-09-18  9:10   ` Vakul Garg
2018-09-18  9:26     ` Daniel Borkmann
2018-09-18  9:32       ` Vakul Garg
2018-09-18  9:53         ` Daniel Borkmann
2018-09-18 10:15           ` Daniel Borkmann
2018-09-18 10:17             ` Vakul Garg
2018-09-18 11:48               ` Stephen Rothwell
2018-09-18 12:08                 ` Daniel Borkmann
2018-09-18 16:32           ` David Miller
2018-07-19  1:25 Stephen Rothwell
2018-07-17  2:33 Stephen Rothwell
2018-07-17  5:47 ` Stefano Brivio
2018-07-13  0:47 Stephen Rothwell
2018-07-09  1:03 Stephen Rothwell
2018-07-09  0:46 Stephen Rothwell
2018-07-09  0:28 Stephen Rothwell
2018-07-02  0:15 Stephen Rothwell
2018-05-24 14:35 Mark Brown
2018-05-10  2:13 Stephen Rothwell
2018-05-09  4:19 Stephen Rothwell
2018-05-09  8:24 ` Anders Roxell
2018-05-09 10:44   ` Stephen Rothwell
2018-05-09  4:12 Stephen Rothwell
2018-05-06 23:52 Stephen Rothwell
2018-05-02  1:52 Stephen Rothwell
2018-04-30  0:10 Stephen Rothwell
2018-03-15  1:55 Stephen Rothwell
2018-03-13  0:29 Stephen Rothwell
2018-03-13 10:41 ` Petr Machata
2018-03-13  0:04 Stephen Rothwell
2018-03-04 23:00 Stephen Rothwell
2018-03-01 23:09 Stephen Rothwell
2018-02-28 22:51 Stephen Rothwell
2018-02-27 22:56 Stephen Rothwell
2018-02-28  9:46 ` Petr Machata
2018-01-19  1:00 Stephen Rothwell
2018-01-18  1:09 Stephen Rothwell
2018-01-17  1:09 Stephen Rothwell
2018-01-15 23:36 Stephen Rothwell
2018-01-15 23:31 Stephen Rothwell
2018-01-14 23:52 Stephen Rothwell
2018-01-15  7:53 ` Eran Ben Elisha
2017-12-22  0:11 Stephen Rothwell
2017-12-20 22:59 Stephen Rothwell
2017-12-19  0:51 Stephen Rothwell
2017-12-12  1:07 Stephen Rothwell
2017-11-01  0:58 Stephen Rothwell
2017-11-01  4:17 ` Cong Wang
2017-10-19 13:05 Mark Brown
2017-10-19 13:08 ` Daniel Borkmann
2017-10-16  9:36 Mark Brown
2017-10-17 11:30 ` Sergei Shtylyov
2017-10-17 13:01   ` Mark Brown
2017-08-29  2:25 Stephen Rothwell
2017-08-23  1:31 Stephen Rothwell
2017-08-23  5:41 ` Ido Schimmel
2017-08-07  2:01 Stephen Rothwell
2017-08-07  2:21 ` Neal Cardwell
2017-08-07  4:59   ` Stephen Rothwell
2017-08-03  2:01 Stephen Rothwell
2017-08-03  2:42 ` Stephen Hemminger
2017-07-03  1:43 Stephen Rothwell
2017-07-03  7:59 ` Saeed Mahameed
2017-06-23  1:12 Stephen Rothwell
2017-06-21  1:47 Stephen Rothwell
2017-06-14  0:25 Stephen Rothwell
2017-06-14  0:20 Stephen Rothwell
2017-06-06  1:49 Stephen Rothwell
2017-06-01  1:30 Stephen Rothwell
2017-05-24 23:34 Stephen Rothwell
2017-04-18  0:18 Stephen Rothwell
2017-04-18  0:39 ` Daniel Borkmann
2017-04-07  0:12 Stephen Rothwell
2017-04-07 15:46 ` Cong Wang
2017-04-04  1:13 Stephen Rothwell
2017-04-04 14:48 ` Simon Horman
2017-04-03  2:07 Stephen Rothwell
2017-04-03 13:14 ` Daniel Borkmann
2017-03-23  0:00 Stephen Rothwell
2017-03-20  0:02 Stephen Rothwell
2017-01-31  1:23 Stephen Rothwell
2017-01-31  1:18 Stephen Rothwell
2017-01-24  0:38 Stephen Rothwell
2016-12-01  1:41 Stephen Rothwell
2016-12-01  7:56 ` Jiri Pirko
2016-12-01  1:36 Stephen Rothwell
2016-11-29  0:31 Stephen Rothwell
2016-11-29  6:32 ` Daniel Borkmann
2016-11-29  0:25 Stephen Rothwell
2016-11-29  0:22 Stephen Rothwell
2016-11-29  9:01 ` Borislav Petkov
2016-11-22  0:58 Stephen Rothwell
2016-11-16 23:51 Stephen Rothwell
2016-11-16 23:48 Stephen Rothwell
2016-11-16 23:46 Stephen Rothwell
2016-11-16 23:36 Stephen Rothwell
2016-11-09 23:50 Stephen Rothwell
2016-11-13 12:27 ` Or Gerlitz
2016-11-08  1:25 Stephen Rothwell
2016-11-08  6:34 ` Cong Wang
2016-10-23 23:34 Stephen Rothwell
2016-10-20 23:40 Stephen Rothwell
2016-10-20  0:01 Stephen Rothwell
2016-10-20  6:37 ` Ido Schimmel
2016-09-12  0:49 Stephen Rothwell
2016-09-07  3:16 Stephen Rothwell
2016-09-05  3:10 Stephen Rothwell
2016-08-22  1:51 Stephen Rothwell
2016-08-17  1:05 Stephen Rothwell
2016-08-15  0:35 Stephen Rothwell
2016-08-15  7:51 ` Daniel Borkmann
2016-07-21  1:41 Stephen Rothwell
2016-07-20  2:10 Stephen Rothwell
2016-07-20  2:05 Stephen Rothwell
2016-07-18  1:59 Stephen Rothwell
2016-07-18  1:52 Stephen Rothwell
2016-07-06  1:32 Stephen Rothwell
2016-07-04  3:07 Stephen Rothwell
2016-07-04 11:34 ` Saeed Mahameed
2016-07-04  3:02 Stephen Rothwell
2016-07-04 11:33 ` Saeed Mahameed
2016-06-27  1:46 Stephen Rothwell
2016-06-27  4:52 ` Eric Dumazet
2016-06-24  1:24 Stephen Rothwell
2016-06-20  1:28 Stephen Rothwell
2016-06-20  1:25 Stephen Rothwell
2016-06-20  1:20 Stephen Rothwell
2016-06-08  1:17 Stephen Rothwell
2016-05-11 23:56 Stephen Rothwell
2016-05-11  0:11 Stephen Rothwell
2016-05-09  0:43 Stephen Rothwell
2016-05-05  0:30 Stephen Rothwell
2016-04-27  2:01 Stephen Rothwell
2016-04-27  2:01 Stephen Rothwell
2016-04-27 13:13 ` Saeed Mahameed
2016-04-26  2:18 Stephen Rothwell
2016-04-18  1:31 Stephen Rothwell
2016-04-18  1:38 ` Eric Dumazet
2016-04-18  1:30 Stephen Rothwell
2016-04-21 23:54 ` Vivien Didelot
2016-03-08  0:37 Stephen Rothwell
2016-03-04  2:09 Stephen Rothwell
2016-03-04  2:17 ` Daniel Borkmann
2016-03-03  0:36 Stephen Rothwell
2016-03-03  0:28 Stephen Rothwell
2016-03-03  0:24 Stephen Rothwell
2016-02-26  0:13 Stephen Rothwell
2016-02-26  0:15 ` Daniel Borkmann
2016-02-18 22:50 Stephen Rothwell
2016-02-17  0:56 Stephen Rothwell
2016-02-11  0:59 Stephen Rothwell
2016-01-12  2:15 Stephen Rothwell
2016-01-12  9:11 ` Ido Schimmel
2016-01-12 11:58   ` Stephen Rothwell
2016-01-12 20:20     ` David Miller
2015-12-15  0:31 Stephen Rothwell
2015-11-26  0:01 Stephen Rothwell
2015-11-26  0:16 ` Daniel Borkmann
2015-11-24  0:18 Stephen Rothwell
2015-11-03  0:17 Stephen Rothwell
2015-10-15  1:06 Stephen Rothwell
2015-10-06  0:16 Stephen Rothwell
2015-10-06  0:11 Stephen Rothwell
2015-09-25  0:50 Stephen Rothwell
2015-08-18  2:35 Stephen Rothwell
2015-08-10  1:24 Stephen Rothwell
2015-07-31  0:35 Stephen Rothwell
2015-07-30  2:10 Stephen Rothwell
2015-07-30  8:06 ` Nikolay Aleksandrov
2015-07-28  1:26 Stephen Rothwell
2015-07-17  0:49 Stephen Rothwell
2015-06-22  2:58 Stephen Rothwell
2015-05-21  2:59 Stephen Rothwell
2015-05-21  3:29 ` Florian Fainelli
2015-05-18  3:39 Stephen Rothwell
2015-05-13  3:05 Stephen Rothwell
2015-05-12  1:49 Stephen Rothwell
2015-05-12  1:49 Stephen Rothwell
2015-05-12  1:49 Stephen Rothwell
2015-04-10  3:12 Stephen Rothwell
2015-04-07  3:21 Stephen Rothwell
2015-04-07 16:54 ` Cong Wang
2015-04-07  3:18 Stephen Rothwell
2015-04-07 11:42 ` Ido Shamay
2015-03-25  2:18 Stephen Rothwell
2015-03-23  3:08 Stephen Rothwell
2015-03-23 12:47 ` Pablo Neira Ayuso
2015-03-23 12:55   ` Joe Perches
2015-03-23 13:06     ` Pablo Neira Ayuso
2015-03-24  2:29   ` David Miller
2015-03-16  2:04 Stephen Rothwell
2015-03-10  1:08 Stephen Rothwell
2015-03-10  3:43 ` David Miller
2015-03-10 21:48   ` Stephen Rothwell
2015-03-10 22:34     ` David Miller
2015-03-02  0:31 Stephen Rothwell
2015-02-02  2:40 Stephen Rothwell
2015-02-02  2:33 Stephen Rothwell
2015-02-02  9:09 ` Nicolas Dichtel
2015-01-28  1:02 Stephen Rothwell
2015-01-28  8:39 ` Daniel Borkmann
2015-01-27  2:00 Stephen Rothwell
2015-01-15  2:47 Stephen Rothwell
2015-01-15  6:06 ` David Miller
2014-12-10  1:20 Stephen Rothwell
2014-12-10 19:49 ` David Miller
2014-12-10 21:38   ` Stephen Rothwell
2014-11-13  0:35 Stephen Rothwell
2014-11-13 21:14 ` David Miller
2014-10-29  0:14 Stephen Rothwell
2014-10-02  4:16 Stephen Rothwell
2014-10-02 18:27 ` David Miller
2014-09-30  2:54 Stephen Rothwell
2014-09-30  2:51 Stephen Rothwell
2014-09-22  1:52 Stephen Rothwell
2014-08-04  3:28 Stephen Rothwell
2014-06-06  3:54 Stephen Rothwell
2014-06-06  3:45 Stephen Rothwell
2014-06-03  2:31 Stephen Rothwell
2014-06-03  2:28 Stephen Rothwell
2014-05-23  3:46 Stephen Rothwell
2014-05-24  4:50 ` David Miller
2014-05-16  2:08 Stephen Rothwell
2014-05-05  2:10 Stephen Rothwell
2014-04-28  2:57 Stephen Rothwell
2014-04-28 18:19 ` Richard Guy Briggs
2014-04-28  2:53 Stephen Rothwell
2014-04-24  1:51 Stephen Rothwell
2014-04-24  1:47 Stephen Rothwell
2014-04-24  2:24 ` Jeff Kirsher
2014-04-24  2:45   ` David Miller
2014-03-31  2:34 Stephen Rothwell
2014-03-25  2:04 Stephen Rothwell
2014-03-25  4:31 ` David Miller
2014-03-25  1:58 Stephen Rothwell
2014-03-12 16:00 Mark Brown
2014-02-21  2:49 Stephen Rothwell
2014-02-18  1:52 Stephen Rothwell
2014-02-18  1:48 Stephen Rothwell
2014-01-17  1:09 Stephen Rothwell
2014-01-06  4:35 Stephen Rothwell
2014-01-06  4:35 Stephen Rothwell
2014-01-06  4:35 Stephen Rothwell
2013-12-12  0:15 Stephen Rothwell
2013-12-12  0:36 ` David Miller
2013-12-12  0:49   ` Stephen Rothwell
2013-12-12  0:58     ` David Miller
2013-12-12  1:01       ` David Miller
2013-10-31  4:19 Stephen Rothwell
2013-10-30  2:14 Stephen Rothwell
2013-10-28  4:23 Stephen Rothwell
2013-06-27  3:49 Stephen Rothwell
2013-06-25  2:54 Stephen Rothwell
2013-06-21  2:33 Stephen Rothwell
2013-06-20  2:58 Stephen Rothwell
2013-06-20  3:37 ` David Miller
2013-04-30  2:24 Stephen Rothwell
2013-04-30  8:04 ` David Miller
2013-05-02  1:25 ` Chen Gang
2013-04-26  3:38 Stephen Rothwell
2013-04-26  3:27 Stephen Rothwell
2013-04-30  8:03 ` David Miller
2013-04-26  3:24 Stephen Rothwell
2013-04-28 13:49 ` Yuval Mintz
2013-04-28 23:57   ` Stephen Rothwell
2013-04-30  8:02 ` David Miller
2013-04-19  2:53 Stephen Rothwell
2013-04-23  0:38 ` David Miller
2013-02-12  0:57 Stephen Rothwell
2013-02-02  3:22 Stephen Rothwell
2013-02-02 10:05 ` Jiri Pirko
2013-02-04 23:21   ` Stephen Rothwell
2013-02-02  3:22 Stephen Rothwell
2013-01-11  2:03 Stephen Rothwell
2012-09-28  1:35 Stephen Rothwell
2012-09-25  2:34 Stephen Rothwell
2012-09-25  5:10 ` Eric Dumazet
2012-09-25  5:13   ` David Miller
2012-09-25  5:23     ` Eric Dumazet
2012-09-21  1:30 Stephen Rothwell
2012-09-21 18:58 ` David Miller
2012-09-14  1:18 Stephen Rothwell
2012-09-14  1:17 Stephen Rothwell
2012-06-26  3:15 Stephen Rothwell
2012-06-29  6:46 ` Sjur BRENDELAND
2012-06-25  3:38 Stephen Rothwell
2012-06-25 23:04 ` David Miller
2012-06-25  3:33 Stephen Rothwell
2012-06-25 23:04 ` David Miller
2012-04-27  2:02 Stephen Rothwell
2012-03-05  2:11 Stephen Rothwell
2012-03-06  2:17 ` David Miller
2012-03-01  2:33 Stephen Rothwell
2012-03-01 22:24 ` David Miller
2012-02-16  1:38 Stephen Rothwell
2012-02-16 11:24 ` Yuval Mintz
2012-02-16 13:47   ` Yuval Mintz
2012-02-16 23:30   ` Stephen Rothwell
2012-02-19 22:41     ` David Miller
2011-12-16  1:07 Stephen Rothwell
2011-12-16  7:34 ` David Miller
2011-12-14  2:25 Stephen Rothwell
2011-12-14 18:36 ` David Miller
2011-11-23  0:17 Stephen Rothwell
2011-11-23  0:23 ` David Miller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20201001134936.305b51c6@canb.auug.org.au \
    --to=sfr@canb.auug.org.au \
    --cc=davem@davemloft.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-next@vger.kernel.org \
    --cc=mathew.j.martineau@linux.intel.com \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).