Netdev List
 help / color / mirror / Atom feed
* [PATCH v3 3/3] lib/string_helpers.c: Change semantics of string_escape_mem
From: Rasmus Villemoes @ 2015-02-09 23:44 UTC (permalink / raw)
  To: Andrew Morton, Andy Shevchenko, Trond Myklebust, J. Bruce Fields,
	David S. Miller
  Cc: Rasmus Villemoes, linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	linux-nfs-u79uwXL29TY76Z2rM5mHXA, netdev-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <1423525491-12613-1-git-send-email-linux-qQsb+v5E8BnlAoU/VqSP6n9LOBIZ5rWg@public.gmane.org>

The current semantics of string_escape_mem are inadequate for one of
its current users, vsnprintf(). If that is to honour its contract, it
must know how much space would be needed for the entire escaped
buffer, and string_escape_mem provides no way of obtaining that (short
of allocating a large enough buffer (~4 times input string) to let it
play with, and that's definitely a big no-no inside vsnprintf).

So change the semantics for string_escape_mem to be more
snprintf-like: Return the size of the output that would be generated
if the destination buffer was big enough, but of course still only
write to the part of dst it is allowed to, and don't do
'\0'-termination. It is then up to the caller to detect whether output
was truncated and to append a '\0' if desired. Also, we must output
partial escape sequences, otherwise a call such as snprintf(buf, 3,
"%1pE", "\123") would cause printf to write a \0 to buf[2] but leaving
buf[0] and buf[1] with whatever they previously contained.

This also fixes a bug in the escaped_string() helper function, which
used to unconditionally pass a length of "end-buf" to
string_escape_mem(); since the latter doesn't check osz for being
insanely large, it would happily write to dst. For example,
kasprintf(GFP_KERNEL, "something and then %pE", ...); is an easy way
to trigger an oops.

In test-string_helpers.c, I removed the now meaningless -ENOMEM test,
and replaced it with testing for getting the expected return value
even if the buffer is too small. Also ensure that nothing is written
when osz == 0.

In net/sunrpc/cache.c, I think qword_add still has the same
semantics. Someone should definitely double-check this.

Signed-off-by: Rasmus Villemoes <linux-qQsb+v5E8BnlAoU/VqSP6n9LOBIZ5rWg@public.gmane.org>
---
 include/linux/string_helpers.h |  8 ++++----
 lib/string_helpers.c           | 39 +++++++--------------------------------
 lib/test-string_helpers.c      | 35 +++++++++++++++--------------------
 lib/vsprintf.c                 |  8 ++++++--
 net/sunrpc/cache.c             |  8 +++++---
 5 files changed, 37 insertions(+), 61 deletions(-)

diff --git a/include/linux/string_helpers.h b/include/linux/string_helpers.h
index 6eb567ac56bc..38a2a6f1fc76 100644
--- a/include/linux/string_helpers.h
+++ b/include/linux/string_helpers.h
@@ -47,22 +47,22 @@ static inline int string_unescape_any_inplace(char *buf)
 #define ESCAPE_ANY_NP		(ESCAPE_ANY | ESCAPE_NP)
 #define ESCAPE_HEX		0x20
 
-int string_escape_mem(const char *src, size_t isz, char **dst, size_t osz,
+int string_escape_mem(const char *src, size_t isz, char *dst, size_t osz,
 		unsigned int flags, const char *esc);
 
 static inline int string_escape_mem_any_np(const char *src, size_t isz,
-		char **dst, size_t osz, const char *esc)
+		char *dst, size_t osz, const char *esc)
 {
 	return string_escape_mem(src, isz, dst, osz, ESCAPE_ANY_NP, esc);
 }
 
-static inline int string_escape_str(const char *src, char **dst, size_t sz,
+static inline int string_escape_str(const char *src, char *dst, size_t sz,
 		unsigned int flags, const char *esc)
 {
 	return string_escape_mem(src, strlen(src), dst, sz, flags, esc);
 }
 
-static inline int string_escape_str_any_np(const char *src, char **dst,
+static inline int string_escape_str_any_np(const char *src, char *dst,
 		size_t sz, const char *esc)
 {
 	return string_escape_str(src, dst, sz, ESCAPE_ANY_NP, esc);
diff --git a/lib/string_helpers.c b/lib/string_helpers.c
index 7e2fef1eb40e..df7fda90b333 100644
--- a/lib/string_helpers.c
+++ b/lib/string_helpers.c
@@ -278,14 +278,11 @@ static bool escape_space(unsigned char c, char **dst, char *end)
 		return false;
 	}
 
-	if (out + 1 >= end)
-		goto skip;
 	if (out + 0 < end)
 		out[0] = '\\';
 	if (out + 1 < end)
 		out[1] = to;
 
-skip:
 	*dst = out + 2;
 	return true;
 }
@@ -309,14 +306,11 @@ static bool escape_special(unsigned char c, char **dst, char *end)
 		return false;
 	}
 
-	if (out + 1 >= end)
-		goto skip;
 	if (out + 0 < end)
 		out[0] = '\\';
 	if (out + 1 < end)
 		out[1] = to;
 
-skip:
 	*dst = out + 2;
 	return true;
 }
@@ -328,14 +322,11 @@ static bool escape_null(unsigned char c, char **dst, char *end)
 	if (c)
 		return false;
 
-	if (out + 1 >= end)
-		goto skip;
 	if (out + 0 < end)
 		out[0] = '\\';
 	if (out + 1 < end)
 		out[1] = '0';
 
-skip:
 	*dst = out + 2;
 	return true;
 }
@@ -344,8 +335,6 @@ static bool escape_octal(unsigned char c, char **dst, char *end)
 {
 	char *out = *dst;
 
-	if (out + 3 >= end)
-		goto skip;
 	if (out + 0 < end)
 		out[0] = '\\';
 	if (out + 1 < end)
@@ -355,7 +344,6 @@ static bool escape_octal(unsigned char c, char **dst, char *end)
 	if (out + 3 < end)
 		out[3] = ((c >> 0) & 0x07) + '0';
 
-skip:
 	*dst = out + 4;
 	return true;
 }
@@ -364,8 +352,6 @@ static bool escape_hex(unsigned char c, char **dst, char *end)
 {
 	char *out = *dst;
 
-	if (out + 3 >= end)
-		goto skip;
 	if (out + 0 < end)
 		out[0] = '\\';
 	if (out + 1 < end)
@@ -375,7 +361,6 @@ static bool escape_hex(unsigned char c, char **dst, char *end)
 	if (out + 3 < end)
 		out[3] = hex_asc_lo(c);
 
-skip:
 	*dst = out + 4;
 	return true;
 }
@@ -429,20 +414,17 @@ skip:
  * it if needs.
  *
  * Return:
- * The amount of the characters processed to the destination buffer, or
- * %-ENOMEM if the size of buffer is not enough to put an escaped character is
- * returned.
- *
- * Even in the case of error @dst pointer will be updated to point to the byte
- * after the last processed character.
+ * The total size of the escaped output that would be generated for
+ * the given input and flags. To check whether the output was
+ * truncated, compare the return value to osz. There is room left in
+ * dst for a '\0' terminator if and only if ret < osz.
  */
-int string_escape_mem(const char *src, size_t isz, char **dst, size_t osz,
+int string_escape_mem(const char *src, size_t isz, char *dst, size_t osz,
 		      unsigned int flags, const char *esc)
 {
-	char *p = *dst;
+	char *p = dst;
 	char *end = p + osz;
 	bool is_dict = esc && *esc;
-	int ret;
 
 	while (isz--) {
 		unsigned char c = *src++;
@@ -482,13 +464,6 @@ int string_escape_mem(const char *src, size_t isz, char **dst, size_t osz,
 		escape_passthrough(c, &p, end);
 	}
 
-	if (p > end) {
-		*dst = end;
-		return -ENOMEM;
-	}
-
-	ret = p - *dst;
-	*dst = p;
-	return ret;
+	return p - dst;
 }
 EXPORT_SYMBOL(string_escape_mem);
diff --git a/lib/test-string_helpers.c b/lib/test-string_helpers.c
index ab0d30e1e18f..5f759c3c2f60 100644
--- a/lib/test-string_helpers.c
+++ b/lib/test-string_helpers.c
@@ -264,12 +264,12 @@ static __init void test_string_escape(const char *name,
 				      const struct test_string_2 *s2,
 				      unsigned int flags, const char *esc)
 {
-	int q_real = 512;
-	char *out_test = kmalloc(q_real, GFP_KERNEL);
-	char *out_real = kmalloc(q_real, GFP_KERNEL);
+	size_t out_size = 512;
+	char *out_test = kmalloc(out_size, GFP_KERNEL);
+	char *out_real = kmalloc(out_size, GFP_KERNEL);
 	char *in = kmalloc(256, GFP_KERNEL);
-	char *buf = out_real;
 	int p = 0, q_test = 0;
+	int q_real;
 
 	if (!out_test || !out_real || !in)
 		goto out;
@@ -301,29 +301,26 @@ static __init void test_string_escape(const char *name,
 		q_test += len;
 	}
 
-	q_real = string_escape_mem(in, p, &buf, q_real, flags, esc);
+	q_real = string_escape_mem(in, p, out_real, out_size, flags, esc);
 
 	test_string_check_buf(name, flags, in, p, out_real, q_real, out_test,
 			      q_test);
+
+	memset(out_real, 'Z', out_size);
+	q_real = string_escape_mem(in, p, out_real, 0, flags, esc);
+	if (q_real != q_test)
+		pr_warn("Test '%s' failed: flags = %u, osz = 0, expected %d, got %d\n",
+			name, flags, q_test, q_real);
+	if (memchr_inv(out_real, 'Z', out_size))
+		pr_warn("Test '%s' failed: osz = 0 but string_escape_mem wrote to the buffer\n",
+			name);
+
 out:
 	kfree(in);
 	kfree(out_real);
 	kfree(out_test);
 }
 
-static __init void test_string_escape_nomem(void)
-{
-	char *in = "\eb \\C\007\"\x90\r]";
-	char out[64], *buf = out;
-	int rc = -ENOMEM, ret;
-
-	ret = string_escape_str_any_np(in, &buf, strlen(in), NULL);
-	if (ret == rc)
-		return;
-
-	pr_err("Test 'escape nomem' failed: got %d instead of %d\n", ret, rc);
-}
-
 static int __init test_string_helpers_init(void)
 {
 	unsigned int i;
@@ -342,8 +339,6 @@ static int __init test_string_helpers_init(void)
 	for (i = 0; i < (ESCAPE_ANY_NP | ESCAPE_HEX) + 1; i++)
 		test_string_escape("escape 1", escape1, i, TEST_STRING_2_DICT_1);
 
-	test_string_escape_nomem();
-
 	return -EINVAL;
 }
 module_init(test_string_helpers_init);
diff --git a/lib/vsprintf.c b/lib/vsprintf.c
index 3568e3906777..58e1193eaa4b 100644
--- a/lib/vsprintf.c
+++ b/lib/vsprintf.c
@@ -1159,8 +1159,12 @@ char *escaped_string(char *buf, char *end, u8 *addr, struct printf_spec spec,
 
 	len = spec.field_width < 0 ? 1 : spec.field_width;
 
-	/* Ignore the error. We print as many characters as we can */
-	string_escape_mem(addr, len, &buf, end - buf, flags, NULL);
+	/*
+	 * string_escape_mem writes as many characters as it can to
+	 * the given buffer, and returns the total size of the output
+	 * had the buffer been big enough.
+	 */
+	buf += string_escape_mem(addr, len, buf, buf < end ? end - buf : 0, flags, NULL);
 
 	return buf;
 }
diff --git a/net/sunrpc/cache.c b/net/sunrpc/cache.c
index 33fb105d4352..22c4418057f4 100644
--- a/net/sunrpc/cache.c
+++ b/net/sunrpc/cache.c
@@ -1068,12 +1068,14 @@ void qword_add(char **bpp, int *lp, char *str)
 {
 	char *bp = *bpp;
 	int len = *lp;
-	int ret;
+	int ret, written;
 
 	if (len < 0) return;
 
-	ret = string_escape_str(str, &bp, len, ESCAPE_OCTAL, "\\ \n\t");
-	if (ret < 0 || ret == len)
+	ret = string_escape_str(str, bp, len, ESCAPE_OCTAL, "\\ \n\t");
+	written = min(ret, len);
+	bp += written;
+	if (ret >= len)
 		len = -1;
 	else {
 		len -= ret;
-- 
2.1.3

--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" 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 related

* Re: [PATCH 3/3] stmmac: Add AXI burst length support to platform device.
From: Chen Baozi @ 2015-02-10  0:02 UTC (permalink / raw)
  To: Mark Rutland
  Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org
In-Reply-To: <20150209120443.GF4250@leverpostej>

On Mon, Feb 09, 2015 at 12:04:43PM +0000, Mark Rutland wrote:
> On Sat, Feb 07, 2015 at 05:07:16AM +0000, Chen Baozi wrote:
> > The AXI Bus Mode Register controls the AXI master behavior. It is mainly
> > used to control the burst splitting and the number of outstanding requests.
> > This register is present and valid only in GMAC-AXI configuration. The old
> > driver only supports this feature on PCI devices. This patch adds an
> > 'snps,apl' properties in DT to enable it on platform devices.
> > 
> > Signed-off-by: Chen Baozi <chenbaozi@kylinos.com.cn>
> > ---
> >  Documentation/devicetree/bindings/net/stmmac.txt      | 1 +
> >  drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c | 1 +
> >  2 files changed, 2 insertions(+)
> > 
> > diff --git a/Documentation/devicetree/bindings/net/stmmac.txt b/Documentation/devicetree/bindings/net/stmmac.txt
> > index c41afd9..8f3c834 100644
> > --- a/Documentation/devicetree/bindings/net/stmmac.txt
> > +++ b/Documentation/devicetree/bindings/net/stmmac.txt
> > @@ -43,6 +43,7 @@ Optional properties:
> >    available this clock is used for programming the Timestamp Addend Register.
> >    If not passed then the system clock will be used and this is fine on some
> >    platforms.
> > +- snps,abl: AXI Burst Length
> 
> This is not a good name (though I see it follows "snps,pbl", which is
> also not a good name)...

Any idea for a better name?

> 
> Why does this need to be in the DT? Is this required for correctness? Or
> performance?

This is required for correctness. Otherwise, the driver would write
'0' to the register by default, which makes the driver not work.

Cheers,

Baozi.

> 
> Thanks,
> Mark.
> 
> >  
> >  Examples:
> >  
> > diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
> > index 3039de2..abbc897 100644
> > --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
> > +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
> > @@ -230,6 +230,7 @@ static int stmmac_probe_config_dt(struct platform_device *pdev,
> >  			return -ENOMEM;
> >  		plat->dma_cfg = dma_cfg;
> >  		of_property_read_u32(np, "snps,pbl", &dma_cfg->pbl);
> > +		of_property_read_u32(np, "snps,abl", &dma_cfg->burst_len);
> >  		dma_cfg->fixed_burst =
> >  			of_property_read_bool(np, "snps,fixed-burst");
> >  		dma_cfg->mixed_burst =
> > -- 
> > 2.1.4
> > 
> > 
> > _______________________________________________
> > linux-arm-kernel mailing list
> > linux-arm-kernel@lists.infradead.org
> > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
> > 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply

* Re: [net-next 00/15][pull request] Intel Wired LAN Driver Updates 2015-02-09
From: Jeff Kirsher @ 2015-02-10  0:25 UTC (permalink / raw)
  To: David Miller; +Cc: netdev, nhorman, sassmann, jogreene
In-Reply-To: <20150209.141830.1222222887300293567.davem@redhat.com>

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

On Mon, 2015-02-09 at 14:18 -0800, David Miller wrote:
> From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
> Date: Mon,  9 Feb 2015 02:43:46 -0800
> 
> > This series contains updates to i40e and i40evf only.
> 
> Pulled, please send me a fixup patch for the over indented lines in
> patch #15.

Working on it now.

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

^ permalink raw reply

* [PATCHv2] ath9k_htc: add adaptive usb receive flow control to repair soft lockup with monitor mode
From: Yuwei Zheng @ 2015-02-10  0:34 UTC (permalink / raw)
  To: linux-kernel, ath9k-devel, linux-wireless, kvalo, ath9k-devel
  Cc: netdev, zhengyuwei, Yuwei Zheng

The ath9k_hif_usb_rx_cb function excute on  the interrupt context, and ath9k_rx_tasklet excute
on the soft irq context. In other words, the ath9k_hif_usb_rx_cb have more chance to excute than
ath9k_rx_tasklet.  So in the worst condition,  the rx.rxbuf receive list is always full,
and the do {}while(true) loop will not be break. The kernel get a soft lockup panic. 
 
[59011.007210] BUG: soft lockup - CPU#0 stuck for 23s!
[kworker/0:0:30609]
[59011.030560] BUG: scheduling while atomic: kworker/0:0/30609/0x40010100
[59013.804486] BUG: scheduling while atomic: kworker/0:0/30609/0x40010100
[59013.858522] Kernel panic - not syncing: softlockup: hung tasks
 
[59014.038891] Exception stack(0xdf4bbc38 to 0xdf4bbc80)
[59014.046834] bc20:                                                       de57b950 60000113
[59014.059579] bc40: 00000000 bb32bb32 60000113 de57b948 de57b500 dc7bb440 df4bbcd0 00000000
[59014.072337] bc60: de57b950 60000113 df4bbcd0 df4bbc80 c04c259d c04c25a0 60000133 ffffffff
[59014.085233] [<c04c28db>] (__irq_svc+0x3b/0x5c) from [<c04c25a0>] (_raw_spin_unlock_irqrestore+0xc/0x10)
[59014.100437] [<c04c25a0>] (_raw_spin_unlock_irqrestore+0xc/0x10) from [<bf9c2089>] (ath9k_rx_tasklet+0x290/0x490 [ath9k_htc])
[59014.118267] [<bf9c2089>] (ath9k_rx_tasklet+0x290/0x490 [ath9k_htc]) from [<c0036d23>] (tasklet_action+0x3b/0x98)
[59014.134132] [<c0036d23>] (tasklet_action+0x3b/0x98) from [<c0036709>] (__do_softirq+0x99/0x16c)
[59014.147784] [<c0036709>] (__do_softirq+0x99/0x16c) from [<c00369f7>] (irq_exit+0x5b/0x5c)
[59014.160653] [<c00369f7>] (irq_exit+0x5b/0x5c) from [<c000cfc3>] (handle_IRQ+0x37/0x78)
[59014.173124] [<c000cfc3>] (handle_IRQ+0x37/0x78) from [<c00085df>] (omap3_intc_handle_irq+0x5f/0x68)
[59014.187225] [<c00085df>] (omap3_intc_handle_irq+0x5f/0x68) from [<c04c28db>](__irq_svc+0x3b/0x5c)
 
This bug can be see with low performance board, such as uniprocessor beagle bone board. Add some debug 
message in the ath9k_hif_usb_rx_cb function may trigger this bug quickly.
 
Signed-off-by: Yuwei Zheng <yuweizheng@139.com>
---
Changes since v1:
- Add aurfc_active flag to stop delayed submit while ath9k_hif_usb_dealloc_rx_urbs called.
- Add spinlock aurfc_lock to protect aurfc_delayed_work and aurfc_active.
- Add mod_delayed_work to trigger aurfc_submit_handler excuted immediately while rx_buf list is empty. 
- Add flush_delayed_work to wait the aurfc_submit_handler finish.

 drivers/net/wireless/ath/ath9k/hif_usb.c       | 78 +++++++++++++++++++++++---
 drivers/net/wireless/ath/ath9k/hif_usb.h       | 13 +++++
 drivers/net/wireless/ath/ath9k/htc.h           | 19 +++++++
 drivers/net/wireless/ath/ath9k/htc_drv_debug.c | 53 +++++++++++++++++
 drivers/net/wireless/ath/ath9k/htc_drv_txrx.c  | 58 +++++++++++++++++++
 5 files changed, 214 insertions(+), 7 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/hif_usb.c b/drivers/net/wireless/ath/ath9k/hif_usb.c
index 8e7153b..2e73e19 100644
--- a/drivers/net/wireless/ath/ath9k/hif_usb.c
+++ b/drivers/net/wireless/ath/ath9k/hif_usb.c
@@ -640,6 +640,7 @@ static void ath9k_hif_usb_rx_cb(struct urb *urb)
 	struct hif_device_usb *hif_dev =
 		usb_get_intfdata(usb_ifnum_to_if(urb->dev, 0));
 	int ret;
+	int delay;
 
 	if (!skb)
 		return;
@@ -658,7 +659,6 @@ static void ath9k_hif_usb_rx_cb(struct urb *urb)
 	default:
 		goto resubmit;
 	}
-
 	if (likely(urb->actual_length != 0)) {
 		skb_put(skb, urb->actual_length);
 		ath9k_hif_usb_rx_stream(hif_dev, skb);
@@ -667,12 +667,23 @@ static void ath9k_hif_usb_rx_cb(struct urb *urb)
 resubmit:
 	skb_reset_tail_pointer(skb);
 	skb_trim(skb, 0);
-
-	usb_anchor_urb(urb, &hif_dev->rx_submitted);
-	ret = usb_submit_urb(urb, GFP_ATOMIC);
-	if (ret) {
-		usb_unanchor_urb(urb);
-		goto free;
+	spin_lock(&hif_dev->aurfc_lock);
+	/* submit the urb more slowly for flow control */
+	if (atomic_read(&hif_dev->aurfc_submit_delay) > 0 &&
+	    hif_dev->aurfc_active == 1) {
+		usb_anchor_urb(urb, &hif_dev->rx_delayed_submitted);
+		delay = atomic_read(&hif_dev->aurfc_submit_delay);
+		schedule_delayed_work(&hif_dev->aurfc_delayed_work,
+				      msecs_to_jiffies(delay));
+		spin_unlock(&hif_dev->aurfc_lock);
+	} else {
+		spin_unlock(&hif_dev->aurfc_lock);
+		usb_anchor_urb(urb, &hif_dev->rx_submitted);
+		ret = usb_submit_urb(urb, GFP_ATOMIC);
+		if (ret) {
+			usb_unanchor_urb(urb);
+			goto free;
+		}
 	}
 
 	return;
@@ -818,9 +829,53 @@ err:
 	return -ENOMEM;
 }
 
+static void aurfc_submit_handler(struct work_struct *work)
+{
+	struct hif_device_usb *hif_dev =
+		container_of(work,
+			     struct hif_device_usb,
+			     aurfc_delayed_work.work);
+	struct urb *urb = NULL;
+	struct sk_buff *skb = NULL;
+	int ret;
+	int loop_times = 0;
+
+	AURFC_STAT_INC(aurfc_called);
+	while (true) {
+		loop_times++;
+		if (loop_times > MAX_RX_URB_NUM)
+			atomic_add(AURFC_STEP,
+				   &hif_dev->aurfc_submit_delay);
+
+		urb = usb_get_from_anchor(
+				&hif_dev->rx_delayed_submitted);
+		if (urb) {
+			skb = (struct sk_buff *)urb->context;
+			ret = usb_submit_urb(urb, GFP_KERNEL);
+			if (ret != 0) {
+				usb_unanchor_urb(urb);
+				dev_kfree_skb_any(skb);
+				urb->context = NULL;
+			}
+		} else {
+			break;
+		}
+	}
+}
+
 static void ath9k_hif_usb_dealloc_rx_urbs(struct hif_device_usb *hif_dev)
 {
+	unsigned long flags;
+
+	spin_lock_irqsave(&hif_dev->aurfc_lock, flags);
+	hif_dev->aurfc_active = 0;
+	/* excute the last queued work immediately */
+	mod_delayed_work(system_wq, &hif_dev->aurfc_delayed_work, 0);
+	spin_unlock_irqrestore(&hif_dev->aurfc_lock, flags);
+	/* wait the last work finish, otherwise kill urbs may deadlock*/
+	flush_delayed_work(&hif_dev->aurfc_delayed_work);
 	usb_kill_anchored_urbs(&hif_dev->rx_submitted);
+	usb_kill_anchored_urbs(&hif_dev->rx_delayed_submitted);
 }
 
 static int ath9k_hif_usb_alloc_rx_urbs(struct hif_device_usb *hif_dev)
@@ -830,8 +885,17 @@ static int ath9k_hif_usb_alloc_rx_urbs(struct hif_device_usb *hif_dev)
 	int i, ret;
 
 	init_usb_anchor(&hif_dev->rx_submitted);
+	init_usb_anchor(&hif_dev->rx_delayed_submitted);
+
 	spin_lock_init(&hif_dev->rx_lock);
 
+	/* add for adaptive usb receive flow control*/
+	atomic_set(&hif_dev->aurfc_submit_delay, 0);
+	INIT_DELAYED_WORK(&hif_dev->aurfc_delayed_work,
+			  aurfc_submit_handler);
+	spin_lock_init(&hif_dev->aurfc_lock);
+	hif_dev->aurfc_active = 1;
+
 	for (i = 0; i < MAX_RX_URB_NUM; i++) {
 
 		/* Allocate URB */
diff --git a/drivers/net/wireless/ath/ath9k/hif_usb.h b/drivers/net/wireless/ath/ath9k/hif_usb.h
index 51496e7..2ff59be 100644
--- a/drivers/net/wireless/ath/ath9k/hif_usb.h
+++ b/drivers/net/wireless/ath/ath9k/hif_usb.h
@@ -41,6 +41,7 @@
 #define MAX_RX_URB_NUM  8
 #define MAX_RX_BUF_SIZE 16384
 #define MAX_PKT_NUM_IN_TRANSFER 10
+#define AURFC_STEP 70  /* millisecond */
 
 #define MAX_REG_OUT_URB_NUM  1
 #define MAX_REG_IN_URB_NUM   64
@@ -98,9 +99,21 @@ struct hif_device_usb {
 	struct hif_usb_tx tx;
 	struct usb_anchor regout_submitted;
 	struct usb_anchor rx_submitted;
+	/* anchor delayed urb */
+	struct usb_anchor rx_delayed_submitted;
 	struct usb_anchor reg_in_submitted;
 	struct usb_anchor mgmt_submitted;
 	struct sk_buff *remain_skb;
+
+	/* adaptive usb receive flow control */
+	struct delayed_work aurfc_delayed_work;
+	/* to protect the delayed work */
+	spinlock_t aurfc_lock;
+	/* urb submit delay, in millisecond */
+	atomic_t  aurfc_submit_delay;
+	/* set to 1, if the urb can be delayed submit */
+	int aurfc_active;
+
 	const char *fw_name;
 	int rx_remain_len;
 	int rx_pkt_len;
diff --git a/drivers/net/wireless/ath/ath9k/htc.h b/drivers/net/wireless/ath/ath9k/htc.h
index 9dde265..1586bd2 100644
--- a/drivers/net/wireless/ath/ath9k/htc.h
+++ b/drivers/net/wireless/ath/ath9k/htc.h
@@ -331,6 +331,13 @@ static inline struct ath9k_htc_tx_ctl *HTC_SKB_CB(struct sk_buff *skb)
 
 #define TX_QSTAT_INC(q) (priv->debug.tx_stats.queue_stats[q]++)
 
+#define AURFC_STAT_INC(c) \
+	(hif_dev->htc_handle->drv_priv->debug.aurfc_stats.c++)
+#define AURFC_STAT_ADD(c, a) \
+	(hif_dev->htc_handle->drv_priv->debug.aurfc_stats.c += a)
+#define AURFC_STAT_SET(c, a) \
+	(hif_dev->htc_handle->drv_priv->debug.aurfc_stats.c = a)
+
 void ath9k_htc_err_stat_rx(struct ath9k_htc_priv *priv,
 			   struct ath_rx_status *rs);
 
@@ -352,11 +359,20 @@ struct ath_skbrx_stats {
 	u32 skb_dropped;
 };
 
+struct ath_aurfc_stats {
+	u32 aurfc_highwater;
+	u32 aurfc_lowwater;
+	u32 aurfc_wm_triggered;
+	u32 aurfc_submit_delay;
+	u32 aurfc_called;
+};
+
 struct ath9k_debug {
 	struct dentry *debugfs_phy;
 	struct ath_tx_stats tx_stats;
 	struct ath_rx_stats rx_stats;
 	struct ath_skbrx_stats skbrx_stats;
+	struct ath_aurfc_stats aurfc_stats;
 };
 
 void ath9k_htc_get_et_strings(struct ieee80211_hw *hw,
@@ -377,6 +393,9 @@ void ath9k_htc_get_et_stats(struct ieee80211_hw *hw,
 
 #define TX_QSTAT_INC(c) do { } while (0)
 
+#define AURFC_STAT_INC(c) do {} while (0)
+#define AURFC_STAT_ADD(c, a) do {} while (0)
+#define AURFC_STAT_SET(c, a) do {} while (0)
 static inline void ath9k_htc_err_stat_rx(struct ath9k_htc_priv *priv,
 					 struct ath_rx_status *rs)
 {
diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_debug.c b/drivers/net/wireless/ath/ath9k/htc_drv_debug.c
index 8cef1ed..a6be9be 100644
--- a/drivers/net/wireless/ath/ath9k/htc_drv_debug.c
+++ b/drivers/net/wireless/ath/ath9k/htc_drv_debug.c
@@ -286,6 +286,54 @@ static const struct file_operations fops_skb_rx = {
 	.llseek = default_llseek,
 };
 
+static ssize_t read_file_aurfc(struct file *file,
+			       char __user *user_buf,
+			       size_t count, loff_t *ppos)
+{
+	struct ath9k_htc_priv *priv = file->private_data;
+	char *buf;
+	unsigned int len = 0, size = 1500;
+	ssize_t retval = 0;
+
+	buf = kzalloc(size, GFP_KERNEL);
+	if (!buf)
+		return -ENOMEM;
+
+	len += scnprintf(buf + len, size - len,
+			"%20s : %10u\n", "High watermark",
+			priv->debug.aurfc_stats.aurfc_highwater);
+	len += scnprintf(buf + len, size - len,
+			"%20s : %10u\n", "Low watermark",
+			priv->debug.aurfc_stats.aurfc_lowwater);
+
+	len += scnprintf(buf + len, size - len,
+			"%20s : %10u\n", "WM triggered",
+			priv->debug.aurfc_stats.aurfc_wm_triggered);
+
+	len += scnprintf(buf + len, size - len,
+			"%20s : %10u\n", "Handler called",
+			priv->debug.aurfc_stats.aurfc_called);
+
+	len += scnprintf(buf + len, size - len,
+			"%20s : %10u\n", "Submit delay",
+			priv->debug.aurfc_stats.aurfc_submit_delay);
+	if (len > size)
+		len = size;
+
+	retval = simple_read_from_buffer(user_buf, count,
+					 ppos, buf, len);
+	kfree(buf);
+
+	return retval;
+}
+
+static const struct file_operations fops_aurfc = {
+	.read = read_file_aurfc,
+	.open = simple_open,
+	.owner = THIS_MODULE,
+	.llseek = default_llseek,
+};
+
 static ssize_t read_file_slot(struct file *file, char __user *user_buf,
 			      size_t count, loff_t *ppos)
 {
@@ -518,7 +566,12 @@ int ath9k_htc_init_debug(struct ath_hw *ah)
 	debugfs_create_file("skb_rx", S_IRUSR, priv->debug.debugfs_phy,
 			    priv, &fops_skb_rx);
 
+	debugfs_create_file("aurfc_stats", S_IRUSR,
+			    priv->debug.debugfs_phy,
+			    priv, &fops_aurfc);
+
 	ath9k_cmn_debug_recv(priv->debug.debugfs_phy, &priv->debug.rx_stats);
+
 	ath9k_cmn_debug_phy_err(priv->debug.debugfs_phy, &priv->debug.rx_stats);
 
 	debugfs_create_file("slot", S_IRUSR, priv->debug.debugfs_phy,
diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c b/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c
index a0f58e2..1c8ebc5 100644
--- a/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c
+++ b/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c
@@ -1061,7 +1061,31 @@ void ath9k_rx_tasklet(unsigned long data)
 	unsigned long flags;
 	struct ieee80211_hdr *hdr;
 
+	/* add for adaptive usb receive flow control*/
+	int looptimes = 0;
+	int highwatermark = ATH9K_HTC_RXBUF*3/4;
+	int lowwatermark = ATH9K_HTC_RXBUF/32;
+	unsigned int delay = 0;
+
+	struct htc_target *htc = priv->htc;
+	struct hif_device_usb *hif_dev = htc->hif_dev;
+
+	AURFC_STAT_SET(aurfc_highwater, highwatermark);
+	AURFC_STAT_SET(aurfc_lowwater, lowwatermark);
+
 	do {
+		looptimes++;
+		/* when trigger high wartermark, tell the
+		 * urb callback to submit more slowlly.
+		 */
+		if (looptimes > highwatermark) {
+			delay = looptimes*AURFC_STEP;
+			atomic_set(&hif_dev->aurfc_submit_delay,
+				   delay);
+			AURFC_STAT_INC(aurfc_wm_triggered);
+			AURFC_STAT_SET(aurfc_submit_delay, delay);
+		}
+
 		spin_lock_irqsave(&priv->rx.rxbuflock, flags);
 		list_for_each_entry(tmp_buf, &priv->rx.rxbuf, list) {
 			if (tmp_buf->in_process) {
@@ -1072,6 +1096,29 @@ void ath9k_rx_tasklet(unsigned long data)
 
 		if (rxbuf == NULL) {
 			spin_unlock_irqrestore(&priv->rx.rxbuflock, flags);
+			spin_lock_irqsave(&hif_dev->aurfc_lock,
+					  flags);
+			/* the rxbuf list is empty now, the
+			 * queued work could be scheduled
+			 * to submit urbs immediately.
+			 */
+			if (atomic_read(
+				&hif_dev->aurfc_submit_delay) > 0 &&
+			    hif_dev->aurfc_active > 0)
+				mod_delayed_work(system_wq,
+					&hif_dev->aurfc_delayed_work,
+						 0);
+			spin_unlock_irqrestore(&hif_dev->aurfc_lock,
+					       flags);
+			/* reset submit delay to guaranteed
+			 * usb receive performance.
+			 */
+			if (looptimes < lowwatermark) {
+				atomic_set(&hif_dev->aurfc_submit_delay
+					   , 0);
+				AURFC_STAT_SET(aurfc_submit_delay,
+					       0);
+			}
 			break;
 		}
 
@@ -1114,6 +1161,10 @@ void ath9k_htc_rxep(void *drv_priv, struct sk_buff *skb,
 	struct ath_common *common = ath9k_hw_common(ah);
 	struct ath9k_htc_rxbuf *rxbuf = NULL, *tmp_buf = NULL;
 
+	struct htc_target *htc = priv->htc;
+	struct hif_device_usb *hif_dev = htc->hif_dev;
+	int delay = ATH9K_HTC_RXBUF * AURFC_STEP;
+
 	spin_lock(&priv->rx.rxbuflock);
 	list_for_each_entry(tmp_buf, &priv->rx.rxbuf, list) {
 		if (!tmp_buf->in_process) {
@@ -1124,6 +1175,13 @@ void ath9k_htc_rxep(void *drv_priv, struct sk_buff *skb,
 	spin_unlock(&priv->rx.rxbuflock);
 
 	if (rxbuf == NULL) {
+		/* The rxbuf list is full now, tell the urb callback
+		 * to submit more slowly. Otherwise, the soft lockup
+		 * may be triggerd immediately.
+		 */
+		atomic_set(&hif_dev->aurfc_submit_delay, delay);
+		AURFC_STAT_INC(aurfc_wm_triggered);
+		AURFC_STAT_SET(aurfc_submit_delay, delay);
 		ath_dbg(common, ANY, "No free RX buffer\n");
 		goto err;
 	}
-- 
1.9.1

^ permalink raw reply related

* [PATCH 2/3] nft_hash: define max_shift rhashtable param
From: Josh Hunt @ 2015-02-10  0:48 UTC (permalink / raw)
  To: Pablo Neira Ayuso, Patrick McHardy, Thomas Graf
  Cc: netfilter-devel, netdev, Daniel Borkmann, Josh Hunt
In-Reply-To: <1423529311-26050-1-git-send-email-johunt@akamai.com>

Starting with commit "rhashtable: require max_shift definition" all users of
rhashtable must define a max_shift value to set an upper bound the table can
grow to. nft sets presently use nft_set_desc.size to enforce a limit on the size
a set can grow. Use this value to also set the ceiling for rhashtables.

If a user doesn't define a size it will fall back to a newly defined default of
10 (1024 elements.)

Signed-off-by: Josh Hunt <johunt@akamai.com>
---
 net/netfilter/nft_hash.c |    5 +++++
 1 file changed, 5 insertions(+)

diff --git a/net/netfilter/nft_hash.c b/net/netfilter/nft_hash.c
index 61e6c40..08ec179 100644
--- a/net/netfilter/nft_hash.c
+++ b/net/netfilter/nft_hash.c
@@ -23,6 +23,9 @@
 /* We target a hash table size of 4, element hint is 75% of final size */
 #define NFT_HASH_ELEMENT_HINT 3
 
+/* Default max number of elements if user doesn't specify a size */
+#define NFT_HASH_MAX_ELEMENTS 10
+
 struct nft_hash_elem {
 	struct rhash_head		node;
 	struct nft_data			key;
@@ -194,6 +197,8 @@ static int nft_hash_init(const struct nft_set *set,
 		.hashfn = jhash,
 		.grow_decision = rht_grow_above_75,
 		.shrink_decision = rht_shrink_below_30,
+		.max_shift = desc->size ?
+			roundup_pow_of_two(desc->size) : NFT_HASH_MAX_ELEMENTS,
 	};
 
 	return rhashtable_init(priv, &params);
-- 
1.7.9.5

^ permalink raw reply related

* [PATCH 0/3] nft hash set expansion fixes
From: Josh Hunt @ 2015-02-10  0:48 UTC (permalink / raw)
  To: Pablo Neira Ayuso, Patrick McHardy, Thomas Graf
  Cc: netfilter-devel, netdev, Daniel Borkmann, Josh Hunt

This patchset resolves some issues I've come across while investigating nft hash
sets.

The first patch requires users of rhashtable to define a max_shift as suggested
by Daniel Borkmann and Thomas Graf. One side-effect of not setting max_shift is
that tables are not allowed to expand. I was observing this behavior with nft
hash sets prior to these changes.

The next patch implements this requirement for nft hash sets using desc->size as
the max_shift if it's provided by the user. If not, it falls back to a newly
defined default of 1024 elements. This value is somewhat arbitrary, but seems
like a reasonable default to me.

I used 'size' above for max_shift because it appears to be used as a ceiling for
the number of elements in a set in nft_add_set_elem(). It's also used in the
estimate fn. Prior to the next patch 'size' was also being used as the nelem_hint
to pass to rhashtable_init(). This seems incorrect since nelem_hint is meant to
provide a hint for how many hash buckets to initially allocate.

Instead of using 'size' for nelem_hint, the final patch introduces a new set
parameter named 'init_size'. If this approach is acceptable I can provide the
userspace patches to fully implement the new parameter.

The patchset is against net-next.

Josh Hunt (3):
  rhashtable: require max_shift definition
  nft_hash: define max_shift rhashtable param
  nft_hash: introduce init_size set parameter

 include/net/netfilter/nf_tables.h        |    4 +++-
 include/uapi/linux/netfilter/nf_tables.h |    2 ++
 lib/rhashtable.c                         |    3 ++-
 net/netfilter/nf_tables_api.c            |    4 ++++
 net/netfilter/nft_hash.c                 |    7 ++++++-
 5 files changed, 17 insertions(+), 3 deletions(-)

-- 
1.7.9.5

^ permalink raw reply

* [PATCH 3/3] nft_hash: introduce init_size set parameter
From: Josh Hunt @ 2015-02-10  0:48 UTC (permalink / raw)
  To: Pablo Neira Ayuso, Patrick McHardy, Thomas Graf
  Cc: netfilter-devel, netdev, Daniel Borkmann, Josh Hunt
In-Reply-To: <1423529311-26050-1-git-send-email-johunt@akamai.com>

Currently nft_hash is using desc->size to both set a ceiling on the number of
entries a set can have, and as the nelem_hint for rhashtable. This not correct
since nelem_hint defines the # of initial buckets for the set to use. It is not
used to enforce a maximum size on the table. That's done through max_shift.

This creates a new parameter 'init_size' to pass as the nelem_hint to rhashtable
as the # of buckets you would like to initialize the table with.

Signed-off-by: Josh Hunt <johunt@akamai.com>
---
 include/net/netfilter/nf_tables.h        |    4 +++-
 include/uapi/linux/netfilter/nf_tables.h |    2 ++
 net/netfilter/nf_tables_api.c            |    4 ++++
 net/netfilter/nft_hash.c                 |    2 +-
 4 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/include/net/netfilter/nf_tables.h b/include/net/netfilter/nf_tables.h
index 9eaaa78..2c9130d 100644
--- a/include/net/netfilter/nf_tables.h
+++ b/include/net/netfilter/nf_tables.h
@@ -153,12 +153,14 @@ struct nft_set_iter {
  *
  *	@klen: key length
  *	@dlen: data length
- *	@size: number of set elements
+ *	@size: max number of set elements
+ *	@init_size: initial set size
  */
 struct nft_set_desc {
 	unsigned int		klen;
 	unsigned int		dlen;
 	unsigned int		size;
+	unsigned int		init_size;
 };
 
 /**
diff --git a/include/uapi/linux/netfilter/nf_tables.h b/include/uapi/linux/netfilter/nf_tables.h
index 832bc46..63e53eb 100644
--- a/include/uapi/linux/netfilter/nf_tables.h
+++ b/include/uapi/linux/netfilter/nf_tables.h
@@ -230,10 +230,12 @@ enum nft_set_policies {
  * enum nft_set_desc_attributes - set element description
  *
  * @NFTA_SET_DESC_SIZE: number of elements in set (NLA_U32)
+ * @NFTA_SET_DESC_INIT_SIZE: initial set size (NLA_U32)
  */
 enum nft_set_desc_attributes {
 	NFTA_SET_DESC_UNSPEC,
 	NFTA_SET_DESC_SIZE,
+	NFTA_SET_DESC_INIT_SIZE,
 	__NFTA_SET_DESC_MAX
 };
 #define NFTA_SET_DESC_MAX	(__NFTA_SET_DESC_MAX - 1)
diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c
index 199fd0f..275f41b 100644
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
@@ -2211,6 +2211,7 @@ static const struct nla_policy nft_set_policy[NFTA_SET_MAX + 1] = {
 
 static const struct nla_policy nft_set_desc_policy[NFTA_SET_DESC_MAX + 1] = {
 	[NFTA_SET_DESC_SIZE]		= { .type = NLA_U32 },
+	[NFTA_SET_DESC_INIT_SIZE]	= { .type = NLA_U32 },
 };
 
 static int nft_ctx_init_from_setattr(struct nft_ctx *ctx,
@@ -2552,6 +2553,9 @@ static int nf_tables_set_desc_parse(const struct nft_ctx *ctx,
 	if (da[NFTA_SET_DESC_SIZE] != NULL)
 		desc->size = ntohl(nla_get_be32(da[NFTA_SET_DESC_SIZE]));
 
+	if (da[NFTA_SET_DESC_INIT_SIZE] != NULL)
+		desc->init_size = ntohl(nla_get_be32(da[NFTA_SET_DESC_INIT_SIZE]));
+
 	return 0;
 }
 
diff --git a/net/netfilter/nft_hash.c b/net/netfilter/nft_hash.c
index 08ec179..e03d1c6 100644
--- a/net/netfilter/nft_hash.c
+++ b/net/netfilter/nft_hash.c
@@ -190,7 +190,7 @@ static int nft_hash_init(const struct nft_set *set,
 {
 	struct rhashtable *priv = nft_set_priv(set);
 	struct rhashtable_params params = {
-		.nelem_hint = desc->size ? : NFT_HASH_ELEMENT_HINT,
+		.nelem_hint = desc->init_size ? : NFT_HASH_ELEMENT_HINT,
 		.head_offset = offsetof(struct nft_hash_elem, node),
 		.key_offset = offsetof(struct nft_hash_elem, key),
 		.key_len = set->klen,
-- 
1.7.9.5

^ permalink raw reply related

* [PATCH 1/3] rhashtable: require max_shift definition
From: Josh Hunt @ 2015-02-10  0:48 UTC (permalink / raw)
  To: Pablo Neira Ayuso, Patrick McHardy, Thomas Graf
  Cc: netfilter-devel, netdev, Daniel Borkmann, Josh Hunt
In-Reply-To: <1423529311-26050-1-git-send-email-johunt@akamai.com>

Force rhashtable users to define a max_shift value. This places a ceiling
on how large the table can grow.

Signed-off-by: Josh Hunt <johunt@akamai.com>
---
 lib/rhashtable.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lib/rhashtable.c b/lib/rhashtable.c
index 9cc4c4a..f1bdfb0 100644
--- a/lib/rhashtable.c
+++ b/lib/rhashtable.c
@@ -1077,7 +1077,8 @@ int rhashtable_init(struct rhashtable *ht, struct rhashtable_params *params)
 	size = HASH_DEFAULT_SIZE;
 
 	if ((params->key_len && !params->hashfn) ||
-	    (!params->key_len && !params->obj_hashfn))
+	    (!params->key_len && !params->obj_hashfn) ||
+	    (!params->max_shift))
 		return -EINVAL;
 
 	if (params->nulls_base && params->nulls_base < (1U << RHT_BASE_SHIFT))
-- 
1.7.9.5

^ permalink raw reply related

* Re: [RFC PATCH 00/29] net: VRF support
From: Thomas Graf @ 2015-02-10  0:53 UTC (permalink / raw)
  To: David Ahern; +Cc: netdev, ebiederm
In-Reply-To: <1423100070-31848-1-git-send-email-dsahern@gmail.com>

On 02/04/15 at 06:34pm, David Ahern wrote:
> Namespaces provide excellent separation of the networking stack from the
> netdevices and up. The intent of VRFs is to provide an additional,
> logical separation at the L3 layer within a namespace.

What you ask for seems to be L3 micro segmentation inside netns. I
would argue that we already support this through multiple routing
tables. I would prefer improving the existing architecture to cover
your use cases: Increase the number of supported tables, extend
routing rules as needed, ...

> The VRF id of tasks defaults to 1 and is inherited parent to child. It can
> be read via the file '/proc/<pid>/vrf' and can be changed anytime by writing
> to this file (if preferred this can be made a prctl to change the VRF id).
> This allows services to be launched in a VRF context using ip, similar to
> what is done for network namespaces.
>     e.g., ip vrf exec 99 /usr/sbin/sshd

I think such as classification should occur through cgroups instead
of touching PIDs directly.

> Network devices belong to a single VRF context which defaults to VRF 1.
> They can be assigned to another VRF using IFLA_VRF attribute in link
> messages. Similarly the VRF assignment is returned in the IFLA_VRF
> attribute. The ip command has been modified to display the VRF id of a
> device. L2 applications like lldp are not VRF aware and still work through
> through all network devices within the namespace.

I believe that binding net_devices to VRFs is misleading and the
concept by itself is non-scalable. You do not want to create 10k
net_devices for your overlay of choice just to tie them to a
particular VRF. You want to store the VRF identifier as metadata and
have a stateless classifier included it in the VRF decision. See the
recent VXLAN-GBP work.

You could either map whatever selects the VRF to the mark or support it
natively in the routing rules classifier.

An obvious alternative is OVS. What you describe can be implemented in
a scalable matter using OVS and mark. I understand that OVS is not for
everybody but it gets a fundamental principle right: Scalability
demands for programmability.

I don’t think we should be adding a new single purpose metadata field
to arbitrary structures for every new use case that comes up. We
should work on programmability which increases flexibility and allows
decoupling application interest from networking details.

> On RX skbs get their VRF context from the netdevice the packet is received
> on. For TX the VRF context for an skb is taken from the socket. The
> intention is for L3/raw sockets to be able to set the VRF context for a
> packet TX using cmsg (not coded in this patch set).

Specyfing L3 context in cmsg seems very broken to me. We do not want
to bind applications any closer to underlying networking infrastructure.
In fact, we should do the opposite and decouple this completely.

> The 'any' context applies to listen sockets only; connected sockets are in
> a VRF context. Child sockets accepted by the daemon acquire the VRF context
> of the network device the connection originated on.

Linux considers an address local regardless of the interface the packet
was received on.  So you would accept the packet on any interface and
then bind it to the VRF of that interface even though the route for it
might be on a different interface.

This really belongs into routing rules from my perspective which takes
mark and the cgroup context into account.

^ permalink raw reply

* Re: [PATCH 1/3] rhashtable: require max_shift definition
From: Thomas Graf @ 2015-02-10  0:58 UTC (permalink / raw)
  To: Josh Hunt
  Cc: Pablo Neira Ayuso, Patrick McHardy, netfilter-devel, netdev,
	Daniel Borkmann
In-Reply-To: <1423529311-26050-2-git-send-email-johunt@akamai.com>

On 02/09/15 at 07:48pm, Josh Hunt wrote:
>  	if ((params->key_len && !params->hashfn) ||
> -	    (!params->key_len && !params->obj_hashfn))
> +	    (!params->key_len && !params->obj_hashfn) ||
> +	    (!params->max_shift))
>  		return -EINVAL;

You can drop the parenthesis around the new max_shift check.

Other than that:

Acked-by: Thomas Graf <tgraf@suug.ch>

^ permalink raw reply

* Re: [PATCH RFC v5 net-next 1/6] virtio_ring: fix virtqueue_enable_cb() when only 1 buffers were pending
From: Rusty Russell @ 2015-02-10  1:03 UTC (permalink / raw)
  To: Jason Wang, netdev, linux-kernel, virtualization, mst; +Cc: pagupta
In-Reply-To: <1423471165-34243-2-git-send-email-jasowang@redhat.com>

Jason Wang <jasowang@redhat.com> writes:
> We currently does:
>
> bufs = (avail->idx - last_used_idx) * 3 / 4;
>
> This is ok now since we only try to enable the delayed callbacks when
> the queue is about to be full. This may not work well when there is
> only one pending buffer in the virtqueue (this may be the case after
> tx interrupt was enabled). Since virtqueue_enable_cb() will return
> false which may cause unnecessary triggering of napis. This patch
> correct this by only calculate the four thirds when bufs is not one.

I mildly prefer to avoid the branch, by changing the calculation like
so:

        /* Set bufs >= 1, even if there's only one pending buffer */
        bufs = (bufs + 1) * 3 / 4;

But it's not clear to me how much this happens.  I'm happy with the
patch though, as currently virtqueue_enable_cb_delayed() is the same
as virtqueue_enable_cb() if there's only been one buffer added.

Cheers,
Rusty.

> Signed-off-by: Jason Wang <jasowang@redhat.com>
> ---
>  drivers/virtio/virtio_ring.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
> index 00ec6b3..545fed5 100644
> --- a/drivers/virtio/virtio_ring.c
> +++ b/drivers/virtio/virtio_ring.c
> @@ -636,7 +636,10 @@ bool virtqueue_enable_cb_delayed(struct virtqueue *_vq)
>  	 * entry. Always do both to keep code simple. */
>  	vq->vring.avail->flags &= cpu_to_virtio16(_vq->vdev, ~VRING_AVAIL_F_NO_INTERRUPT);
>  	/* TODO: tune this threshold */
> -	bufs = (u16)(virtio16_to_cpu(_vq->vdev, vq->vring.avail->idx) - vq->last_used_idx) * 3 / 4;
> +	bufs = (u16)(virtio16_to_cpu(_vq->vdev, vq->vring.avail->idx) -
> +		                     vq->last_used_idx);
> +	if (bufs != 1)
> +		bufs = bufs * 3 / 4;
>  	vring_used_event(&vq->vring) = cpu_to_virtio16(_vq->vdev, vq->last_used_idx + bufs);
>  	virtio_mb(vq->weak_barriers);
>  	if (unlikely((u16)(virtio16_to_cpu(_vq->vdev, vq->vring.used->idx) - vq->last_used_idx) > bufs)) {
> -- 
> 1.8.3.1
>
> _______________________________________________
> Virtualization mailing list
> Virtualization@lists.linux-foundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/virtualization

^ permalink raw reply

* Re: [PATCH RFC v5 net-next 2/6] virtio_ring: try to disable event index callbacks in virtqueue_disable_cb()
From: Rusty Russell @ 2015-02-10  1:07 UTC (permalink / raw)
  To: Jason Wang, netdev, linux-kernel, virtualization, mst; +Cc: pagupta
In-Reply-To: <1423471165-34243-3-git-send-email-jasowang@redhat.com>

Jason Wang <jasowang@redhat.com> writes:
> Currently, we do nothing to prevent the callbacks in
> virtqueue_disable_cb() when event index is used. This may cause
> spurious interrupts which may damage the performance. This patch tries
> to publish avail event as the used even to prevent the callbacks.
>
> Signed-off-by: Jason Wang <jasowang@redhat.com>

Acked-by: Rusty Russell <rusty@rustcorp.com.au>

> ---
>  drivers/virtio/virtio_ring.c | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
> index 545fed5..e9ffbfb 100644
> --- a/drivers/virtio/virtio_ring.c
> +++ b/drivers/virtio/virtio_ring.c
> @@ -539,6 +539,8 @@ void virtqueue_disable_cb(struct virtqueue *_vq)
>  	struct vring_virtqueue *vq = to_vvq(_vq);
>  
>  	vq->vring.avail->flags |= cpu_to_virtio16(_vq->vdev, VRING_AVAIL_F_NO_INTERRUPT);
> +	vring_used_event(&vq->vring) = cpu_to_virtio16(_vq->vdev,
> +						       vq->vring.avail->idx);
>  }
>  EXPORT_SYMBOL_GPL(virtqueue_disable_cb);
>  
> -- 
> 1.8.3.1
>
> _______________________________________________
> Virtualization mailing list
> Virtualization@lists.linux-foundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/virtualization

^ permalink raw reply

* Re: [PATCH RFC v5 net-next 4/6] virtio-net: add basic interrupt coalescing support
From: Rusty Russell @ 2015-02-10  1:32 UTC (permalink / raw)
  To: Jason Wang, netdev, linux-kernel, virtualization, mst; +Cc: pagupta
In-Reply-To: <1423471165-34243-5-git-send-email-jasowang@redhat.com>

Jason Wang <jasowang@redhat.com> writes:
> This patch enables the interrupt coalescing setting through ethtool.

The problem is that there's nothing network specific about interrupt
coalescing.  I can see other devices wanting exactly the same thing,
which means we'd deprecate this in the next virtio standard.

I think the right answer is to extend like we did with
vring_used_event(), eg:

1) Add a new feature VIRTIO_F_RING_COALESCE.
2) Add another a 32-bit field after vring_used_event(), eg:
        #define vring_used_delay(vr) (*(u32 *)((vr)->avail->ring[(vr)->num + 2]))

This loses the ability to coalesce by number of frames, but we can still
do number of sg entries, as we do now with used_event, and we could
change virtqueue_enable_cb_delayed() to take a precise number if we
wanted.

My feeling is that this should be a v1.0-only feature though
(eg. feature bit 33).

Cheers,
Rusty.

> Cc: Rusty Russell <rusty@rustcorp.com.au>
> Cc: Michael S. Tsirkin <mst@redhat.com>
> Signed-off-by: Jason Wang <jasowang@redhat.com>
> ---
>  drivers/net/virtio_net.c        | 67 +++++++++++++++++++++++++++++++++++++++++
>  include/uapi/linux/virtio_net.h | 12 ++++++++
>  2 files changed, 79 insertions(+)
>
> diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
> index cc5f5de..2b958fb 100644
> --- a/drivers/net/virtio_net.c
> +++ b/drivers/net/virtio_net.c
> @@ -145,6 +145,11 @@ struct virtnet_info {
>  
>  	/* Budget for polling tx completion */
>  	u32 tx_work_limit;
> +
> +	__u32 rx_coalesce_usecs;
> +	__u32 rx_max_coalesced_frames;
> +	__u32 tx_coalesce_usecs;
> +	__u32 tx_max_coalesced_frames;
>  };
>  
>  struct padded_vnet_hdr {
> @@ -1404,12 +1409,73 @@ static void virtnet_get_channels(struct net_device *dev,
>  	channels->other_count = 0;
>  }
>  
> +static int virtnet_set_coalesce(struct net_device *dev,
> +				struct ethtool_coalesce *ec)
> +{
> +	struct virtnet_info *vi = netdev_priv(dev);
> +	struct scatterlist sg;
> +	struct virtio_net_ctrl_coalesce c;
> +
> +	if (!vi->has_cvq ||
> +	    !virtio_has_feature(vi->vdev, VIRTIO_NET_F_CTRL_COALESCE))
> +		return -EOPNOTSUPP;
> +	if (vi->rx_coalesce_usecs != ec->rx_coalesce_usecs ||
> +	    vi->rx_max_coalesced_frames != ec->rx_max_coalesced_frames) {
> +		c.coalesce_usecs = ec->rx_coalesce_usecs;
> +		c.max_coalesced_frames = ec->rx_max_coalesced_frames;
> +		sg_init_one(&sg, &c, sizeof(c));
> +		if (!virtnet_send_command(vi, VIRTIO_NET_CTRL_COALESCE,
> +					  VIRTIO_NET_CTRL_COALESCE_RX_SET,
> +					  &sg)) {
> +			dev_warn(&dev->dev, "Fail to set rx coalescing\n");
> +			return -EINVAL;
> +		}
> +		vi->rx_coalesce_usecs = ec->rx_coalesce_usecs;
> +		vi->rx_max_coalesced_frames = ec->rx_max_coalesced_frames;
> +	}
> +
> +	if (vi->tx_coalesce_usecs != ec->tx_coalesce_usecs ||
> +	    vi->tx_max_coalesced_frames != ec->tx_max_coalesced_frames) {
> +		c.coalesce_usecs = ec->tx_coalesce_usecs;
> +		c.max_coalesced_frames = ec->tx_max_coalesced_frames;
> +		sg_init_one(&sg, &c, sizeof(c));
> +		if (!virtnet_send_command(vi, VIRTIO_NET_CTRL_COALESCE,
> +					  VIRTIO_NET_CTRL_COALESCE_TX_SET,
> +					  &sg)) {
> +			dev_warn(&dev->dev, "Fail to set tx coalescing\n");
> +			return -EINVAL;
> +		}
> +		vi->tx_coalesce_usecs = ec->tx_coalesce_usecs;
> +		vi->tx_max_coalesced_frames = ec->tx_max_coalesced_frames;
> +	}
> +
> +	vi->tx_work_limit = ec->tx_max_coalesced_frames_irq;
> +
> +	return 0;
> +}
> +
> +static int virtnet_get_coalesce(struct net_device *dev,
> +				struct ethtool_coalesce *ec)
> +{
> +	struct virtnet_info *vi = netdev_priv(dev);
> +
> +	ec->rx_coalesce_usecs = vi->rx_coalesce_usecs;
> +	ec->rx_max_coalesced_frames = vi->rx_max_coalesced_frames;
> +	ec->tx_coalesce_usecs = vi->tx_coalesce_usecs;
> +	ec->tx_max_coalesced_frames = vi->tx_max_coalesced_frames;
> +	ec->tx_max_coalesced_frames_irq = vi->tx_work_limit;
> +
> +	return 0;
> +}
> +
>  static const struct ethtool_ops virtnet_ethtool_ops = {
>  	.get_drvinfo = virtnet_get_drvinfo,
>  	.get_link = ethtool_op_get_link,
>  	.get_ringparam = virtnet_get_ringparam,
>  	.set_channels = virtnet_set_channels,
>  	.get_channels = virtnet_get_channels,
> +	.set_coalesce = virtnet_set_coalesce,
> +	.get_coalesce = virtnet_get_coalesce,
>  };
>  
>  #define MIN_MTU 68
> @@ -2048,6 +2114,7 @@ static unsigned int features[] = {
>  	VIRTIO_NET_F_GUEST_ANNOUNCE, VIRTIO_NET_F_MQ,
>  	VIRTIO_NET_F_CTRL_MAC_ADDR,
>  	VIRTIO_F_ANY_LAYOUT,
> +	VIRTIO_NET_F_CTRL_COALESCE,
>  };
>  
>  static struct virtio_driver virtio_net_driver = {
> diff --git a/include/uapi/linux/virtio_net.h b/include/uapi/linux/virtio_net.h
> index b5f1677..332009d 100644
> --- a/include/uapi/linux/virtio_net.h
> +++ b/include/uapi/linux/virtio_net.h
> @@ -34,6 +34,7 @@
>  /* The feature bitmap for virtio net */
>  #define VIRTIO_NET_F_CSUM	0	/* Host handles pkts w/ partial csum */
>  #define VIRTIO_NET_F_GUEST_CSUM	1	/* Guest handles pkts w/ partial csum */
> +#define VIRTIO_NET_F_CTRL_COALESCE 3	/* Set coalescing */
>  #define VIRTIO_NET_F_MAC	5	/* Host has given MAC address. */
>  #define VIRTIO_NET_F_GSO	6	/* Host handles pkts w/ any GSO type */
>  #define VIRTIO_NET_F_GUEST_TSO4	7	/* Guest can handle TSOv4 in. */
> @@ -202,4 +203,15 @@ struct virtio_net_ctrl_mq {
>   #define VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MIN        1
>   #define VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MAX        0x8000
>  
> +struct virtio_net_ctrl_coalesce {
> +	__u32 coalesce_usecs;
> +	__u32 max_coalesced_frames;
> +};
> +
> +#define VIRTIO_NET_CTRL_COALESCE 6
> + #define VIRTIO_NET_CTRL_COALESCE_TX_SET 0
> + #define VIRTIO_NET_CTRL_COALESCE_TX_GET 1
> + #define VIRTIO_NET_CTRL_COALESCE_RX_SET 2
> + #define VIRTIO_NET_CTRL_COALESCE_RX_GET 3
> +
>  #endif /* _LINUX_VIRTIO_NET_H */
> -- 
> 1.8.3.1

^ permalink raw reply

* [net-next] i40e: Fix for stats init function call in Rx setup
From: Jeff Kirsher @ 2015-02-10  1:42 UTC (permalink / raw)
  To: davem; +Cc: Carolyn Wyborny, netdev, nhorman, sassmann, jogreene,
	Jeff Kirsher

From: Carolyn Wyborny <carolyn.wyborny@intel.com>

This patch fixes indentation issue and error found in argument
reported by static analysis.  Without this patch, sparse and other
static analysis errors will be found.

Reported-by: Fengguang Wu <fengguang.wu@intel.com>
Reported-by: Julia Lawall <julia.lawall@lip6.fr>
Signed-off-by: Carolyn Wyborny <carolyn.wyborny@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
 drivers/net/ethernet/intel/i40e/i40e_txrx.c   | 2 +-
 drivers/net/ethernet/intel/i40evf/i40e_txrx.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
index f4d6d90..2206d2d 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
@@ -1098,7 +1098,7 @@ int i40e_setup_rx_descriptors(struct i40e_ring *rx_ring)
 	if (!rx_ring->rx_bi)
 		goto err;
 
-		u64_stats_init(rx_ring->syncp);
+	u64_stats_init(&rx_ring->syncp);
 
 	/* Round up to nearest 4K */
 	rx_ring->size = ring_is_16byte_desc_enabled(rx_ring)
diff --git a/drivers/net/ethernet/intel/i40evf/i40e_txrx.c b/drivers/net/ethernet/intel/i40evf/i40e_txrx.c
index 459499a..2900438 100644
--- a/drivers/net/ethernet/intel/i40evf/i40e_txrx.c
+++ b/drivers/net/ethernet/intel/i40evf/i40e_txrx.c
@@ -596,7 +596,7 @@ int i40evf_setup_rx_descriptors(struct i40e_ring *rx_ring)
 	if (!rx_ring->rx_bi)
 		goto err;
 
-		u64_stats_init(rx_ring->syncp);
+	u64_stats_init(&rx_ring->syncp);
 
 	/* Round up to nearest 4K */
 	rx_ring->size = ring_is_16byte_desc_enabled(rx_ring)
-- 
1.9.3

^ permalink raw reply related

* [PATCHv2 net-next] ipv4: Namespecify TCP PMTU mechanism
From: Fan Du @ 2015-02-10  1:53 UTC (permalink / raw)
  To: jheffner; +Cc: davem, netdev, fengyuleidian0615
In-Reply-To: <1423471498-22442-1-git-send-email-fan.du@intel.com>

Packetization Layer Path MTU Discovery works separately beside
Path MTU Discovery at IP level, different net namespace has
various requirements on which one to chose, e.g., a virutalized
container instance would require TCP PMTU to probe an usable
effective mtu for underlying tunnel, while the host would
employ classical ICMP based PMTU to function.

Hence making TCP PMTU mechanism per net namespace to decouple
two functionality. Furthermore the probe base MSS should also
be configured separately for each namespace.

Signed-off-by: Fan Du <fan.du@intel.com>
---
Changelog:
v2:
  - Respin with latest net-next
  - Remove rebundant <net/sock.h> including

---
 include/net/netns/ipv4.h   |    2 ++
 include/net/tcp.h          |    2 --
 net/ipv4/sysctl_net_ipv4.c |   28 ++++++++++++++--------------
 net/ipv4/tcp_ipv4.c        |    1 +
 net/ipv4/tcp_output.c      |    8 +++-----
 net/ipv4/tcp_timer.c       |    7 +++++--
 6 files changed, 25 insertions(+), 23 deletions(-)

diff --git a/include/net/netns/ipv4.h b/include/net/netns/ipv4.h
index e0bdcb1..dbe2254 100644
--- a/include/net/netns/ipv4.h
+++ b/include/net/netns/ipv4.h
@@ -82,6 +82,8 @@ struct netns_ipv4 {
 
 	int sysctl_fwmark_reflect;
 	int sysctl_tcp_fwmark_accept;
+	int sysctl_tcp_mtu_probing;
+	int sysctl_tcp_base_mss;
 
 	struct ping_group_range ping_group_range;
 
diff --git a/include/net/tcp.h b/include/net/tcp.h
index da4196fb..8d6b983 100644
--- a/include/net/tcp.h
+++ b/include/net/tcp.h
@@ -262,8 +262,6 @@ extern int sysctl_tcp_low_latency;
 extern int sysctl_tcp_nometrics_save;
 extern int sysctl_tcp_moderate_rcvbuf;
 extern int sysctl_tcp_tso_win_divisor;
-extern int sysctl_tcp_mtu_probing;
-extern int sysctl_tcp_base_mss;
 extern int sysctl_tcp_workaround_signed_windows;
 extern int sysctl_tcp_slow_start_after_idle;
 extern int sysctl_tcp_thin_linear_timeouts;
diff --git a/net/ipv4/sysctl_net_ipv4.c b/net/ipv4/sysctl_net_ipv4.c
index 82601a6..d151539 100644
--- a/net/ipv4/sysctl_net_ipv4.c
+++ b/net/ipv4/sysctl_net_ipv4.c
@@ -604,20 +604,6 @@ static struct ctl_table ipv4_table[] = {
 		.proc_handler	= proc_tcp_congestion_control,
 	},
 	{
-		.procname	= "tcp_mtu_probing",
-		.data		= &sysctl_tcp_mtu_probing,
-		.maxlen		= sizeof(int),
-		.mode		= 0644,
-		.proc_handler	= proc_dointvec,
-	},
-	{
-		.procname	= "tcp_base_mss",
-		.data		= &sysctl_tcp_base_mss,
-		.maxlen		= sizeof(int),
-		.mode		= 0644,
-		.proc_handler	= proc_dointvec,
-	},
-	{
 		.procname	= "tcp_workaround_signed_windows",
 		.data		= &sysctl_tcp_workaround_signed_windows,
 		.maxlen		= sizeof(int),
@@ -883,6 +869,20 @@ static struct ctl_table ipv4_net_table[] = {
 		.mode		= 0644,
 		.proc_handler	= proc_dointvec,
 	},
+	{
+		.procname	= "tcp_mtu_probing",
+		.data		= &init_net.ipv4.sysctl_tcp_mtu_probing,
+		.maxlen		= sizeof(int),
+		.mode		= 0644,
+		.proc_handler	= proc_dointvec,
+	},
+	{
+		.procname	= "tcp_base_mss",
+		.data		= &init_net.ipv4.sysctl_tcp_base_mss,
+		.maxlen		= sizeof(int),
+		.mode		= 0644,
+		.proc_handler	= proc_dointvec,
+	},
 	{ }
 };
 
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
index 67bc95f..5a2dfed 100644
--- a/net/ipv4/tcp_ipv4.c
+++ b/net/ipv4/tcp_ipv4.c
@@ -2459,6 +2459,7 @@ static int __net_init tcp_sk_init(struct net *net)
 		*per_cpu_ptr(net->ipv4.tcp_sk, cpu) = sk;
 	}
 	net->ipv4.sysctl_tcp_ecn = 2;
+	net->ipv4.sysctl_tcp_base_mss = TCP_BASE_MSS;
 	return 0;
 
 fail:
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
index 4fcc9a7..a2a796c 100644
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -59,9 +59,6 @@ int sysctl_tcp_limit_output_bytes __read_mostly = 131072;
  */
 int sysctl_tcp_tso_win_divisor __read_mostly = 3;
 
-int sysctl_tcp_mtu_probing __read_mostly = 0;
-int sysctl_tcp_base_mss __read_mostly = TCP_BASE_MSS;
-
 /* By default, RFC2861 behavior.  */
 int sysctl_tcp_slow_start_after_idle __read_mostly = 1;
 
@@ -1350,11 +1347,12 @@ void tcp_mtup_init(struct sock *sk)
 {
 	struct tcp_sock *tp = tcp_sk(sk);
 	struct inet_connection_sock *icsk = inet_csk(sk);
+	struct net *net = sock_net(sk);
 
-	icsk->icsk_mtup.enabled = sysctl_tcp_mtu_probing > 1;
+	icsk->icsk_mtup.enabled = net->ipv4.sysctl_tcp_mtu_probing > 1;
 	icsk->icsk_mtup.search_high = tp->rx_opt.mss_clamp + sizeof(struct tcphdr) +
 			       icsk->icsk_af_ops->net_header_len;
-	icsk->icsk_mtup.search_low = tcp_mss_to_mtu(sk, sysctl_tcp_base_mss);
+	icsk->icsk_mtup.search_low = tcp_mss_to_mtu(sk, net->ipv4.sysctl_tcp_base_mss);
 	icsk->icsk_mtup.probe_size = 0;
 }
 EXPORT_SYMBOL(tcp_mtup_init);
diff --git a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c
index 1829c7f..0732b78 100644
--- a/net/ipv4/tcp_timer.c
+++ b/net/ipv4/tcp_timer.c
@@ -101,17 +101,20 @@ static int tcp_orphan_retries(struct sock *sk, int alive)
 
 static void tcp_mtu_probing(struct inet_connection_sock *icsk, struct sock *sk)
 {
+	struct net *net = sock_net(sk);
+
 	/* Black hole detection */
-	if (sysctl_tcp_mtu_probing) {
+	if (net->ipv4.sysctl_tcp_mtu_probing) {
 		if (!icsk->icsk_mtup.enabled) {
 			icsk->icsk_mtup.enabled = 1;
 			tcp_sync_mss(sk, icsk->icsk_pmtu_cookie);
 		} else {
+			struct net *net = sock_net(sk);
 			struct tcp_sock *tp = tcp_sk(sk);
 			int mss;
 
 			mss = tcp_mtu_to_mss(sk, icsk->icsk_mtup.search_low) >> 1;
-			mss = min(sysctl_tcp_base_mss, mss);
+			mss = min(net->ipv4.sysctl_tcp_base_mss, mss);
 			mss = max(mss, 68 - tp->tcp_header_len);
 			icsk->icsk_mtup.search_low = tcp_mss_to_mtu(sk, mss);
 			tcp_sync_mss(sk, icsk->icsk_pmtu_cookie);
-- 
1.7.9.5

^ permalink raw reply related

* Re: [PATCH] prevent the read ahead of /proc/slabinfo in ss
From: Bryton Lee @ 2015-02-10  2:01 UTC (permalink / raw)
  To: David Miller; +Cc: stephen, netdev
In-Reply-To: <20150209.111618.1959932896181412008.davem@davemloft.net>

On Tue, Feb 10, 2015 at 3:16 AM, David Miller <davem@davemloft.net> wrote:
> From: Bryton Lee <brytonlee01@gmail.com>
> Date: Mon,  9 Feb 2015 19:37:10 +0800
>
>> @@ -617,6 +617,7 @@ struct slabstat
>>  };
>>
>>  struct slabstat slabstat;
>> +int slabstat_valid = 0;
>>
>>  static const char *slabstat_ids[] =
>>  {
>
> Nothing sets this to a non-zero value.  If nothing is going to set it to
> a non-zero value, the code it guards should simple be removed instead.
>
when ss runs witch -s paramater slabstat will be used, and if kernel
not support NETLINK ss -t will use slabstat too.  so it's not nothing
sets this to a non-zero value.

> Otherwise, nothing uses this variable outside of this file, and if
> that's intentional it should be static.

Yes, these should be changed to static,  I will submit these change
soon.  thanks!



-- 
Best Regards

Bryton.Lee

^ permalink raw reply

* Re: [PATCH 1/3] ixgbe, ixgbevf: Add new mbox API to enable MC promiscuous mode
From: Hiroshi Shimamoto @ 2015-02-10  2:28 UTC (permalink / raw)
  To: Jeff Kirsher
  Cc: e1000-devel@lists.sourceforge.net, Choi, Sy Jong,
	linux-kernel@vger.kernel.org, David Laight, Hayato Momma,
	netdev@vger.kernel.org, Bjørn Mork
In-Reply-To: <1423470046.27854.7.camel@jtkirshe-mobl>

> > > > Can you please fix up your patches based on my tree:
> > > > git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/queue.git
> > >
> > > Yes. I haven't noticed your tree.
> > > Will resend patches against it.
> > >
> >
> > I encountered an issue with your tree, the commit id is below.
> >
> > $ git log | head
> > commit e6f1649780f8f5a87299bf6af04453f93d1e3d5e
> > Author: Rasmus Villemoes <linux@rasmusvillemoes.dk>
> > Date:   Fri Jan 23 20:43:14 2015 -0800
> >
> >     ethernet: fm10k: Actually drop 4 bits
> >
> >     The comment explains the intention, but vid has type u16. Before the
> >     inner shift, it is promoted to int, which has plenty of space for all
> >     vid's bits, so nothing is dropped. Use a simple mask instead.
> >
> >
> > I use the kernel from your tree in both host and guest.
> >
> > Assign an IPv6 for VF in guest.
> > # ip -6 addr add 2001:db8::18:1/64 dev ens0
> >
> > Send ping packet from other server to the VM.
> > # ping6  2001:db8::18:1 -I eth0
> >
> > The following message was shown.
> > ixgbevf 0000:00:08.0: partial checksum but l4 proto=3a!
> >
> > If I did the same operation in the host, I saw the same error message in host too.
> > ixgbe 0000:2d:00.0: partial checksum but l4 proto=3a!
> >
> > Do you have any idea about that?
> 
> Ah, sorry about that, try this tree again:
> git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/queue.git
> 
> That patch was dropped for favor of a patch that Matthew Vick put
> together (and recently got pushed upstream).  So my queue no longer has
> that patch in the queue, since it got dropped.

I still see the same error, the head id is the below

$ git log | head
commit a072afb0b45904022b76deef3b770ee9a93cb13a
Author: Nicholas Krause <xerofoify@gmail.com>
Date:   Mon Feb 9 00:27:00 2015 -0800

    igb: Remove outdated fix me comment in the function,gb_acquire_swfw_sync_i210


thanks,
Hiroshi
------------------------------------------------------------------------------
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/
_______________________________________________
E1000-devel mailing list
E1000-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel&#174; Ethernet, visit http://communities.intel.com/community/wired

^ permalink raw reply

* Re: [ANNOUNCE] ipvsadm release v1.28
From: overcastsky.zhao @ 2015-02-10  2:42 UTC (permalink / raw)
  To: Jesper Dangaard Brouer, lvs-devel, lvs-users
  Cc: Wensong Zhang, logan, netdev, brouer, linux-kernel, formorer,
	dborkman, Julian Anastasov, Simon Horman, Ryan O'Hara,
	support, Alex Gartrell, mt
In-Reply-To: <20150209185502.693488a1@redhat.com>







Thank you for your help.I will download and test.Welcome to Nanjing,China. I will your guide. 


overcastsky.zhao@gmail.com
 From: Jesper Dangaard BrouerDate: 2015-02-09 13:55To: lvs-devel; lvs-usersCC: brouer; netdev; linux-kernel; Ryan O'Hara; Julian Anastasov; overcastsky.zhao; formorer; mt; logan; support; Daniel Borkmann; Wensong Zhang; Simon Horman; Alex GartrellSubject: [ANNOUNCE] ipvsadm release v1.28 
We are happy to announce the release of ipvsadm v1.28.
 
 ipvsadm is a utility to administer the kernels IPVS/LVS load-balancer service
 
It has been quite a while since the previous release, v1.27. A number of
fixes and improvements have been made; most noticeably in the area of IPv6.
 
One big addition is the support for heterogeneous pools (v4 and v6
mixed pools in 3.18), by Alex Gartrell (facebook).
 
Feature wise the SCTP protocol has been added which is available via the
cmdline parameter "--sctp-service". The kernel has supported SCTP since
kernel 2.6.34 but up until now ipvsadm users have been restricted to using
fwmark-based virtual services for SCTP.
 
This release is based on the kernel.org git tree:
  https://git.kernel.org/cgit/utils/kernel/ipvsadm/ipvsadm.git/
 
You can download the tarballs from:
 https://kernel.org/pub/linux/utils/kernel/ipvsadm/
 
Git tree:
 git://git.kernel.org/pub/scm/utils/kernel/ipvsadm/ipvsadm.git
 
Shortlog:
 Alex Gartrell (2):
      ipvsadm: specify real server address family to netlink socket
      ipvsadm: do not truncate ipv6 members of v4 services
 
 Daniel Borkmann (2):
      ipvsadm: fix compile warning in print_largenum
      ipvsadm: fix compile warning in modprobe_ipvs
 
 Hibari Michiro (1):
      ipvsadm: enable displaying of IPv6 hostnames in listing
 
 Jesper Dangaard Brouer (1):
      Release: Version 1.28
 
 Julian Anastasov (3):
      ipvsadm: restrict different address family
      ipvsadm: allow different address family in connection listing
      ipvsadm: add SCTP support
 
 Ryan O'Hara (2):
      libipvs: Initialize ipvs_service_t variable
      ipvsadm: Fix list daemon to show backup daemon
 
 
-- 
Best regards,
  Jesper Dangaard Brouer
  MSc.CS, Sr. Network Kernel Developer at Red Hat
  Author of http://www.iptv-analyzer.org
  LinkedIn: http://www.linkedin.com/in/brouer

^ permalink raw reply

* Re: [net-next] i40e: Fix for stats init function call in Rx setup
From: David Miller @ 2015-02-10  2:45 UTC (permalink / raw)
  To: jeffrey.t.kirsher; +Cc: carolyn.wyborny, netdev, nhorman, sassmann, jogreene
In-Reply-To: <1423532551-13843-1-git-send-email-jeffrey.t.kirsher@intel.com>

From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Mon,  9 Feb 2015 17:42:31 -0800

> From: Carolyn Wyborny <carolyn.wyborny@intel.com>
> 
> This patch fixes indentation issue and error found in argument
> reported by static analysis.  Without this patch, sparse and other
> static analysis errors will be found.
> 
> Reported-by: Fengguang Wu <fengguang.wu@intel.com>
> Reported-by: Julia Lawall <julia.lawall@lip6.fr>
> Signed-off-by: Carolyn Wyborny <carolyn.wyborny@intel.com>
> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>

Applied.

^ permalink raw reply

* Re: [PATCHv2 net-next] ipv4: Namespecify TCP PMTU mechanism
From: David Miller @ 2015-02-10  2:45 UTC (permalink / raw)
  To: fan.du; +Cc: jheffner, netdev, fengyuleidian0615
In-Reply-To: <1423533196-22166-1-git-send-email-fan.du@intel.com>

From: Fan Du <fan.du@intel.com>
Date: Tue, 10 Feb 2015 09:53:16 +0800

> Packetization Layer Path MTU Discovery works separately beside
> Path MTU Discovery at IP level, different net namespace has
> various requirements on which one to chose, e.g., a virutalized
> container instance would require TCP PMTU to probe an usable
> effective mtu for underlying tunnel, while the host would
> employ classical ICMP based PMTU to function.
> 
> Hence making TCP PMTU mechanism per net namespace to decouple
> two functionality. Furthermore the probe base MSS should also
> be configured separately for each namespace.
> 
> Signed-off-by: Fan Du <fan.du@intel.com>

Applied.

^ permalink raw reply

* [PATCH] prevent the read ahead of /proc/slabinfo in ss take 2
From: Bryton Lee @ 2015-02-10  2:46 UTC (permalink / raw)
  To: stephen, netdev, davem; +Cc: eric.dumazet, brytonlee01

ss reads ahead of /proc/slabinfo whatever slabstat will be used or not in future.
this will cause huge system delay when the kernel hires SLAB allocator(SLUB allocator is ok). when program reads
/proc/slabinfo, it will call s_show() in SLAB allocator level, and s_show() calls spin_lock_irq(&l3->list_lock)
then iterate on whole three lists. if one slab has about 900 million objects (for example dentry),
it will cause more than 1000ms delay.

so this patch prevents the read ahead of /proc/slabinfo, ss runs with most parameters not using slabstat at all.
and this patch also change slabstat and slabstat_valid to static.

Signed-off-by: Bryton Lee <brytonlee01@gmail.com>
---
 misc/ss.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/misc/ss.c b/misc/ss.c
index 7fc0a99..5fa6259 100644
--- a/misc/ss.c
+++ b/misc/ss.c
@@ -616,7 +616,8 @@ struct slabstat
 	int skbs;
 };
 
-struct slabstat slabstat;
+static struct slabstat slabstat;
+static int slabstat_valid = 0;
 
 static const char *slabstat_ids[] =
 {
@@ -2230,6 +2231,9 @@ static int tcp_show(struct filter *f, int socktype)
 	 * it is able to give us some memory for snapshot.
 	 */
 	if (1) {
+		if (!slabstat_valid)
+			get_slabstat(&slabstat);
+
 		int guess = slabstat.socks+slabstat.tcp_syns;
 		if (f->states&(1<<SS_TIME_WAIT))
 			guess += slabstat.tcp_tws;
@@ -3196,6 +3200,9 @@ static int print_summary(void)
 	if (get_snmp_int("Tcp:", "CurrEstab", &sn.tcp_estab) < 0)
 		perror("ss: get_snmpstat");
 
+	if (!slabstat_valid)
+		get_slabstat(&slabstat);
+
 	printf("Total: %d (kernel %d)\n", s.socks, slabstat.socks);
 
 	printf("TCP:   %d (estab %d, closed %d, orphaned %d, synrecv %d, timewait %d/%d), ports %d\n",
@@ -3543,8 +3550,6 @@ int main(int argc, char *argv[])
 	argc -= optind;
 	argv += optind;
 
-	get_slabstat(&slabstat);
-
 	if (do_summary) {
 		print_summary();
 		if (do_default && argc == 0)
-- 
2.0.5

^ permalink raw reply related

* Re: [PATCH net-next 1/3] net: Rename sock_recv_ts_and_drops() to sock_cmsg_recv()
From: David Miller @ 2015-02-10  2:55 UTC (permalink / raw)
  To: eyal.birger; +Cc: edumazet, netdev
In-Reply-To: <1423505723-2281-2-git-send-email-eyal.birger@gmail.com>

From: Eyal Birger <eyal.birger@gmail.com>
Date: Mon,  9 Feb 2015 20:15:21 +0200

> -void __sock_recv_ts_and_drops(struct msghdr *msg, struct sock *sk,
> +void __sock_cmsg_recv(struct msghdr *msg, struct sock *sk,
>  			      struct sk_buff *skb);

If you change the column where the openning parenthesis of a function
declaration appears, you have to reindent the subsequent lines,
if any, so that the arguments still begin at the first column after
that openning parenthesis.

>  
> -static inline void sock_recv_ts_and_drops(struct msghdr *msg, struct sock *sk,
> +static inline void sock_cmsg_recv(struct msghdr *msg, struct sock *sk,
>  					  struct sk_buff *skb)

Likewise.

Please audit your entire patch series for this problem before resubmitting.

Also, this new feature is too late for this merge window, so there is
no rush for resubmitting this.

^ permalink raw reply

* [GIT] Networking
From: David Miller @ 2015-02-10  3:16 UTC (permalink / raw)
  To: torvalds; +Cc: akpm, netdev, linux-kernel


1) More iov_iter conversion work from Al Viro.

2) Various optimizations to the ipv4 forwarding information base
   trie lookup implementation.  From Alexander Duyck.

3) Remove sock_iocb altogether, from CHristoph Hellwig.

4) Allow congestion control algorithm selection via routing
   metrics.  From Daniel Borkmann.

5) Make ipv4 uncached route list per-cpu, from Eric Dumazet.

6) Handle rfs hash collisions more gracefully, also from Eric
   Dumazet.

7) Add xmit_more support to r8169, e1000, and e1000e drivers.
   From Florian Westphal.

8) Transparent Ethernet Bridging support for GRO, from Jesse Gross.

9) Add BPF packet actions to packet scheduler, from Jiri Pirko.

10) Add support for uniqu flow IDs to openvswitch, from Joe Stringer.

11) New NetCP ethernet driver, from Muralidharan Karicheri and
    Wingman Kwok.

12) More sanely handle out-of-window dupacks, which can result in
    serious ACK storms.  From Neal Cardwell.

13) Various rhashtable bug fixes and enhancements, from Herbert Xu,
    Patrick McHardy, and Thomas Graf.

14) Support xmit_more in be2net, from Sathya Perla.

15) Group Policy extensions for vxlan, from Thomas Graf.

16) Remove Checksum Offload support for vxlan, from Tom Herbert.

17) Like ipv4, support lockless transmit over ipv6 UDP sockets.
    From Vlad Yasevich.

Please pull, thanks a lot!

The following changes since commit 9d82f5eb3376cbae96ad36a063a9390de1694546:

  MMerge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net (2015-02-05 11:23:45 -0800)

are available in the git repository at:

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

for you to fetch changes up to b0f9ca53cbb103e9240a29a974e0b6085e58f9f7:

  ipv4: Namespecify TCP PMTU mechanism (2015-02-09 18:45:00 -0800)

----------------------------------------------------------------
Adam Lee (1):
      Bluetooth: ath3k: workaround the compatibility issue with xHCI controller

Ahmed S. Darwish (4):
      can: kvaser_usb: Update interface state before exiting on OOM
      can: kvaser_usb: Consolidate and unify state change handling
      can: kvaser_usb: Add support for the USBcan-II family
      can: kvaser_usb: Ignore spurious error events after a busoff

Akash Shende (1):
      Drivers: Isdn: sc: Fixed coding style & spelling mistakes.

Al Viro (18):
      netlink: make the check for "send from tx_ring" deterministic
      ipv4: raw_send_hdrinc(): pass msghdr
      ipv6: rawv6_send_hdrinc(): pass msghdr
      vmci: propagate msghdr all way down to __qp_memcpy_to_queue()
      rxrpc: switch rxrpc_send_data() to iov_iter primitives
      rxrpc: make the users of rxrpc_kernel_send_data() set kvec-backed msg_iter properly
      ip: stash a pointer to msghdr in struct ping_fakehdr
      ip: convert tcp_sendmsg() to iov_iter primitives
      net: switch memcpy_fromiovec()/memcpy_fromiovecend() users to copy_from_iter()
      tipc: tipc ->sendmsg() conversion
      net: bury net/core/iovec.c - nothing in there is used anymore
      crypto: switch af_alg_make_sg() to iov_iter
      net/socket.c: fold do_sock_{read,write} into callers
      net: switch sockets to ->read_iter/->write_iter
      vhost: switch vhost get_indirect() to iov_iter, kill memcpy_fromiovec()
      vhost: don't bother with copying iovec in handle_tx()
      vhost: don't bother copying iovecs in handle_rx(), kill memcpy_toiovecend()
      vhost: vhost_scsi_handle_vq() should just use copy_from_user()

Alex Gartrell (2):
      tun: Fixed unsigned/signed comparison
      tun: return proper error code from tun_do_read

Alexander Aring (24):
      nl802154: introduce cca mode enums
      ieee802154: rework cca setting
      nl802154: introduce support for cca settings
      at86rf230: add reset state cca handling
      at86rf230: remove if branch
      at86rf230: make at86rf230_async_error inline
      at86rf230: fix context pointer handling
      at86rf230: remove unnecessary assign
      at86rf230: cleanup check on trac status
      mac802154: iface: check concurrent ifaces
      ieee802154: iface: move multiple node type check
      ieee802154: handle socket functionality as module
      ieee802154: socket: change module name
      ieee802154: socket: put handling into one file
      ieee802154: socket: fix checkpatch issue
      ieee802154: rename af_ieee802154.c to socket.c
      ieee802154: handle config as menuconfig
      mac802154: fix kbuild test robot warning
      ieee802154: create 6lowpan sub-directory
      ieee802154: 6lowpan: rename internal header
      ieee802154: 6lowpan: move receive functionality
      ieee802154: 6lowpan: move transmit functionality
      ieee802154: 6lowpan: rename to core
      ieee802154: 6lowpan: fix Makefile entry

Alexander Bondar (1):
      iwlwifi: mvm: Add debugfs entry to enable scan offload notification

Alexander Duyck (26):
      fib_trie: Update usage stats to be percpu instead of global variables
      fib_trie: Make leaf and tnode more uniform
      fib_trie: Merge tnode_free and leaf_free into node_free
      fib_trie: Merge leaf into tnode
      fib_trie: Optimize fib_table_lookup to avoid wasting time on loops/variables
      fib_trie: Optimize fib_find_node
      fib_trie: Optimize fib_table_insert
      fib_trie: Update meaning of pos to represent unchecked bits
      fib_trie: Use unsigned long for anything dealing with a shift by bits
      fib_trie: Push rcu_read_lock/unlock to callers
      fib_trie: Move resize to after inflate/halve
      fib_trie: Add functions should_inflate and should_halve
      fib_trie: Push assignment of child to parent down into inflate/halve
      fib_trie: Push tnode flushing down to inflate/halve
      fib_trie: inflate/halve nodes in a more RCU friendly way
      fib_trie: Remove checks for index >= tnode_child_length from tnode_get_child
      fib_trie: Add tracking value for suffix length
      igb: Clean-up page reuse code
      fm10k: Clean-up page reuse code
      fib_trie: Use index & (~0ul << n->bits) instead of index >> n->bits
      fib_trie: Fix RCU bug and merge similar bits of inflate/halve
      fib_trie: Fall back to slen update on inflate/halve failure
      fib_trie: Add collapse() and should_collapse() to resize
      fib_trie: Use empty_children instead of counting empty nodes in stats collection
      fib_trie: Move fib_find_alias to file where it is used
      fib_trie: Various clean-ups for handling slen

Alexander Graf (1):
      igb: Indicate failure on vf reset for empty mac address

Alexey Khoroshilov (1):
      rsi: fix memory leak in rsi_load_ta_instructions()

Amitkumar Karwar (16):
      Bluetooth: btmrvl: fix race issue while stopping main thread
      Bluetooth: btmrvl: error path handling in setup handler
      Bluetooth: btmrvl: add surprise_removed flag
      bluetooth: btmrvl: increase the priority of firmware download message
      mwifiex: remove redundant flag MWIFIEX_HW_STATUS_FW_READY
      mwifiex: add wakeup timer based recovery mechanism
      mwifiex: wakeup pending wait queues
      mwifiex: do not release lock during list_for_each_entry_safe()
      mwifiex: Increase priority of firmware download message
      Bluetooth: btmrvl: use msecs_to_jiffies within macro definition
      Bluetooth: btmrvl: fix card reset and suspend race issue
      mwifiex: check driver status in connect and scan handlers
      mwifiex: correction in wakeup timer handling
      mwifiex: fix memory leak in mwifiex_send_processed_packet()
      mwifiex: fix NULL packet downloading issues
      mwifiex: disable UAPSD mode when AP starts

Andrew Clausen (1):
      rfkill: document rfkill module parameters

Andrew Lunn (1):
      net: dsa: Remove redundant phy_attach()

Andrey Yurovsky (2):
      at86rf230: fix register read for part version
      at86rf230: remove version check for AT86RF212

Andri Yngvason (1):
      can: move can_stats.bus_off++ from can_bus_off into can_change_state

Andy Fleming (1):
      net/fsl: Add mEMAC MDIO support to XGMAC MDIO

Andy Shevchenko (3):
      usbnet: re-use native hex2bin()
      cxgb3: re-use native hex2bin()
      stmmac: pci: introduce Intel Quark X1000 runtime detection

Anish Bhatt (3):
      cxgb4 : Update ipv6 address handling api
      cxgb4i : Call into recently added cxgb4 ipv6 api
      cxgb4 : Improve IEEE DCBx support, other minor open-lldp fixes

Anjali Singhai Jain (2):
      i40evf: Force Tx writeback on ITR
      i40e: Enable Loopback for the FCOE vsi as well

Antonio Quartulli (7):
      batman-adv: avoid useless return in void functions
      batman-adv: checkpatch - else is not generally useful after a break or return
      batman-adv: checkpatch - No space is necessary after a cast
      batman-adv: checkpatch - Please use a blank line after declarations
      batman-adv: checkpatch - Please don't use multiple blank lines
      batman-adv: checkpatch - remove unnecessary parentheses
      batman-adv: fix misspelled words

Arend van Spriel (15):
      brcmfmac: remove unused/duplicate defines in chip.c
      brcmfmac: follow user-space regulatory domain selection
      brcmfmac: enable 802.11d support in firmware
      brcmfmac: Add support for bcm43340/1 wireless chipsets
      brcmfmac: get rid of duplicate SDIO device identifiers
      ath: ath9k: use debugfs_create_devm_seqfile() helper for seq_file entries
      brcmfmac: pass DEAUTH/DISASSOC reason code to user-space
      brcmfmac: wait for driver to go idle during suspend
      brcmfmac: do not load firmware when device is already running
      brcmutil: use define for boardrev string function
      brcmfmac: determine chip info when not provided by bus layer
      brcmfmac: always obtain device revision info upon intialization
      brcmfmac: show firmware release info in ethtool driver info
      brcmfmac: store revinfo retrieval result
      brcmfmac: fix nvram processing

Arik Nemtsov (10):
      cfg80211: allow usermode to query wiphy specific regdom
      cfg80211: return private regdom for self-managed devices
      cfg80211: avoid intersection when applying self-managed reg
      nl80211: increase the max number of rules in regdomain
      mac80211: skip disabled channels in VHT check
      mac80211: add TDLS supported channels correctly
      cfg80211: introduce sync regdom set API for self-managed
      cfg80211: avoid reg-hints in self-managed only systems
      iwlwifi: mvm: improve TDLS ch-sw state machine
      iwlwifi: mvm: ignore stale TDLS ch-switch responses

Arnd Bergmann (7):
      rocker: fix harmless warning on 32-bit machines
      mlx5: avoid build warnings on 32-bit
      infiniband: mlx5: avoid a compile-time warning
      mISDN: avoid arch specific __builtin_return_address call
      act_connmark: fix dependencies better
      net: hip04: add missing MODULE_LICENSE
      net/tulip: don't warn about unknown ARM architecture

Asaf Vertz (1):
      e1000: fix time comparison

Avinash Patil (23):
      mwifiex: module parameter for deep sleep configuration
      mwifiex: enable -D__CHECK_ENDIAN__ for sparse by default
      mwifiex: get supported BA stream info from FW
      mwifiex: do not emit messages while holding spinlock
      mwifiex: selectively choose ext_scan support
      mwifiex: remove redundant nick_name variable
      mwifiex: set wiphy params only once
      mwifiex: do not declare wdev as pointer
      mwifiex: store permanant mac address in adapter structure
      mwifiex: add init parameter to init command routine
      mwifiex: manage virtual interface limits efficiently
      mwifiex: handle PS events on AP interface as well
      mwifiex: support conversion to any virtual interface type
      mwifiex: do not send regulatory update while starting AP
      mwifiex: store AP configuration in private structure
      mwifiex: update IEs after AP has started
      mwifiex: refactor start_ap handler
      mwifiex: separate function for parsing head and tail IEs
      mwifiex: add cfg80211 start_radar_detection handler
      mwifiex: support for channel report for radar detection
      mwifiex: handle radar detect event from FW
      mwifiex: channel switch support for mwifiex
      mwifiex: 11h handling for AP interface

Aya Mahfouz (1):
      s390/ctcm, netiucv: migrate variables to handle y2038 problem

Bas Peters (3):
      drivers: isdn: isdnloop: isdnloop.c: remove assignment of variables in if conditions, in accordance with the CodingStyle.
      drivers: isdn: isdnloop: isdnloop.c: Fix brace positions according to CodingStyle specifications.
      drivers: isdn: isdnloop: isdnloop.c: Remove parenthesis around return values, as specified in CodingStyle.

Ben Hutchings (2):
      mii: Handle link state changes for forced modes in mii_check_media()
      net: phy: Invalidate LP advertising flags when restarting or disabling AN

Beniamino Galvani (1):
      net: stmmac: add BQL support

Bill Hong (1):
      l2tp : multicast notification to the registered listeners

Bob Copeland (9):
      Revert "mac80211: keep sending peer candidate events while in listen state"
      wcn36xx: initialize device defaults on start
      wcn36xx: use !! when assigning int as a boolean
      wcn36xx: let device generate qos seq numbers
      wcn36xx: don't process 'valid' descriptors
      wcn36xx: initialize skb_lock
      wcn36xx: initialize dxe lock
      wcn36xx: move set_tx_pdu inside set_tx_data/mgmt
      wcn36xx: initiate TX BA sessions

Carolyn Wyborny (4):
      i40e: fix proc/int descriptions
      i40e: Add define for interrupt name string len
      i40e/i40evf: Add call to u64_stats_init to init
      i40e: Fix for stats init function call in Rx setup

Catherine Sullivan (2):
      i40e: Don't exit link event early if link speed has changed
      i40e/i40evf: Bump i40e/i40evf versions

Chaya Rachel Ivgi (1):
      mac80211: Fix ignored HT override configurations

Chen Gang (2):
      netfilter: nfnetlink_cthelper: Remove 'const' and '&' to avoid warnings
      wil6210: use 'uint64_t' instead of 'cycles_t' to avoid warnings

Christoph Hellwig (1):
      net: remove sock_iocb

Christophe Ricard (40):
      NFC: dts: st21nfca: Fix compatible string spelling to follow other drivers
      NFC: dts: st21nfcb: Fix compatible string spelling to follow other drivers
      NFC: st21nfcb: Fix "WARNING: invalid free of devm_ allocated data"
      NFC: st21nfca: Remove unreachable code
      NFC: st21nfcb: Avoid use of skb after free
      NFC: nfc_enable_se Remove useless blank line at beginning of function
      NFC: nfc_disable_se Remove useless blank line at beginning of function
      NFC: st21nfca: Remove skb_pipe_list and skb_pipe_info useless allocation
      NFC: st21nfca: Remove checkpatch.pl warning Possible unnecessary 'out of memory' message
      NFC: st21nfca: Fix some skb memory leaks
      NFC: st21nfcb: Fix "NULL pointer dereference" possible error
      NFC: st21nfcb: Remove useless include
      NFC: st21nfcb: Fix copy/paste error in comment
      NFC: hci: Change event_received handler gate parameter to pipe
      NFC: hci: Add pipes table to reference them with a tuple {gate, host}
      NFC: hci: Change nfc_hci_send_response gate parameter to pipe
      NFC: hci: Reference every pipe information according to notification
      NFC: hci: Add cmd_received handler
      NFC: pn544: Change event_received gate parameter to pipe
      NFC: microread: Change event_received gate parameter to pipe
      NFC: hci: Remove nfc_hci_pipe2gate function
      NFC: st21nfca: Adding support for secure element
      NFC: dts: st21nfca: Document ese-present & uicc-present DTS property
      NFC: nci: Add dynamic logical connections support
      NFC: nci: Add NCI NFCEE constants
      NFC: nci: Add NFCEE discover support
      NFC: nci: Add NFCEE enabling and disabling support
      NFC: nci: Support logical connections management
      NFC: nci: Add HCI over NCI protocol support
      NFC: st21nfcb: Add support for secure element
      NFC: Forward NFC_EVT_TRANSACTION to user space
      NFC: nci: Add RF NFCEE action notification support
      NFC: nci: Change NCI state machine to LISTEN_ACTIVE
      NFC: st21nfcb: Add HCI transaction event support
      NFC: st21nfca: Add HCI transaction event support
      NFC: nci: Add reference to the RF logical connection
      NFC: nci: Support all destinations type when creating a connection
      NFC: nci: Change credits field to credits_cnt
      NFC: nci: Move logical connection structure allocation
      NFC: nci: Move NFCEE discovery logic

Chun-Yeow Yeoh (1):
      rtl8192cu: fix the mesh beaconing

Chunyan Zhang (6):
      irda: Removed all unused timeval variables
      irda: ali-ircc: Replace timeval with ktime_t
      irda: irda-usb: Replace timeval with ktime_t
      irda: nsc-ircc: Replace timeval with ktime_t
      irda: stir4200: Replace timeval with ktime_t
      irda: vlsi_ir: Replace timeval with ktime_t

Colin Ian King (1):
      rtlwifi/rtl8192de: remove redundant else if check

Dan Carpenter (5):
      net: eth: xgene: devm_ioremap() returns NULL on error
      wlcore: unlock on error in wl1271_op_suspend()
      bridge: simplify br_getlink() a bit
      hisilicon: add some missing curly braces
      net: sxgbe: fix error handling in init_rx_ring()

Daniel Borkmann (10):
      net: fib6: fib6_commit_metrics: fix potential NULL pointer dereference
      net: tcp: refactor reinitialization of congestion control
      net: tcp: add key management to congestion control
      net: tcp: add RTAX_CC_ALGO fib handling
      net: tcp: add per route congestion control
      net: cls_basic: return from walking on match in basic_get
      net: act_bpf: fix size mismatch on filter preparation
      net: mark some potential candidates __read_mostly
      ipv6: addrconf: add missing validate_link_af handler
      rtnetlink: ifla_vf_policy: fix misuses of NLA_BINARY

David Ahern (2):
      net: rocker: Add basic netdev counters - v2
      net: rocker: Add support for retrieving port level statistics

David Decotigny (1):
      net: bnx2x: avoid macro redefinition

David L Stevens (3):
      sunvnet: fix rx packet length check to allow for TSO
      sunvnet: free pending tx buffers before clearing ring data
      sunvnet: improve error handling when a remote crashes

David S. Miller (102):
      Merge branch 'timecounter'
      Merge branch 'fec-next'
      Merge branch 'enic-next'
      Merge branch 'fib_trie-next'
      e1000e: Include clocksource.h to get CLOCKSOURCE_MASK.
      igb_ptp: Include clocksource.h to get CLOCKSOURCE_MASK.
      Merge branch 'gmac-next'
      Merge branch 'for-upstream' of git://git.kernel.org/.../bluetooth/bluetooth-next
      Merge tag 'wireless-drivers-next-for-davem-2015-01-02' of git://git.kernel.org/.../kvalo/wireless-drivers-next
      Merge branch 'timecounter-next'
      Merge branch 'rhashtable-next'
      Merge branch 'geneve-next'
      Merge branch 'cxgb4-next'
      Merge branch 'ip_cmsg_csum'
      Merge branch 'rt_cong_ctrl'
      Merge git://git.kernel.org/.../davem/net
      Merge branch 'cxgb4-next'
      Merge branch 'rhashtable-next'
      Merge tag 'batman-adv-for-davem' of git://git.open-mesh.org/linux-merge
      Merge branch 'sti_drivers'
      Merge branch 'irda-next'
      Merge branch 'r8152-next'
      Merge branch 'cxgb4-next'
      Merge branch 'tipc-namespaces'
      Merge branch 'bridge_vlan_ranges'
      Merge branch 'tuntap_queues'
      Merge branch 'rhashtable-next'
      Merge branch 'master' of git://git.kernel.org/.../jkirsher/net-next
      Merge branch 'xen-netfront-next'
      Merge branch 'hip04'
      Merge branch 'vxlan_rco'
      Merge git://git.kernel.org/.../davem/net
      Merge branch 'vxlan_group_policy_extension'
      Merge git://git.kernel.org/.../pablo/nf-next
      Merge branch 'cxgb4-next'
      Merge tag 'mac80211-next-for-davem-2015-01-15' of git://git.kernel.org/.../jberg/mac80211-next
      Merge branch 'iw_cxgb4-next'
      Merge branch 'amd-xgbe'
      Merge branch 'master' of git://git.kernel.org/.../jkirsher/net-next
      Merge branch 's390-next'
      Merge branch 'for-upstream' of git://git.kernel.org/.../bluetooth/bluetooth-next
      netlink: Fix bugs in nlmsg_end() conversions.
      Merge branch 'link_netns'
      Merge branch 'netcp'
      Merge branch 'csiostor'
      Merge branch 'dsa-next'
      Merge tag 'mac80211-next-for-davem-2015-01-19' of git://git.kernel.org/.../jberg/mac80211-next
      Merge branch 'link_netns_advertise'
      Merge branch 'cxgb4-next'
      Merge branch 'stmmac-dwmac-rk'
      Merge branch 'be2net-next'
      Merge branch 'vxlan_tx'
      Merge branch 'master' of git://git.kernel.org/.../jkirsher/net-next
      Merge branch 'mlx4-next'
      Merge branch 'fib_trie_next'
      Merge branch 'phy_dsa'
      Merge branch 'sh_eth'
      Merge tag 'linux-can-next-for-3.20-20150121' of git://git.kernel.org/.../mkl/linux-can-next
      Merge branch 'ovs_flowids'
      Merge branch 'master' of git://git.kernel.org/.../kvalo/wireless-drivers-next
      Merge branch 'cxgb4-next'
      Merge branch 'phy-next'
      Merge branch 'sunvnet-next'
      Merge git://git.kernel.org/.../davem/net
      Merge branch 'bonding-next'
      Merge branch 'mlx4-next'
      Merge branch 'stmmac-pci'
      Merge tag 'nfc-next-3.20-1' of git://git.kernel.org/.../sameo/nfc-next
      Merge tag 'linux-can-next-for-3.20-20150128' of git://git.kernel.org/.../mkl/linux-can-next
      Merge branch 'cpsw_macid'
      Merge branch 'hso-next'
      Merge branch 'switchdev_offload_flags'
      Merge branch 'net-timestamp'
      Merge branch 'udpv6_lockless_send'
      Merge branch 'netlabel-next'
      Merge branch 'for-upstream' of git://git.kernel.org/.../bluetooth/bluetooth-next
      Merge tag 'mac80211-next-for-davem-2015-02-03' of git://git.kernel.org/.../jberg/mac80211-next
      Merge branch 'tipc-next'
      Merge branch 'mlx4-next'
      Merge branch 'mlx4-next'
      Merge branch 'rhashtable-next'
      Merge branch 'for-davem' of git://git.kernel.org/.../viro/vfs
      Revert "bridge: Let bridge not age 'externally' learnt FDB entries, they are removed when 'external' entity notifies the aging"
      Merge tag 'linux-can-next-for-3.20-20150204' of git://git.kernel.org/.../mkl/linux-can-next
      Merge git://git.kernel.org/.../davem/net
      Merge branch 'isdnloop_checkpatch'
      Merge branch 'tipc-next'
      Merge branch 'rhashtable-next'
      Merge tag 'nfc-next-3.20-2' of git://git.kernel.org/.../sameo/nfc-next
      Merge branch 'dsa-next'
      Merge branch 'r8152'
      Merge branch 'master' of git://git.kernel.org/.../jkirsher/net-next
      Merge branch 'be2net'
      Merge branch 'cxgb4'
      Merge branch 'tcp_ack_loops'
      Merge tag 'wireless-drivers-next-for-davem-2015-02-07' of git://git.kernel.org/.../kvalo/wireless-drivers-next
      Merge branch 'tipc-next'
      Merge branch 'mlx4_bond_notify'
      Merge branch 'expansion_rom'
      Merge branch 'master' of git://git.kernel.org/.../jkirsher/net-next
      Merge branch 'ipv6_ufo_fix'
      Merge git://git.kernel.org/.../davem/net

David Spinadel (1):
      iwlwifi: mvm: scan dwell time corrections

David Vrabel (4):
      xen: add page_to_mfn()
      xen-netfront: refactor skb slot counting
      xen-netfront: refactor making Tx requests
      xen-netback: always fully coalesce guest Rx packets

Dedy Lansky (2):
      wil6210: fix timing of netif_carrier_on indication
      wil6210: ignore firmware failure to gracefully stop AP

Dmitry Eremin-Solenikov (1):
      arm: sa1100: move irda header to linux/platform_data

Dmitry Tunin (1):
      Bluetooth: ath3k: Add support of AR3012 bluetooth 13d3:3423 device

Don Skidmore (5):
      ixgbe: cleanup sparse errors in new ixgbe_x550.c file
      ixgbe: cleanup redundant default method set_rxpba
      ixgbe: Cleanup probe to remove redundant attempt to ID PHY
      ixgbe: add VXLAN offload support for X550 devices
      ixgbe: add Tx anti spoofing support

Dor Shaish (1):
      Revert "iwlwifi: use correct fw file in 8000 b-step"

Duan Jiong (1):
      netfilter: nfnetlink: remove redundant variable nskb

Ed Swierk (1):
      ethtool: Extend ethtool plugin module eeprom API to phylib

Eliad Peller (24):
      mac80211: update sta bw on ht chanwidth action frame
      mac80211: avoid reconfig if no interfaces are up
      mac80211: fix dot11MulticastTransmittedFrameCount tested address
      iwlwifi: pcie: add basic reference accounting
      iwlwifi: mvm: allow both d0i3 and d3 wowlan configuration modes
      iwlwifi: support multiple d0i3 modes
      iwlwifi: mvm: support IWL_D0I3_MODE_ON_SUSPEND d0i3 mode
      iwlwifi: mvm: consider d0i3_disable in iwl_mvm_is_d0i3_supported()
      iwlwifi: mvm: wait for d0i3 exit on hw restart
      iwlwifi: mvm: clean refs before stop_device()
      iwlwifi: mvm: ask the fw to wakeup (from d0i3) on sysassert
      wlcore: fix WLCORE_VENDOR_ATTR_GROUP_KEY policy
      wlcore: fix sparse warning
      wlcore/wl18xx: handle rc updates in a separate work
      wlcore: enable AP wowlan
      wl18xx: add radar detection implementation
      wl18xx: add debugfs file to emulate radar event
      wlcore: add support for ap csa
      wlcore: add dfs master restart calls
      wlcore: allow using dfs channels
      wl18xx: declare radar_detect_widths support for ap interfaces
      mac80211: remove local->radar_detect_enabled
      mac80211: consider only relevant vifs for radar_required calculation
      mac80211: don't defer scans in case of radar detection

Emil Tantilov (9):
      ixgbe: allow multiple queues in SRIOV mode
      ixgbevf: enable multiple queue support
      ixgbevf: add RSS support for X550
      ixgbe: fix setting port VLAN
      ixgbevf: set vlan_features in a single write instead of several ORs
      ixgbevf: Fix ordering of shutdown to correctly disable Rx and Tx
      ixgbevf: Add code to check for Tx hang
      ixgbevf: rewrite watchdog task to function similar to igbvf
      ixgbevf: combine all of the tasks into a single service task

Emmanuel Grumbach (30):
      iwlwifi: pcie: let the Manageability Engine know when we leave
      iwlwifi: mvm: add debugfs to trigger fw debug logs collection
      iwlwifi: mvm: allow RSSI compensation
      iwlwifi: mvm: change SMEM dump to general purpose memory dump
      iwlwifi: mvm: convert the SRAM dump to the generic memory dump
      iwlwifi: mvm: support 2 different channels
      iwlwifi: remove useless extern definition of iwl4265_2ac_sdio_cfg
      mac80211: let flush() drop packets when possible
      mac80211: delete the assoc/auth timer upon suspend
      iwlwifi: mvm: allow to collect debug data from non-sleepable context
      iwlwifi: mvm: rs: allow to disable MIMO for P2P only
      iwlwifi: remove unused TLV capability flags
      iwlwifi: mvm: let the firmware configure the scheduler
      iwlwifi: correctly set the NMI register
      Merge tag 'tags/mac80211-next-for-davem-2015-01-19' into iwlwifi-next
      Merge remote-tracking branch 'iwlwifi-fixes/master' into iwlwifi-next
      iwlwifi: mvm: BT Coex - fine tune the MPLUT register
      iwlwifi: mvm: add support for new LTR command
      Revert "iwlwifi: mvm: drop non VO frames when flushing"
      iwlwifi: mvm: BT Coex - set all the co-running values to 0
      iwlwifi: mvm: really disable TDLS queues
      mac80211: synchronize_net() before flushing the queues
      mac80211: avoid races related to suspend flow
      iwlwifi: mvm: check IWL_UCODE_TLV_API_SCD_CFG in API and not in capa
      iwlwifi: pcie: don't dump useless data when a TFD queue hangs
      iwlwifi: pcie: prepare the enablement of 31 TFD queues
      iwlwifi: pcie: disable the SCD_BASE_ADDR when we resume from WoWLAN
      iwlwifi: mvm: enable watchdog on Tx queues for mvm
      iwlwifi: allow to define the stuck queue timer per queue
      iwlwifi: mvm: don't send a command the firmware doesn't know

Eran Harary (5):
      iwlwifi: mvm: support additional nvm_file in family 8000 B step
      iwlwifi: mvm: call to pcie_apply_destination also on family 8000 B step
      iwlwifi: mvm: add print of he nvm version
      iwlwifi: mvm: support family 8000 C step
      iwlwifi: pcie: support secured boot flow for family 8000 B step

Eric Dumazet (12):
      ipv4: per cpu uncached list
      niu: remove one compound_head() call
      bonding: handle more gso types
      ipv6: tcp: fix race in IPV6_2292PKTOPTIONS
      pkt_sched: fq: remove useless TIME_WAIT check
      ipv4: icmp: use percpu allocation
      xps: fix xps for stacked devices
      tcp: do not pace pure ack packets
      pkt_sched: fq: better control of DDOS traffic
      net: use netif_rx_ni() from process context
      net: rfs: add hash collision detection
      net:rfs: adjust table size checking

Erik Hugne (2):
      tipc: fix excessive network event logging
      flow_dissector: add tipc support

Erik Kline (1):
      net: ipv6: allow explicitly choosing optimistic addresses

Eugene Crosser (2):
      qeth: use qeth_card_hw_is_reachable() everywhere
      qeth: sysfs: replace strcmp() with sysfs_streq()

Eyal Shapira (11):
      iwlwifi: mvm: rs: fix max rate allowed if no rate is allowed
      iwlwifi: mvm: rs: organize and cleanup consts
      iwlwifi: mvm: validate tid and sta_id in ba_notif
      iwlwifi: mvm: don't indicate no BA if STA was in powersave
      iwlwifi: mvm: rs: repeat initial legacy rates in LQ table
      iwlwifi: mvm: rs: cleanup unuseful and overflowing traces
      iwlwifi: mvm: rs: use STBC regardless of power save mode
      iwlwifi: mvm: rs: refactor ht/vht init
      iwlwifi: mvm: use a new API for enabling STBC
      iwlwifi: mvm: add beamformer support
      iwlwifi: mvm: rs: enable forcing single stream Tx decision

Fabian Frederick (2):
      netfilter: log: remove unnecessary sizeof(char)
      tipc: replace 0 by NULL for pointers

Fabio Estevam (2):
      Revert "ARM: imx: add FEC sleep mode callback function"
      Revert "ARM: dts: imx6qdl: enable FEC magic-packet feature"

Fan Du (2):
      openvswitch: Introduce ovs_tunnel_route_lookup
      ipv4: Namespecify TCP PMTU mechanism

Felipe Balbi (3):
      net: ethernet: cpsw: unroll IRQ request loop
      net: ethernet: cpsw: don't requests IRQs we don't use
      net: ethernet: ti: cpsw: fix buld break when NET_POLL_CONTROLLER

Felix Fietkau (2):
      mac80211: minstrel: reduce size of struct minstrel_rate_stats
      net: sched: Introduce connmark action

Feng Kan (1):
      net: eth: xgene: change APM X-Gene SoC platform ethernet to support ACPI

Florian Fainelli (10):
      net: ipv4: handle DSA enabled master network devices
      net: bridge: reject DSA-enabled master netdevices as bridge members
      net: phy: fixed: allow setting no update_link callback
      net: dsa: bcm_sf2: factor interrupt disabling in a function
      net: phy: utilize phy_suspend and phy_resume
      net: phy: document has_fixups field
      net: phy: keep track of the PHY suspend state
      net: phy: avoid suspending twice a PHY
      net: dsa: bcm_sf2: move GPHY enabling to its own function
      net: dsa: bcm_sf2: implement GPHY power down

Florian Westphal (6):
      net: skbuff: don't zero tc members when freeing skb
      net: fib6: convert cfg metric to u32 outside of table write lock
      r8169: add support for xmit_more
      net: e1000: support txtd update delay via xmit_more
      net: e1000e: support txtd update delay via xmit_more
      net: dctcp: loosen requirement to assert ECT(0) during 3WHS

Fred Chou (1):
      rt2x00: use helper to check capability/requirement

Gao feng (1):
      netfilter: nf_ct_seqadj: print ack seq in the right host byte order

Gautam Kumar Shukla (1):
      cfg80211: add extensible feature flag attribute

Geert Uytterhoeven (2):
      net: sh_eth: Use u32 for 32-bit register data
      rhashtable: Make selftest modular

Giel van Schijndel (1):
      wlcore: fix copy-paste bug: assign from src struct not dest

Govindarajulu Varadarajan (4):
      enic: make vnic_wq_buf doubly linked
      enic: check dma_mapping_error
      enic: add stats for dma mapping error
      enic: reconfigure resources for kdump crash kernel

Gowtham Anandha Babu (1):
      Bluetooth: Remove dead code

Greg Rose (2):
      i40e: Add warning for NPAR partitions with link speed less than 10Gbps
      i40e: Fix function header

Guy Mishol (1):
      wlcore: add dfs region to reg domain update cmd

Haim Dreyfuss (5):
      iwlwifi: mvm: Configure EBS scan ratio
      iwlwifi: mvm: Alter passive scan fragmentation parameters in case of multi-MAC
      iwlwifi: mvm: set max_out_time equal to frag_passive_dwell in fragmented scan
      iwlwifi: mvm: Fix a few EBS error handling bugs
      iwlwifi: mvm: Enable EBS also in single scan on umac interface

Hamad Kadmany (1):
      wil6210: Remove msm platform related code

Hante Meuleman (9):
      brcmfmac: Fix incorrect casting of 64 bit physical address.
      brcmfmac: Fix WEP configuration for AP mode.
      brcmfmac: Change error log in standard log for rxbufpost.
      brcmfmac: signal completion of 802.1x.
      brcmfmac: Relax scheduling of msgbuf worker on high throughput.
      brcmfmac: prevent possible deadlock on resuming SDIO device.
      brcmfmac: use SDIO DPC for control frames.
      brcmfmac: SDIO: avoid using bus state for private states.
      brcmfmac: Reopen netdev queue on bus state data.

Hariprasad Shenai (36):
      RDMA/cxgb4/cxgb4vf/csiostor: Cleanup SGE register defines
      cxgb4/cxgb4vf/csiostor: Cleanup SGE and PCI related register defines
      cxgb4/cxg4vf/csiostor: Cleanup MC, MA and CIM related register defines
      cxgb4/csiostor: Cleanup TP, MPS and TCAM related register defines
      cxgb4/cxgb4vf/csiostor: Cleanup PL, XGMAC, SF and MC related register defines
      cxgb4: Add PCI device ID for new T5 adapter
      cxgb4: Add support for devlog
      cxgb4: Add support for cim_la entry in debugfs
      cxgb4: Add support for cim_qcfg entry in debugfs
      cxgb4: Add support for mps_tcam debugfs
      iw_cxgb4/cxgb4/cxgb4i: Cleanup register defines/MACROS related to CM CPL messages
      iw_cxgb4/cxgb4/cxgb4vf/cxgb4i/csiostor: Cleanup register defines/macros related to all other cpl messages
      cxgb4: Ripping out old hard-wired initialization code in driver
      iw_cxgb4: Cleanup register defines/MACROS defined in t4.h
      iw_cxgb4: Cleanup register defines/MACROS defined in t4fw_ri_api.h
      iw_cxgb4: Cleanup register defines/MACROS defined in t4.h
      iw_cxgb4: Cleanup register defines/MACROS defined in t4fw_ri_api.h
      cxgb4: Add debugfs entry to dump the contents of the flash
      cxgb4: Add debugfs options to dump the rss key, config for PF, VF, etc
      cxgb4: Fixes cxgb4_inet6addr_notifier unregister call
      cxgb4: Added support in debugfs to dump sge_qinfo
      cxgb4: Added support in debugfs to dump cim ingress bound queue contents
      cxgb4: Addded support in debugfs to dump CIM outbound queue content
      cxgb4: Added support in debugfs to dump PM module stats
      cxgb4: Added support in debugfs to dump different timer and clock values of the adapter
      cxgb4: Move firmware version MACRO to t4fw_version.h
      cxgb4: Remove preprocessor check for CONFIG_CXGB4_DCB
      cxgb4: Add low latency socket busy_poll support
      cxgb4: Add support in debugfs to display sensor information
      cxgb4: Added support in debugfs to display TP logic analyzer output
      cxgb4: Add support for ULP RX logic analyzer output in debugfs
      cxgb4: Add support to dump mailbox content in debugfs
      cxgb4: Add support in debugfs to dump the congestion control table
      cxgb4: Fix trace observed while dumping clip_tbl
      ethtool: rename reserved1 memeber in ethtool_drvinfo for expansion ROM version
      cxgb4: Add support in cxgb4 to get expansion rom version via ethtool

Harout Hedeshian (1):
      net: ipv6: Add sysctl entry to disable MTU updates from RA

Helmut Schaa (1):
      ath10k: Use TX cksum offload only for CHECKSUM_PARTIAL

Herbert Xu (6):
      netlink: Fix netlink_insert EADDRINUSE error
      netlink: Kill redundant net argument in netlink_insert
      rhashtable: Fix potential crash on destroy in rhashtable_shrink
      rhashtable: Introduce rhashtable_walk_*
      netlink: Use rhashtable walk iterator
      netfilter: Use rhashtable walk iterator

Hong Xu (2):
      ath9k_htc: Add a module parameter to disable blink
      ath9k and ath9k_htc: rename variable "led_blink"

Hubert Sokolowski (1):
      net: Do not call ndo_dflt_fdb_dump if ndo_fdb_dump is defined

Ido Shamay (3):
      net/mlx4_en: Print page allocator information
      net/mlx4_en: Adjust RX frag strides to frag sizes
      net/mlx4_en: Notify TX Vlan offload change

Ido Yariv (3):
      iwlwifi: mvm: Set the HW step in the core dump
      mac80211: Re-fix accounting of the tailroom-needed counter
      iwlwifi: mvm: add support for dumping a secondary SRAM

Ilan Peer (2):
      iwlwifi: mvm: Do not consider invalid HW queues in queue mask
      iwlwifi: mvm: Fix building channels in scan_config_cmd

Ivan Vecera (1):
      tg3: move init/deinit from open/close to probe/remove

Jack Morgenstein (7):
      net/mlx4_core: Add bad-cable event support
      net/mlx4_core: Add reserved lkey for VFs to QUERY_FUNC_CAP
      net/mlx4_core: Fix mem leak in SRIOV mlx4_init_one error flow
      net/mlx4_core: Adjust command timeouts to conform to the firmware spec
      net/mlx4_core: Fix HW2SW_EQ to conform to the firmware spec
      net/mlx4_core: Fix struct mlx4_vhcr_cmd to make implicit padding explicit
      net/mlx4_core: Remove duplicate code line from procedure mlx4_bf_alloc

Jacob Keller (5):
      i40e: only enable PTP interrupt cause if PTP is enabled
      i40e: check I40E_FLAG_PTP before handling Tx or Rx timestamps
      i40e: use same check for Rx hang as for Rx timestamps
      i40e: when Rx timestamps disabled set specific mode
      virtio_net: add software timestamp support

Jakub Pawlowski (4):
      Bluetooth: Set HCI_QUIRK_STRICT_DUPLICATE_FILTER for BTUSB_ATH3012
      Bluetooth: Set HCI_QUIRK_STRICT_DUPLICATE_FILTER for BTUSB_INTEL
      Bluetooth: Add le_scan_restart work for LE scan restarting
      Bluetooth: Add restarting to service discovery

Janusz Dziedzic (5):
      mac80211: notify NSS changed when IBSS and HT
      ath10k: fix low TX rates when IBSS and HT
      ath10k: send (re)assoc peer command when NSS changed
      ath10k: implement uapsd autotrigger command
      ath10k: implement sta keepalive command

Jarno Rajahalme (1):
      net: openvswitch: Support masked set actions.

Jason Wang (1):
      virtio-net: don't do header check for dodgy gso packets

Jeff Kirsher (1):
      i40e: AQ API updates

Jesse Gross (6):
      net: Add Transparent Ethernet Bridging GRO support.
      geneve: Remove workqueue.
      geneve: Simplify locking.
      geneve: Remove socket hash table.
      geneve: Check family when reusing sockets.
      openvswitch: Add support for checksums on UDP tunnels.

Jiri Pirko (7):
      net: sched: fix skb->protocol use in case of accelerated vlan path
      net: rename vlan_tx_* helpers since "tx" is misleading there
      tc: add BPF based action
      tc: cls_bpf: rename bpf_len to bpf_num_ops
      switchdev: introduce switchdev notifier
      net: replace br_fdb_external_learn_* calls with switchdev notifier events
      switchdev: fix typo in inline function definition

Jiri Slaby (1):
      MAINTAINERS: remove ath5k mailing list

Joe Perches (2):
      netfilter: xt_osf: Use continue to reduce indentation
      qlcnic: Fix dump_skb output

Joe Stringer (7):
      geneve: Add Geneve GRO support
      fm10k: Check tunnel header length in encap offload
      openvswitch: Refactor ovs_nla_fill_match().
      openvswitch: Refactor ovs_flow_tbl_insert().
      openvswitch: Use sw_flow_key_range for key ranges.
      genetlink: Add genlmsg_parse() helper function.
      openvswitch: Add support for unique flow IDs.

Johan Hedberg (27):
      Bluetooth: Split hci_update_page_scan into two functions
      Bluetooth: Split hci_request helpers to hci_request.[ch]
      Bluetooth: Add hci_request support for hci_update_background_scan
      Bluetooth: Fix Remove Device to wait for HCI before sending cmd_complete
      Bluetooth: Fix Add Device to wait for HCI before sending cmd_complete
      Bluetooth: Add return parameter to cmd_complete callbacks
      Bluetooth: Move hci_update_page_scan to hci_request.c
      Bluetooth: Fix const declarations for smp_f5 and smp_f6
      Bluetooth: Add support for ECDH test cases
      Bluetooth: Add skeleton for SMP self-tests
      Bluetooth: Add legacy SMP tests
      Bluetooth: Add LE Secure Connections tests for SMP
      Bluetooth: Fix valid Identity Address check
      Bluetooth: Add helpers for src/dst bdaddr type conversion
      Bluetooth: Fix lookup of fixed channels by local bdaddr
      Bluetooth: Check for valid bdaddr in add_remote_oob_data
      Bluetooth: Remove incorrect check for BDADDR_BREDR address type
      Bluetooth: Convert Set SC to use HCI Request
      Bluetooth: Enforce zero-valued hash/rand192 for LE OOB
      Bluetooth: btusb: Remove redundant call to btusb_free_frags()
      Bluetooth: Fix check for SSP when enabling SC
      Bluetooth: Fix notifying discovery state upon reset
      Bluetooth: Fix notifying discovery state when powering off
      Bluetooth: btusb: Fix race when waiting for BTUSB_DOWNLOADING
      Bluetooth: btusb: Use wait_on_bit_timeout() for BTUSB_BOOTING
      Bluetooth: Remove mgmt_rp_read_local_oob_ext_data struct
      Bluetooth: Fix potential NULL dereference

Johannes Berg (52):
      cfg80211: use __force __rcu to suppress sparse warning
      mac80211: ask driver to look at power level when starting AP
      mac80211: move U-APSD enablement to vif flags
      mac80211_hwsim: fix check for custom world regdom array size
      iwlwifi: remove MODULE_VERSION
      iwlwifi: mvm: use iwl_mvm_vif_from_mac80211() consistently
      iwlwifi: mvm: use iwl_mvm_sta_from_mac80211() consistently
      nl80211: document NL80211_BSS_STATUS_AUTHENTICATED isn't used
      nl80211: define multicast group names in header
      Merge branch 'mac80211' into mac80211-next
      cfg80211: remove "channel" from survey names
      cfg80211: allow survey data to return global data
      cfg80211: add scan time to survey data
      cfg80211: allow including station info in delete event
      mac80211: send statistics with delete station event
      mac80211: allow drivers to provide most station statistics
      cfg80211: remove enum station_info_flags
      cfg80211: add nl80211 beacon-only statistics
      nl80211: clarify packet statistics descriptions
      nl80211: support per-TID station statistics
      mac80211: provide per-TID RX/TX MSDU counters
      mac80211_hwsim: fix PS debugfs file locking
      mac80211: fix handling TIM IE when stations disconnect
      cfg80211: docs: remove station_info_flags
      orinoco/hermes: select CFG80211_WEXT
      mac80211: remove 80+80 MHz rate reporting
      cfg80211: remove 80+80 MHz rate reporting
      cfg80211: change bandwidth reporting to explicit field
      mac80211: remove doubled semicolon
      cfg80211: fix checking nl80211_send_station() return value
      netlink: make nlmsg_end() and genlmsg_end() void
      Revert "wireless: Support of IFLA_INFO_KIND rtnl attribute"
      phonet netlink: allow multiple messages per skb in route dump
      mac80211: fix HW registration error paths
      iwlwifi: mvm: add debugfs file for misbehaving U-APSD AP
      iwlwifi: mvm: sync statistics firmware API
      iwlwifi: mvm: move statistics API to new header file
      iwlwifi: mvm: generate statistics debugfs code
      iwlwifi: mvm: move U-APSD decision to authentication
      iwlwifi: pcie: init ref_lock
      iwlwifi: mvm: rs: remove stats argument from functions
      mac80211: allow drivers to control software crypto
      nl80211: suppress smatch warnings
      mac80211: tdls: remove shadowing variable
      mac80211: tdls: disentangle HT supported conditions
      mac80211: fix per-TID RX-MSDU counter
      mac80211: support beacon statistics
      ath10k: use IEEE80211_HW_SW_CRYPTO_CONTROL
      mwifiex: set netif carrier off in ndo_open
      nl80211: don't document per-wiphy interface dump
      iwlwifi: mvm: remove space padding after sysassert description
      iwlwifi: mvm: reduce quota threshold

John Linville (2):
      ath9k_htc: remove dead code in error path of ath9k_htc_txcompletion_cb
      ath5k: document a fall-through case in ath5k_hw_set_opmode

John W Linville (1):
      i40e: avoid use of uninitialized v_budget in i40e_init_msix

John W. Linville (2):
      ath10k: document switch case fall-through in __ath10k_scan_finish
      iwlwifi: mvm: document switch case fall-through in iwl_mvm_send_sta_key

Jon Maloy (1):
      tipc: fix bug in broadcast retransmit code

Jon Paul Maloy (14):
      tipc: add reference count to struct tipc_link
      tipc: avoid stale link after aborted failover
      tipc: eliminate race during node creation
      tipc: separate link starting event from link timeout event
      tipc: reduce usage of context info in socket and link
      tipc: simplify message forwarding and rejection in socket layer
      tipc: enqueue arrived buffers in socket in separate function
      tipc: split up function tipc_msg_eval()
      tipc: use existing sk_write_queue for outgoing packet chain
      tipc: resolve race problem at unicast message reception
      tipc: simplify connection abort notifications when links break
      tipc: simplify socket multicast reception
      tipc: eliminate race condition at multicast reception
      tipc: fix bug in socket reception function

Jonathan Doron (1):
      cfg80211: allow wiphy specific regdomain management

Jonathan Toppins (3):
      bonding: cleanup bond_opts array
      bonding: update bond carrier state when min_links option changes
      bonding: cleanup and remove dead code

Jouni Malinen (6):
      cfg80211: Fix BIP (AES-CMAC) cipher validation
      cfg80211: Add new GCMP, CCMP-256, BIP-GMAC, BIP-CMAC-256 ciphers
      mac80111: Add GCMP and GCMP-256 ciphers
      mac80111: Add CCMP-256 cipher
      mac80111: Add BIP-CMAC-256 cipher
      mac80111: Add BIP-GMAC-128 and BIP-GMAC-256 ciphers

Jukka Rissanen (4):
      nl80211: Convert sched_scan_req pointer to RCU pointer
      nl80211: Stop scheduled scan if netlink client disappears
      Bluetooth: 6lowpan: Add IPSP PSM value
      Bluetooth: 6lowpan: Remove PSM setting code

Julia Lawall (17):
      iwlwifi: dvm: tt: Use setup_timer
      iwlwifi: dvm: main: Use setup_timer
      atheros: atlx: Use setup_timer
      atl1e: Use setup_timer
      ksz884x: Use setup_timer
      net: sxgbe: Use setup_timer
      wireless: cw1200: Use setup_timer
      cw1200: main: Use setup_timer
      cw1200: queue: Use setup_timer
      iwl4965: Use setup_timer
      iwl3945: Use setup_timer
      orinoco_usb: Use setup_timer
      mwifiex: main: Use setup_timer
      mwifiex: 11n_rxreorder: Use setup_timer
      mwifiex: tdls: Use setup_timer
      ath10k: fix error return code
      adm8211: fix error return code

Kalesh AP (6):
      be2net: move interface create code to a separate routine
      be2net: fix failure case in setting flow control
      be2net: fail VF link config change via ndo_set_vf_link_state() on BE3/Lancer
      be2net: add a log message for POST timeout in Lancer
      be2net: issue function reset cmd in resume path
      be2net: Fix TX rate limiting on Lancer/Skyhawk-R VFs

Kalle Valo (15):
      dt: bindings: add ath10k wireless device
      ath10k: clean up error handling in ath10k_core_probe_fw()
      ath10k: create ath10k_core_init_features()
      ath10k: add ATH10K_FW_IE_WMI_OP_VERSION
      ath10k: set max_num_pending_tx in ath10k_core_init_firmware_features()
      ath10k: set max_num_vdevs based on wmi op version
      ath10k: use wmi op version to check which iface combination to use
      ath10k: print ath10k wmi op version
      Merge tag 'iwlwifi-next-for-kalle-2014-12-30' of https://git.kernel.org/.../iwlwifi/iwlwifi-next
      ath10k: fix build error when hwmon is off
      Merge ath-next from ath.git
      Merge commit 'c1e140bf79d817d4a7aa9932eb98b0359c87af33' from mac80211-next
      Merge tag 'iwlwifi-next-for-kalle-2015-01-22' of https://git.kernel.org/.../iwlwifi/iwlwifi-next
      Merge tag 'iwlwifi-next-for-kalle-2015-02-03' of https://git.kernel.org/.../iwlwifi/iwlwifi-next
      Merge ath-next from ath.git

Kamil Krawczyk (1):
      i40e: Adding function for reading PBA String

Karicheri, Muralidharan (4):
      Documentation: dt: net: Add binding doc for Keystone NetCP ethernet driver
      net: netcp: Add Keystone NetCP core ethernet driver
      net: netcp: remove unused kconfig option and code
      drivers: net: cpsw: make cpsw_ale.c a module to allow re-use on Keystone

Kenneth Klette Jonassen (1):
      tcp: use SACK RTTs for CC

Kenneth Williams (1):
      team: Remove dead code

Kevin Hao (3):
      net: gianfar: mark the local functions static
      net: gianfar: add missing __iomem annotation
      net: gianfar: remove the unneeded check of disabled device

Kevin Scott (1):
      i40e/i40evf: Increase ASQ timeout

Kiran Padwal (1):
      ARCNET: Add missing error check for devm_kzalloc

Kobi L (1):
      wlcore: enable sleep during AP mode operation

Kristian Evensen (2):
      netfilter: conntrack: Flush connections with a given mark
      netfilter: conntrack: Remove nf_ct_conntrack_flush_report

Krzysztof Kozlowski (1):
      at86rf230: Constify struct regmap_config

Kweh, Hock Leong (2):
      stmmac: pci: add support for Intel Quark X1000
      stmmac: pci: add MSI support for Intel Quark X1000

LEROY Christophe (1):
      net: fs_enet: Implement NETIF_F_SG feature

Lad, Prabhakar (10):
      net: ethernet: ti/cpsw-common.c: fix sparse warning
      hyperv: fix sparse warnings
      chelsio: cxgb4: fix sparse warning
      be2net: fix sparse warning
      enic: enic_ethtool: fix sparse warning
      enic: enic_main: fix sparse warnings
      net: bnx2x: fix sparse warnings
      net/macb: fix sparse warning
      xen-netback: fix sparse warning
      vxge: fix sparse warning

Larry Finger (27):
      rtlwifi: rtl8821ae: Fix typos in power-sequence macro
      rtlwifi: rtl8192ce: Add code to set the keep-alive operation
      rtlwifi: rtl8192ce: Update setting of the media status
      rtlwifi: rtl8192ce: Update rate setting routines
      rtlwifi: rtl8192ce: Improve RF sleep routine
      rtlwifi: Remove extraneous argument for rate mapping
      rtlwifi: rtl8723be: Switch to use common rate-mapping routine
      rtlwifi: rtl8188ee: Switch to use common rate-mapping routine
      rtlwifi: rtl8723ae: Modify driver to use rate-mapping routine in core
      rtlwifi: rtl8192ee: Convert driver to use common rate-mapping code
      rtlwifi: Convert all drivers to use a common set of rate descriptors
      rtlwifi: rtl8821ae: Add VHT rate descriptors
      rtlwifi: rtl8192cu: Rework calls to rate-control routine
      rtlwifi: rtl8192de: Rework calls to rate-control routine
      rtlwifi: rtl8821ae: Switch to use common rate control routine
      rtlwifi: Unify variable naming for all drivers
      rtlwifi: rtl8723be: Improve modinfo output
      rtlwifi: Create new routine to initialize the DM tables
      rtlwifi: rtl8188ee: Convert driver to use the common DM table init routine
      rtlwifi: rtl8192c-common: Convert driver to use common DM table initialization
      rtlwifi: rtl8192de: Convert driver to use common DM table initialization
      rtlwifi: rtl8192ee: Convert driver to use common DM table initialization
      rtlwifi: rtl8723ae: Convert driver to use common DM table initialization
      rtlwifi: rtl8723be: Convert driver to use common DM table initialization
      rtlwifi: rtl8821ae: Convert driver to use common DM table initialization
      rtlwifi: Move macro definitions to core
      rtlwifi: rtl8192ee: Fix problems with calculating free space in FIFO

Lendacky, Thomas (13):
      amd-xgbe: Checkpatch fixes
      amd-xgbe-phy: Checkpatch fixes
      amd-xgbe: Add check to be sure amd-xgbe-phy driver is used
      amd-xgbe-phy: On suspend, save CTRL1 reg for use on resume
      amd-xgbe: Clear all state during a device restart
      amd-xgbe: Simplify the Rx desciptor ring tracking
      amd-xgbe: Remove need for Tx path spinlock
      amd-xgbe-phy: Change auto-negotiation logic
      amd-xgbe-phy: Properly support the FEC auto-negotiation
      amd-xgbe-phy: Use the proper auto-negotiation XNP registers
      amd-xgbe: Add ACPI support
      amd-xgbe-phy: Allow certain PHY settings to be set by UEFI
      amd-xgbe: Check per channel DMA interrupt use in main ISR

Liad Kaufman (7):
      iwlwifi: mvm: add fw runtime stack to dump data
      iwlwifi: mvm: add smem content to dump data
      iwlwifi: tlv: add support for IWL_UCODE_TLV_SDIO_ADMA_ADDR TLV
      iwlwifi: mvm: make sure state isn't in d0i3 when collecting fw dbg
      iwlwifi: mvm: make sure state isn't in d0i3 when stopping fw monitor
      iwlwifi: mvm: add rxf and txf to dump data
      iwlwifi: mvm: fix rx chains configuration in phy ctxt cmd

Lorenzo Bianconi (7):
      ath9k: enable TPC by default
      ath9k: add debugfs support for hw TPC
      ath9k: fix typo
      ath9k: add power per-rate tables for AR9002 chips
      ath9k: add TPC to TX path for AR9002 based chips
      ath9k: enable per-packet TPC on AR9002 based chips
      mac80211: enable TPC through mac80211 stack

Luciano Coelho (11):
      mac80211: notify channel switch at the end of ieee80211_chswitch_post_beacon()
      mac80211: remove unused variable in ieee80211_parse_ch_switch_ie()
      iwlwifi: mvm: clear tt values when entering CT-kill
      nl80211: send netdetect configuration info in NL80211_CMD_GET_WOWLAN
      iwlwifi: mvm: ignore temperature updates in the RX statistics notification
      nl80211: add an attribute to allow delaying the first scheduled scan cycle
      mac80211: complete scan work immediately if quiesced or suspended
      mac80211: handle potential race between suspend and scan completion
      iwlwifi: mvm: don't reprobe if we fail during reconfig and fw_restart is false
      iwlwifi: mvm: always use mac color zero
      iwlwifi: mvm: fix failure path when power_update fails in add_interface

Maithili Hinge (2):
      mwifiex: Move code for wowlan magic-packet and patterns to a function
      mwifiex: Add support for wowlan disconnect

Majd Dibbiny (1):
      net/mlx4_core: Update the HCA core clock frequency after INIT_PORT

Maor Gottlieb (2):
      net/mlx4_core: Fix mpt_entry initialization in mlx4_mr_rereg_mem_write()
      net/mlx4: mlx4_config_dev_retrieval() - Initialize struct config_dev before using

Marc Kleine-Budde (4):
      can: flexcan: remove unused variable
      can: at91_can: remove unused variable
      can: peak_usb: use ARRAY_SIZE instead of NULL termination for peak_usb_adapters_list
      can: peak_usb: constify struct peak_usb_adapter

Marc Yang (2):
      mwifiex: Adjust calling place of mwifiex_terminate_workqueue
      mwifiex: increase delay during card reset

Marcel Holtmann (77):
      Bluetooth: Support static address when BR/EDR has been disabled
      Bluetooth: Add skeleton functions for debugfs creation
      Bluetooth: Move common debugfs file creation into hci_debugfs.c
      Bluetooth: Move BR/EDR debugfs file creation into hci_debugfs.c
      Bluetooth: Move LE debugfs file creation into hci_debugfs.c
      Bluetooth: Add structures for LE Data Length Extension feature
      Bluetooth: Enable basics for LE Data Length Extension feature
      Bluetooth: Store default and maximum LE data length settings
      Bluetooth: Create debugfs directory for each connection handle
      Bluetooth: Remove duplicate constant for RFCOMM PSM
      Bluetooth: Introduce HCI_QUIRK_BROKEN_LOCAL_COMMANDS constant
      Bluetooth: bfusb: Set the HCI_QUIRK_BROKEN_LOCAL_COMMANDS quirk
      Bluetooth: btusb: Set the HCI_QUIRK_BROKEN_LOCAL_COMMANDS quirk
      Bluetooth: Remove BlueFritz! specific check from initialization
      Bluetooth: Add support for self testing framework
      Bluetooth: Add timing information to SMP test case runs
      Bluetooth: Add timing information to ECDH test case runs
      Bluetooth: Introduce force_bredr_smp debugfs option for testing
      Bluetooth: Remove broken force_lesc_support debugfs option
      Bluetooth: Remove no longer needed force_sc_support debugfs option
      Bluetooth: Fix scope of sc_only_mode debugfs entry
      Bluetooth: Fix for a leftover debug of pairing credentials
      Bluetooth: Fix SMP channel registration for unconfigured controllers
      Bluetooth: Fix issue with Roper Class 1 Bluetooth Dongle
      Bluetooth: Remove dead code for manufacturer inquiry mode quirks
      Bluetooth: Introduce HCI_QUIRK_FIXUP_INQUIRY_MODE option
      Bluetooth: Use HCI_QUIRK_FIXUP_INQUIRY_MODE for Silicon Wave devices
      Bluetooth: Add opcode parameter to hci_req_complete_t callback
      Bluetooth: Add BUILD_BUG_ON for size of struct sockaddr_hci
      Bluetooth: Add BUILD_BUG_ON for size of struct sockaddr_l2
      Bluetooth: Add BUILD_BUG_ON for size of struct sockaddr_rc
      Bluetooth: Add BUILD_BUG_ON for size of struct sockaddr_sco
      Bluetooth: Simplify packet copy in hci_send_to_monitor function
      Bluetooth: Create generic queue_monitor_skb helper function
      Bluetooth: Replace send_monitor_event with queue_monitor_skb
      Bluetooth: Add defintions for HCI Read Stored Link Key command
      Bluetooth: Handle command complete event for HCI Read Stored Link Keys
      Bluetooth: Read stored link key information when powering on controller
      Bluetooth: Add missing response structure for HCI Delete Stored Link Key
      Bluetooth: Process result of HCI Delete Stored Link Key command
      Bluetooth: btusb: Add internal recv_event callback for event processing
      Bluetooth: Move Delete Stored Link Key to 4th phase of initialization
      Bluetooth: Use %llu for printing duration details of selftests
      Bluetooth: Show device address type for L2CAP debugfs entries
      Bluetooth: Fix issue with switching BR/EDR back on when disabled
      Bluetooth: Fix LE SMP channel source address and source address type
      Bluetooth: Don't register any SMP channel if LE is not supported
      Bluetooth: Bind the SMP channel registration to management power state
      Bluetooth: Add paranoid check for existing LE and BR/EDR SMP channels
      Bluetooth: Fix dependency for BR/EDR Secure Connections mode on SSP
      Bluetooth: Limit BR/EDR switching for LE only with secure connections
      Bluetooth: Require SSP enabling before BR/EDR Secure Connections
      Bluetooth: btusb: Add support for Dynex/Insignia USB dongles
      Bluetooth: btusb: Add firmware loading for Intel Snowfield Peak devices
      Bluetooth: Clear P-192 values for OOB when in Secure Connections Only mode
      Bluetooth: Use helper function to determine BR/EDR OOB data present
      Bluetooth: Check for P-256 OOB values in Secure Connections Only mode
      Bluetooth: btusb: Handle out of order firmware loading complete event
      Bluetooth: Introduce hci_dev_do_reset helper function
      Bluetooth: Perform a power cycle when receiving hardware error event
      Bluetooth: btusb: Provide hardware error handler for Intel devices
      Bluetooth: Move smp_unregister() into hci_dev_do_close() function
      Bluetooth: btusb: Sort USB_DEVICE entries for Marvell by vendor id
      Bluetooth: btusb: Ignore unknown Intel devices with generic descriptor
      Bluetooth: btusb: Add support for USB based AMP controllers
      Bluetooth: btusb: Limit hardware error handling to Intel Snowfield Peak
      Bluetooth: Store OOB data present value for each set of remote OOB data
      Bluetooth: Fix OOB data present value for BR/EDR Secure Connections
      Bluetooth: Fix OOB data present value for SMP pairing
      Bluetooth: Allow remote OOB data to only provide P-192 or P-256 values
      Bluetooth: Expose Secure Simple Pairing debug mode setting in debugfs
      Bluetooth: Track changes from HCI Write Simple Pairing Debug Mode command
      Bluetooth: Expose debug keys usage setting via debugfs
      Bluetooth: Expose hardware error code as debugfs entry
      Bluetooth: Expose remote OOB information as debugfs entry
      Bluetooth: Fix OOB data present for BR/EDR Secure Connections Only mode
      Bluetooth: Set HCI_QUIRK_STRICT_DUPLICATE_FILTER for BTUSB_INTEL_NEW

Marcelo Leitner (1):
      netfilter: conntrack: adjust nf_conntrack_buckets default value

Marek Kwaczynski (2):
      ath10k: remove sw encryption for pmf
      ath10k: fix pmf for wmi-tlv on qca6174

Markus Elfring (20):
      s390/net: Delete useless checks before function calls
      net: sctp: Deletion of an unnecessary check before the function call "kfree"
      netlabel: Deletion of an unnecessary check before the function call "cipso_v4_doi_putdef"
      netlabel: Deletion of an unnecessary check before the function call "cipso_v4_doi_free"
      netlabel: Less function calls in netlbl_mgmt_add_common() after error detection
      IBM-EMAC: Delete an unnecessary check before the function call "of_dev_put"
      NetCP: Deletion of unnecessary checks before two function calls
      cxgb4: Delete an unnecessary check before the function call "release_firmware"
      myri10ge: Delete an unnecessary check before the function call "kfree"
      net: fec: Delete unnecessary checks before the function call "kfree"
      netxen: Delete an unnecessary check before the function call "kfree"
      qlogic: Deletion of unnecessary checks before two function calls
      net: ep93xx_eth: Delete unnecessary checks before the function call "kfree"
      cw1200: Delete an unnecessary check before the function call "release_firmware"
      cw1200: Less function calls in cw1200_load_firmware_cw1200() after error detection
      ath9k: Delete an unnecessary check before the function call "relay_close"
      orinoco: Delete an unnecessary check before the function call "kfree"
      hostap: Delete an unnecessary check before the function call "kfree"
      brcm80211: Delete unnecessary checks before two function calls
      net: Mellanox: Delete unnecessary checks before the function call "vunmap"

Markus Pargmann (1):
      batman-adv: Kconfig, Add missing DEBUG_FS dependency

Martin Hundebøll (5):
      batman-adv: kernel doc fixes for bat_iv_ogm.c
      batman-adv: kernel doc fixes for bridge_loop_avoidance.c
      batman-adv: kernel doc fix for distributed-arp-table.h
      batman-adv: kernel doc fixes for main.{c, h}
      batman-adv: clear control block of received socket buffers

Martin KaFai Lau (1):
      ip_tunnel: Create percpu gro_cell

Matan Barak (1):
      net/mlx4: Fix memory corruption in mlx4_MAD_IFC_wrapper

Matej Dubovy (1):
      Bluetooth: btusb: Add support for Lite-On (04ca) Broadcom based, BCM43142

Mathias Koehrer (1):
      e1000e: Fix 82572EI that has no hardware timestamp support

Matt Jared (1):
      i40e: fix led blink toggle to enable steady state

Matthew Vick (3):
      fm10k: Increase the timeout for the data path reset
      fm10k: Validate VLAN ID in fm10k_update_xc_addr_pf
      fm10k: Resolve compile warnings with W=1

Miaoqing Pan (4):
      ath9k: Add HW IDs for QCA956x
      ath9k: Add initvals for QCA956x
      ath9k: Fix register definitions for QCA956x
      ath9k: Add QCA956x HW support

Michael Buesch (2):
      b43: Fix locking FIXME in beacon update top half
      rt6_probe_deferred: Do not depend on struct ordering

Michael Schmitz (1):
      net: smc91x: Add Atari EtherNAT support

Michal Kazior (40):
      ath10k: create a chip revision whitelist
      ath10k: put board size into hw_params
      ath10k: move uart pin config into hw_params
      ath10k: implement intermediate event args
      ath10k: introduce wmi ops
      ath10k: make some wmi functions public
      ath10k: implement wmi-tlv backend
      ath10k: improve 11b coex
      ath10k: fix STA u-APSD
      ath10k: prevent invalid ps timeout config
      ath10k: enable per-vif sta powersave
      ath10k: advertise p2p dev support
      ath10k: fill max_num_vdevs for wmi-tlv
      ath10k: implement new beacon tx status event
      ath10k: implement beacon template command
      ath10k: implement prb tmpl wmi command
      ath10k: implement p2p bcn ie command
      ath10k: implement support for ap beacon offloading
      ath10k: prevent fw reg dump spam
      ath10k: implement diag data container event
      ath10k: implement diag event
      ath10k: introduce struct ath10k_skb_rxcb
      ath10k: implement rx reorder support
      ath10k: reset chip before reading chip_id in probe
      ath10k: add support for qca6174 Rx descriptors
      ath10k: add support for qca6174
      ath10k: split fw pdev stats parsing
      ath10k: fix 10.2 fw stats parsing
      ath10k: use idr api for msdu_ids
      ath10k: fix dtim period with beacon templates
      ath10k: fix nullfunc workaround
      ath10k: disable uapsd autotrigger
      ath10k: disable irqs after fw crash
      ath10k: move wmm param storage to vif
      ath10k: implement per-vdev wmm param setup command
      ath10k: use per-vif wmm param setup if possible
      ath10k: disable sta keepalive
      ath10k: change dma beacon cmd prototype
      ath10k: fix beacon deadlock
      ath10k: enable qca6174 hw3.2

Michal Simek (1):
      net: macb: Remove CONFIG_PM ifdef because of compilation warning

Mika Westerberg (1):
      net: rfkill: Add Broadcom BCM2E40 bluetooth ACPI ID

Mikhail Ulyanov (2):
      sh_eth: use SET_RUNTIME_PM_OPS()
      sh_eth: add more PM methods

Miroslav Urbanek (1):
      flowcache: Fix kernel panic in flow_cache_flush_task

Mitch A Williams (8):
      i40e: disable IOV before freeing resources
      i40evf: remove redundant code
      i40evf: Remove some scary log messages
      i40evf: refactor shutdown code
      i40evf: remove leftover VLAN filters
      i40evf: don't fire traffic IRQs when the interface is down
      i40evf: enable interrupt 0 appropriately
      i40evf: kick a stalled admin queue

Mitch Williams (7):
      i40e: delay after VF reset
      i40e: Use even more ARQ descriptors
      i40e: add locking around VF reset
      i40evf: reset on module unload
      i40evf: ignore bogus messages from FW
      i40evf: stop the watchdog for shutdown
      i40e: stop the service task at shutdown

Mohammad Jamal (2):
      ieee802154: cc2520: Replace shift operations by BIT macro
      ieee802154: cc2520: Fix space before , coding style issue

Moni Shoua (12):
      net/core: Add event for a change in slave state
      net/bonding: Move slave state changes to a helper function
      net/bonding: Notify state change on slaves
      net/mlx4_core: Port aggregation low level interface
      net/mlx4_core: Port aggregation upper layer interface
      net/mlx4_en: Port aggregation configuration
      IB/mlx4: Reuse mlx4_mac_to_u64()
      IB/mlx4: Add port aggregation support
      IB/mlx4: Create mirror flows in port aggregation mode
      IB/mlx4: Load balance ports in port aggregation mode
      net/bonding: Fix potential bad memory access during bonding events
      IB/mlx4: Always use the correct port for mirrored multicast attachments

Moshe Benji (1):
      mac80211: handle power constraint and country IEs in RRM

Moshe Harel (1):
      iwlwifi: mvm: support LnP 1x1 antenna configuration

Neal Cardwell (4):
      tcp: helpers to mitigate ACK loops by rate-limiting out-of-window dupacks
      tcp: mitigate ACK loops for connections as tcp_request_sock
      tcp: mitigate ACK loops for connections as tcp_sock
      tcp: mitigate ACK loops for connections as tcp_timewait_sock

Neerav Parikh (2):
      i40e: Issue "Stop LLDP" command for firmware older than v4.3
      i40e: Support for NPAR iSCSI partition with DCB

Nicholas Mc Guire (13):
      ath10k: fixup wait_for_completion_timeout return handling
      p54: add handling of the signal case
      p54pci: add handling of signal case
      hyperv: netvsc.c: match wait_for_completion_timeout return type
      hyperv: match wait_for_completion_timeout return type
      irda: use msecs_to_jiffies for conversions
      can: janz-ican3: fix type mismatch in assignment
      tlan: use msecs_to_jiffies for conversion
      tlan: msecs_to_jiffies convrsion
      cw1200: use msecs_to_jiffies for conversion
      orinoco: orinoco_plx use msecs_to_jiffies for conversion
      orinoco: orinoco_pci use msecs_to_jiffies for conversion
      orinoco: orinoco_tmd use msecs_to_jiffies for conversion

Nicolae Rosia (1):
      net: macb: allow deffered probe of the driver

Nicolas Dichtel (15):
      socket: use iov_length()
      bridge: use MDBA_SET_ENTRY_MAX for maxtype in nlmsg_parse()
      socket: use ki_nbytes instead of iov_length()
      netns: add rtnl cmd to add and get peer netns ids
      rtnl: add link netns id to interface messages
      tunnels: advertise link netns via netlink
      rtnl: allow to create device with IFLA_LINK_NETNSID set
      rtnl: fix error path when adding an iface with a link net
      ip6gretap: advertise link netns via netlink
      vlan: advertise link netns via netlink
      macvlan: advertise link netns via netlink
      veth: advertise link netns via netlink
      vxlan: advertise netns of vxlan dev in fdb msg
      vxlan: advertise link netns in fdb messages
      rtnetlink: pass link_net to the newlink handler

Nimrod Andy (5):
      net: fec: add Wake-on-LAN support
      ARM: imx: add FEC sleep mode callback function
      ARM: dts: imx6qdl: enable FEC magic-packet feature
      ARM: dts: imx6sx: correct i.MX6sx sdb board enet phy address
      net: fec: fix the warning found by dma debug

Nishikawa, Kenzoh (1):
      mac80211: keep sending peer candidate events while in listen state

Olivier Sobrie (11):
      hso: remove useless header file timer.h
      hso: fix crash when device disappears while serial port is open
      hso: fix memory leak when device disconnects
      hso: fix memory leak in hso_create_rfkill()
      hso: fix small indentation error
      hso: rename hso_dev into serial in hso_free_interface()
      hso: replace reset_device work by usb_queue_reset_device()
      hso: move tty_unregister outside hso_serial_common_free()
      hso: update serial_table in usb disconnect method
      hso: add missing cancel_work_sync in disconnect()
      hso: fix rfkill name conflicts

Or Gerlitz (4):
      net/fm10k: Avoid double setting of NETIF_F_SG for the HW encapsulation feature mask
      net/mlx4_core: Fix device capabilities dumping
      net/mlx4_core: Fix misleading debug print on CQE stride support
      net/mlx5_core: Move to use hex PCI device IDs

Oren Givon (1):
      iwlwifi: add new config and PCI IDs for 4165 series

Oscar Forner Martinez (1):
      bcma: fix three coding style issues, more than 80 characters per line

Pankaj Gupta (2):
      net: allow large number of rx queues
      tuntap: Increase the number of queues in tun.

Patrick McHardy (1):
      rhashtable: fix rht_for_each_entry_safe() endless loop

Peter Griffin (7):
      phy: phy-stih407-usb: Pass sysconfig register offsets via syscfg property.
      phy: miphy365x: Pass sysconfig register offsets via syscfg dt property.
      ARM: STi: DT: STiH407: Add usb2 picophy dt nodes
      ARM: STi: DT: STiH410: Add usb2 picophy dt nodes
      ARM: STi: DT: STiH410: Add DT nodes for the ehci and ohci usb controllers.
      ARM: multi_v7_defconfig: Enable stih407 usb picophy
      stmmac: dwmac-sti: Pass sysconfig register offset via syscon dt property.

Peter Hurley (1):
      Bluetooth: Fix nested sleeps

Peter Oh (5):
      ath10k: add new pdev parameters for fw 10.2
      ath10k: add new wmi interface of NF cal period
      ath10k: unregister and remove frag_threshold callback
      ath10k: set phymode to 11b when NO_OFDM flag set
      ath: fix incorrect PPB on FCC radar type 5

Pramod Gurav (1):
      ssb: Fix Sparse error in main

Praveen Madhavan (6):
      csiostor:firmware upgrade fix
      csiostor:fix sparse warnings
      csiostor:Remove T4 FCoE Support.
      csiostor:Removed file csio_hw_t4.c
      csiostor:T5 Firmware fix and cleanup.
      csiostor:Use firmware version from cxgb4/t4fw_version.h

Pravin B Shelar (2):
      MAINTAINERS: Update Open vSwitch entry.
      openvswitch: Initialize unmasked key and uid len

Rafał Miłecki (10):
      bcma: clean bus initialization code
      bcma: use standard bus scanning during early register
      bcma: fix watchdog on some ARM chipsets
      bcma: simplify freeing cores (internal devices structs)
      bcma: detect SPROM revision 11
      bcma: add empty PCIe hostmode functions if support is disabled
      bcma: add early_init function for PCIe core and move some fix into it
      bcma: implement host code support for PCIe Gen 2 devices
      b43: support bcma core reset on AC-PHY hardware
      b43: AC-PHY: prepare place for developing new PHY support

Rajkumar Manoharan (17):
      ath10k: add 10.2.4 firmware support
      ath10k: add wmi support for pdev_set_quiet_mode
      ath10k: add thermal cooling device support
      ath10k: add wmi interface for pdev_get_temperature
      ath10k: add thermal sensor device support
      ath10k: add wmi support for addba_clear_resp
      ath10k: add wmi support for addba_send
      ath10k: add wmi support for addba_set_resp
      ath10k: add wmi support for delba_send
      ath10k: Implement sta_add_debugfs
      ath10k: add support to send addba request
      ath10k: add support to send addba response
      ath10k: add support to send delba
      ath10k: fix config_enabled check for hwmon
      ath10k: fix duration calculation for quiet param
      ath10k: fix hwmon temperature input units
      ath10k: fix target wakeup timeout

Ram Amrani (1):
      wlcore: add ability to reduce FW interrupts during suspend

Rasmus Villemoes (3):
      atmel: Remove open-coded and wrong strcasecmp
      net: rds: Remove repeated function names from debug output
      vxlan: Wrong type passed to %pIS

Richard Alpe (18):
      tipc: fix socket list regression in new nl api
      tipc: move and rename the legacy nl api to "nl compat"
      tipc: convert legacy nl bearer dump to nl compat
      tipc: convert legacy nl bearer enable/disable to nl compat
      tipc: convert legacy nl link stat to nl compat
      tipc: convert legacy nl link dump to nl compat
      tipc: convert legacy nl link prop set to nl compat
      tipc: convert legacy nl link stat reset to nl compat
      tipc: convert legacy nl name table dump to nl compat
      tipc: convert legacy nl socket dump to nl compat
      tipc: convert legacy nl media dump to nl compat
      tipc: convert legacy nl node dump to nl compat
      tipc: convert legacy nl node addr set to nl compat
      tipc: convert legacy nl net id set to nl compat
      tipc: convert legacy nl net id get to nl compat
      tipc: convert legacy nl stats show to nl compat
      tipc: nl compat add noop and remove legacy nl framework
      tipc: remove tipc_snprintf

Richard Cochran (23):
      time: move the timecounter/cyclecounter code into its own file.
      timecounter: provide a helper function to shift the time.
      net: xgbe: convert to timecounter adjtime.
      net: bnx2x: convert to timecounter adjtime.
      net: fec: convert to timecounter adjtime.
      net: e1000e: convert to timecounter adjtime.
      net: igb: convert to timecounter adjtime.
      net: ixgbe: convert to timecounter adjtime.
      net: mlx4: convert to timecounter adjtime.
      net: cpts: convert to timecounter adjtime.
      timecounter: keep track of accumulated fractional nanoseconds
      timecounter: provide a macro to initialize the cyclecounter mask field.
      bnx2x: convert to CYCLECOUNTER_MASK macro.
      e1000e: convert to CYCLECOUNTER_MASK macro.
      igb: convert to CYCLECOUNTER_MASK macro.
      ixgbe: convert to CYCLECOUNTER_MASK macro.
      mlx4: include clocksource.h again
      microblaze: include the new timecounter header.
      arm_arch_timer: include clocksource.h directly
      igb: refactor time sync interrupt handling
      igb: serialize access to the time sync interrupt registers
      igb: enable internal PPS for the i210
      igb: enable auxiliary PHC functions for the i210

Rick Dunn (1):
      Bluetooth: btusb: Add Broadcom patchram support for ASUSTek devices

Rickard Strandqvist (14):
      rtlwifi: rtl8192de: fw.c: Remove unused function
      rtlwifi: rtl8192ee: trx.c: Remove unused function
      rtlwifi: rtl8723be: phy.c: Remove unused function
      net: ethernet: chelsio: cxgb3: mc5.c: Remove some unused functions
      net: fddi: skfp: smt.c: Remove unused function
      isdn: hisax: hfc4s8s_l1: Remove some unused functions
      net: ethernet: cisco: enic: enic_dev: Remove some unused functions
      net: xfrm: xfrm_algo: Remove unused function
      net: sched: sch_teql: Remove unused function
      atm: lanai: Remove unused function
      atm: horizon: Remove some unused functions
      b43legacy: Remove unused b43legacy_radio_set_tx_iq()
      Bluetooth: Remove unused function
      i40e: i40e_fcoe.c: Remove unused function

Robert Dolca (2):
      NFC: PN544: GPIO access that may sleep
      NFC: Add ACPI support for NXP PN544

Roger Chen (6):
      GMAC: add driver for Rockchip RK3288 SoCs integrated GMAC
      GMAC: define clock ID used for GMAC
      GMAC: modify CRU config for Rockchip RK3288 SoCs integrated GMAC
      ARM: dts: rockchip: add gmac info for rk3288
      ARM: dts: rockchip: enable gmac on RK3288 evb board
      GMAC: add document for Rockchip RK3288 GMAC

Romain Perier (4):
      net: stmmac: dwmac-rk: Don't set the regulator voltage for phy from the driver
      ARM: dts: Add regulator voltage settings for vcc_phy in rk3288-evb.dtsi
      net: stmmac: dwmac-rk: Use standard devicetree property for phy regulator
      dt-bindings: Document phy-supply property in rockchip-dwmac

Roopa Prabhu (13):
      bridge: support for multiple vlans and vlan ranges in setlink and dellink requests
      rtnetlink: new filter RTEXT_FILTER_BRVLAN_COMPRESSED
      bridge: new function to pack vlans into ranges during gets
      bridge: fix uninitialized variable warning
      bridge: fix setlink/dellink notifications
      netdev: introduce new NETIF_F_HW_SWITCH_OFFLOAD feature flag for switch device offloads
      bridge: add flags argument to ndo_bridge_setlink and ndo_bridge_dellink
      swdevice: add new apis to set and del bridge port attributes
      bridge: offload bridge port attributes to switch asic if feature flag set
      rocker: set feature NETIF_F_HW_SWITCH_OFFLOAD
      bonding: handle NETIF_F_HW_SWITCH_OFFLOAD flag and add ndo_bridge_setlink/dellink handlers
      team: handle NETIF_F_HW_SWITCH_OFFLOAD flag and add ndo_bridge_setlink/dellink handlers
      bridge: add missing bridge port check for offloads

Rosen, Rami (1):
      bridge: remove oflags from setlink/dellink.

Sabrina Dubroca (4):
      b43: stop leds during suspend
      pktgen: fix UDP checksum computation
      gre/ipip: use be16 variants of netlink functions
      net: fix a typo in skb_checksum_validate_zero_check

Saeed Mahameed (1):
      net/mlx4_en: Use ethtool cmd->autoneg as a hint for ethtool set settings

Salam Noureddine (1):
      dev: add per net_device packet type chains

Sasha Levin (1):
      tipc: correctly handle releasing a not fully initialized sock

Sathya Perla (5):
      be2net: support TX batching using skb->xmit_more flag
      be2net: move un-exported routines from be.h to respective src files
      be2net: remove duplicate code in be_cmd_rx_filter()
      be2net: refactor be_set_rx_mode() and be_vid_config() for readability
      be2net: avoid unncessary swapping of fields in eth_tx_wrb

Satish Ashok (1):
      bonding: fix LACP PDU not sent on slave port sometimes

SenthilKumar Jegadeesan (2):
      ath10k: prevent setting wrong key idx for station
      ath10k: add log level configuration for fw_dbglog

Sergey Ryazanov (1):
      ath5k: fix spontaneus AR5312 freezes

Shannon Nelson (7):
      i40e/i40evf: find partition_id in npar mode
      i40e: limit WoL and link settings to partition 1
      i40e: limit sriov to partition 1 of NPAR configurations
      i40e/i40evf: AdminQ updates ww36
      i40e: don't give up on DCB error after reset
      i40e: add more struct size checks
      i40e: AQ API updates for new commands

Shaohui Xie (7):
      net/fsl: remove reset from xgmac_mdio
      net/fsl: remove irq assignment from xgmac_mdio
      net/fsl: remove hardcoded clock setting from xgmac_mdio
      net/fsl: fix a bug in xgmac_mdio
      net/fsl: replace (1 << x) with BIT(x) for bit definitions in xgmac_mdio
      net/fsl: drop in_be32() & out_be32() in xgmac_mdio
      net/fsl: Replace spin_event_timeout() with arch independent in xgmac_mdio

Sharon Dvir (1):
      wireless: docs: fix 'make pdfdocs' failure

Shrikrishna Khare (4):
      Driver: Vmxnet3: Make Rx ring 2 size configurable
      Driver: Vmxnet3: Reinitialize vmxnet3 backend on wakeup from hibernate
      Driver: Vmxnet3: Fix ethtool -S to return correct rx queue stats
      Driver: Vmxnet3: Change the hex constant to its decimal equivalent

Shruti Kanetkar (1):
      net/fsl_pq_mdio: Document supported compatibles

Simon Wunderlich (2):
      batman-adv: remove obsolete variable primary_iface from orig_node
      batman-adv: Start new development cycle

Siva Mannem (1):
      bridge: Let bridge not age 'externally' learnt FDB entries, they are removed when 'external' entity notifies the aging

Sonic Zhang (4):
      stmmac: if force_thresh_dma_mode is set, pass tc to both txmode and rxmode in tx_hard_error_bump_tc interrupt
      stmmac: hardware TX COE doesn't work when force_thresh_dma_mode is set
      stmmac: Add an optional device tree property "snps,burst_len"
      stmmac: DMA threshold mode or SF mode can be different among multiple device instance

Sowmini Varadhan (1):
      rds: Make rds_message_copy_from_user() return 0 on success.

Sravanthi Tangeda (2):
      i40e: Dump Stats string removed from debugfs help command
      i40e/i40evf: Bump i40e and i40evf versions

Stefan Schmidt (6):
      ieee802154/at86rf230: Remove unneeded blank lines
      ieee802154/at86rf230: Align to opening parenthesis
      ieee802154/at86rf230: Fix typo unkown -> unknown
      ieee802154/cc2520: Remove extra blank lines
      ieee802154/mrf24j40: Fix typo begining -> beginning
      ieee802154/mrf24j40: Fix alignment of parenthesis

Stephane Grosjean (7):
      can: peak_usb: export ctrlmode_supported to adapter specific definition
      can: peak_usb: add adapter BEC callback definition
      can: peak_usb: upgrade core to data bittiming specs
      can: peak_usb: upgrade core to new struct canfd_frame
      can: peak_usb: export pcan_usb_pro functions
      can: peak_usb: add peak_usb_netif_rx() new function
      can: peak_usb: add support for PEAK new CANFD USB adapters

Stephen Rothwell (1):
      rhashtable: using ERR_PTR requires linux/err.h

Sujith Manoharan (36):
      mac80211: Move IEEE80211_TX_CTL_PS_RESPONSE
      mac80211: Fix accounting of multicast frames
      ath10k: Fix DMA burst size
      ath10k: Enable RX batching
      ath10k: Remove unused htt->max_throughput_mbps
      ath9k: Update PCI IDs for AR9565
      ath9k: Fix no-ack frame status
      ath9k: Update QCA953x initvals
      ath9k: Update AR955x initvals
      ath9k: Add a macro to identify PCOEM chips
      ath9k: Fix manual peak calibration initialization
      ath9k: Set correct peak detect threshold
      ath9k: Enable manual peak detect calibration
      ath9k: Remove ATH9K_HW_WOW_DEVICE_CAPABLE
      ath9k: Return early for error conditions
      ath9k: Remove redundant device_can_wakeup() check
      ath9k: Check early for multi-vif/STA conditions
      ath9k: Check multi-channel context for WOW
      ath9k: Fix wow init/deinit
      ath9k: Check WOW triggers properly
      ath9k: Remove unused BMISS processing
      ath9k: Remove ath9k_hw_wow_event_to_string
      ath9k: Add a debugfs file for WOW
      ath9k: Simplify user pattern configuration
      ath9k: Add a HW structure for WOW
      ath9k: Register max WOW patterns
      ath9k: Move WOW registers to reg_wow.h
      ath9k: Remove incorrect register macros
      ath9k: Cleanup reg_wow.h
      ath9k: Fix max pattern check
      ath9k: Add support for more WOW patterns
      ath9k: Register correct WOW details with mac80211
      ath9k: Fix issues with WoW enable
      ath9k: Program AR_WA correctly
      ath9k: Clear TSF2 properly
      ath9k: Choose correct rate for 2GHz channel

Syam Sidhardhan (1):
      openvswitch: Remove unnecessary version.h inclusion

Szymon Janc (2):
      Bluetooth: Fix reporting invalid RSSI for LE devices
      Bluetooth: Fix sending Read Remote Extended Features command

Sébastien Barré (1):
      tcp: avoid reducing cwnd when ACK+DSACK is received

Taehee Yoo (2):
      rtlwifi: add support to send beacon frame.
      rtlwifi: rtl8192cu: Set fw_ready flag

Takashi Iwai (3):
      tun: Use static attribute groups for sysfs entries
      xen-netfront: Use static attribute groups for sysfs entries
      hso: Use static attribute groups for sysfs entry

Thomas Graf (28):
      rhashtable: Do hashing inside of rhashtable_lookup_compare()
      rhashtable: Use rht_obj() instead of manual offset calculation
      rhashtable: Convert bucket iterators to take table and index
      rhashtable: Factor out bucket_tail() function
      nft_hash: Remove rhashtable_remove_pprev()
      spinlock: Add spin_lock_bh_nested()
      rhashtable: Per bucket locks & deferred expansion/shrinking
      rhashtable: Supports for nulls marker
      netlink: Lockless lookup with RCU grace period in socket release
      netlink: Warn on unordered or illegal nla_nest_cancel() or nlmsg_cancel()
      rhashtable: Lower/upper bucket may map to same lock while shrinking
      rhashtable: Add MAINTAINERS entry
      vxlan: Group Policy extension
      vxlan: Only bind to sockets with compatible flags enabled
      openvswitch: Rename GENEVE_TUN_OPTS() to TUN_METADATA_OPTS()
      openvswitch: Allow for any level of nesting in flow attributes
      openvswitch: Support VXLAN Group Policy extension
      act_connmark: Add missing dependency on NF_CONNTRACK_MARK
      rhashtable: rhashtable_remove() must unlink in both tbl and future_tbl
      vxlan: Only set has-GBP bit in header if any other bits would be set
      rhashtable: key_hashfn() must return full hash value
      rhashtable: Use a single bucket lock for sibling buckets
      rhashtable: Wait for RCU readers after final unzip work
      rhashtable: Dump bucket tables on locking violation under PROVE_LOCKING
      rhashtable: Add more lock verification
      rhashtable: Avoid bucket cross reference after removal
      rhashtable: Fix remove logic to avoid cross references between buckets
      openvswitch: Only set TUNNEL_VXLAN_OPT if VXLAN-GBP metadata is set

Thomas Richter (1):
      qeth: Remove unneeded structure member

Tobias Waldekranz (2):
      dsa: do not dereference non-existing routing table
      dsa: correctly determine the number of switches in a system

Tom Herbert (10):
      ip: Move checksum convert defines to inet
      ip: IP cmsg cleanup
      ip: Add offset parameter to ip_cmsg_recv
      ip: Add offset parameter to ip_cmsg_recv
      vxlan: Improve support for header flags
      udp: pass udp_offload struct to UDP gro callbacks
      vxlan: Remote checksum offload
      udp: Do not require sock in udp_tunnel_xmit_skb
      vxlan: Eliminate dependency on UDP socket in transmit path
      net: add skb functions to process remote checksum offload

Tony Lindgren (3):
      net: cpsw: Add a minimal cpsw-common module for shared code
      net: davinci_emac: Get device dm816x MAC address using the cpsw code
      net: davinci_emac: Get device MAC on 3517

Toshi Kikuchi (2):
      ath10k: read calibration data from Device Tree
      Bluetooth: btusb: support public address configuration for ath3012

Toshiaki Makita (2):
      bridge: Add ability to enable TSO
      bridge: Fix inability to add non-vlan fdb entry

Troy Tan (6):
      rtlwifi: rtl8821ae: Simplify loading of WOWLAN firmware
      rtlwifi: rtl8192ee: Fix adhoc fail
      rtlwifi: rtl8192ee: Fix TX hang due to failure to update TX write point
      rtlwifi: rtl8192ee: Fix parsing of received packet
      rtlwifi: rtl8192ee: Fix DMA stalls
      rtlwifi: rtl8192ee: Fix handling of new style descriptors

Vadim Kochan (2):
      wireless: Support of IFLA_INFO_KIND rtnl attribute
      nl80211: Allow set network namespace by fd

Vaishali Thakkar (1):
      brcmfmac: Use put_unaligned_le32

Varka Bhadram (3):
      cc2520: use devm_kzalloc(.., sizeof(*pointer), ..) pattern
      cc2520: remove 'ret' goto label
      cc2520: fix zero perm_extended_addr address

Vasanthakumar Thiagarajan (1):
      ath10k: Fix potential Rx ring corruption

Vasu Dev (2):
      i40e: remove VN2VN related mac filters
      i40e: use dev_port for fcoe netdev

Vasundhara Volam (6):
      be2net: move definitions related to FW cmdsfrom be_hw.h to be_cmds.h
      be2net: replace (1 << x) with BIT(x)
      be2net: refactor code that checks flash file compatibility
      be2net: avoid flashing SH-B0 UFI image on SH-P2 chip
      be2net: use offset based FW flashing for Skyhawk chip
      be2net: process port misconfig async event

Vincenzo Maffione (1):
      drivers: net: xen-netfront: remove residual dead code

Vivien Didelot (2):
      net: dsa/mv88e6xxx: add reg read and write debug
      net: dsa/mv88e6352: make mv88e6352_wait generic

Vlad Yasevich (8):
      ipv6: pull cork initialization into its own function.
      ipv6: Append sending data to arbitrary queue
      ipv6: introduce ipv6_make_skb
      ipv6: Introduce udpv6_send_skb()
      udpv6: Add lockless sendmsg() support
      ipv6: Allow for partial checksums on non-ufo packets
      ipv6: Fix fragment id assignment on LE arches.
      ipv6: Make __ipv6_select_ident static

Vladimir Kondratiev (31):
      wil6210: ADDBA/DELBA flows
      wil6210: simple ADDBA on originator (Tx) side
      wil6210: allow to configure ADDBA request
      wil6210: improve debugfs for reorder buffer
      wil6210: fix disconnect 1 STA in AP
      wil6210: improve debugfs for VRING
      wil6210: control AMSDU on Tx side of Block Ack
      wil6210: delba for responder
      wil6210: fix max. MPDU size
      wil6210: consider SNAP header in MTU calculations
      wil6210: Increase number of associated stations
      wil6210: use bitmap API for "status"
      wil6210: fix Tx VRING for STA mode
      wil6210: rework debugfs for BACK
      wil6210: detect HW capabilities
      wil6210: use HW capabilities mask in reset
      wil6210: add advanced interrupt moderation
      wil6210: RX high threshold interrupt configuration
      wil6210: fix reordering for MCAST
      wil6210: Tx/Rx descriptors documentation
      wil6210: workaround for BACK establishment race
      wil6210: relax spinlocks in rx reorder
      wil6210: sync WMI with firmware
      wil6210: implement skb Tx status reporting
      wil6210: implement cfg80211 probe_client() op
      wil6210: move Rx reorder buffer allocation out of spinlock
      wil6210: remove old Tx work-around
      wil6210: avoid Tx descriptor double write
      wil6210: fix race between xmit and Tx vring de-allocation
      wil6210: more Tx debug
      wil6210: print ciphers in debug info

Vladimir Shulman (4):
      wil6210: Add Tx queue len configuration
      wil6210: tuning rings size
      wil6210: interrupt moderation configuration update
      wil6210: remove unnecessary interrupt moderation module parameters

WANG Cong (2):
      ipv6: fix redefinition of in6_pktinfo and ip6_mtuinfo
      doc: fix the compile error of txtimestamp.c

Willem de Bruijn (6):
      doc: fix the compile fix of txtimestamp.c
      packet: make packet too small warning match condition
      ipv6: directly include libc-compat.h in ipv6.h
      net-timestamp: no-payload option
      net-timestamp: no-payload only sysctl
      net-timestamp: no-payload option in txtimestamp test

Wilson Kok (2):
      bonding: fix bond_open() don't always set slave active flag
      bonding: fix incorrect lacp mux state when agg not active

Wingman Kwok (2):
      net: netcp: Add Keystone NetCP GbE driver
      net: netcp: Enhance GBE driver to support 10G Ethernet

Wolfram Sang (2):
      net: ieee802154: don't use devm_pinctrl_get_select_default() in probe
      ath5k: drop owner assignment from platform_drivers

Xander Huff (5):
      net/macb: Adding comments to various #defs to make interpretation easier
      net/macb: improved ethtool statistics support
      net/macb: Fix comments to meet style guidelines
      net/macb: Add whitespace around arithmetic operators
      net/macb: Create gem_ethtool_ops for new statistics functions

Xinming Hu (9):
      mwifiex: report tdls peers in debugfs
      mwifiex: add bcn_rcv_cnt and bcn_miss_cnt in getlog debugfs
      mwifiex: add rx histogram statistics support
      mwifiex: move pm_wakeup_card_complete definition to usb.c
      mwifiex: move debug_data dump function to common utililty file
      mwifiex: save driver information to file when firmware dump
      mwifiex: save sdio register values before firmware dump
      mwifiex: do not send key material cmd when delete wep key
      mwifiex: make tx packet 64 byte DMA aligned

Yanbo Li (1):
      ath10k: Enable the MCS8 and MCS9 at 2.4G band

Ying Xue (29):
      rhashtable: fix missing header
      list_nulls: fix missing header
      rhashtable: optimize rhashtable_lookup routine
      rhashtable: introduce rhashtable_wakeup_worker helper function
      rhashtable: involve rhashtable_lookup_insert routine
      rhashtable: future table needs to be traversed when remove an object
      rhashtable: avoid unnecessary wakeup for worker queue
      rhashtable: initialize atomic nelems variable
      tipc: convert tipc reference table to use generic rhashtable
      tipc: remove tipc_core_start/stop routines
      tipc: remove unnecessary wrapper functions of kernel timer APIs
      tipc: cleanup core.c and core.h files
      tipc: feed tipc sock pointer to tipc_sk_timeout routine
      tipc: remove unused tipc_link_get_max_pkt routine
      tipc: involve namespace infrastructure
      tipc: make tipc node table aware of net namespace
      tipc: make bearer list support net namespace
      tipc: make tipc broadcast link support net namespace
      tipc: make tipc socket support net namespace
      tipc: name tipc name table support net namespace
      tipc: make tipc node address support net namespace
      tipc: make subscriber server support net namespace
      tipc: make tipc random value aware of net namespace
      tipc: make netlink support net namespace
      rhashtable: involve rhashtable_lookup_compare_insert routine
      netlink: eliminate nl_sk_hash_lock
      rhashtable: add a note for grow and shrink decision functions
      tipc: remove redundant timer defined in tipc_sock struct
      rhashtable: Fix race in rhashtable_destroy() and use regular work_struct

Yishai Hadas (10):
      net/mlx4_core: Maintain a persistent memory for mlx4 device
      net/mlx4_core: Set device configuration data to be persistent across reset
      net/mlx4_core: Refactor the catas flow to work per device
      net/mlx4_core: Enhance the catas flow to support device reset
      net/mlx4_core: Activate reset flow upon fatal command cases
      net/mlx4_core: Manage interface state for Reset flow cases
      net/mlx4_core: Handle AER flow properly
      net/mlx4_core: Enable device recovery flow with SRIOV
      net/mlx4_core: Reset flow activation upon SRIOV fatal command cases
      IB/mlx4: Reset flow support for IB kernel ULPs

Yogesh Ashok Powar (2):
      mwifiex: add support for SD8801
      mwifiex: add support for USB8801

Yuchung Cheng (1):
      tcp: don't include Fast Open option in SYN-ACK on pure SYN-data

Zhangfei Gao (2):
      Documentation: add Device tree bindings for Hisilicon hip04 ethernet
      net: hisilicon: new hip04 MDIO driver

Zubair Lutfullah Kakakhel (1):
      dm9000: Add regulator and reset support to dm9000

chas williams - CONTRACTOR (1):
      atm: remove deprecated use of pci api

dingtianhong (1):
      net: hisilicon: new hip04 ethernet driver

hayeswang (10):
      r8152: call rtl_start_rx after netif_carrier_on
      r8152: check the status before submitting rx
      r8152: replace tasklet with NAPI
      r8152: adjust rx_bottom
      r8152: adjust lpm timer
      r8152: check linking status with netif_carrier_ok
      r8152: check RTL8152_UNPLUG for rtl8152_close
      r8152: adjust the line feed for hw_features
      r8152: replace get_protocol with vlan_get_protocol
      r8152: use BIT macro

kbuild test robot (1):
      can: dev: fix semicolon.cocci warnings

stephen hemminger (1):
      gre: allow live address change

zhuyj (1):
      ipv6:icmp:remove unnecessary brackets

 Documentation/DocBook/80211.tmpl                                                     |    5 +-
 Documentation/devicetree/bindings/net/amd-xgbe-phy.txt                               |   21 +
 Documentation/devicetree/bindings/net/davicom-dm9000.txt                             |    4 +
 Documentation/devicetree/bindings/net/fsl-fec.txt                                    |    2 +
 Documentation/devicetree/bindings/net/fsl-tsec-phy.txt                               |   11 +-
 Documentation/devicetree/bindings/net/hisilicon-hip04-net.txt                        |   88 +
 Documentation/devicetree/bindings/net/keystone-netcp.txt                             |  197 +++
 Documentation/devicetree/bindings/net/nfc/st21nfca.txt                               |   11 +-
 Documentation/devicetree/bindings/net/nfc/st21nfcb.txt                               |    4 +-
 Documentation/devicetree/bindings/net/rockchip-dwmac.txt                             |   68 +
 Documentation/devicetree/bindings/net/sti-dwmac.txt                                  |   14 +-
 Documentation/devicetree/bindings/net/stmmac.txt                                     |    1 +
 Documentation/devicetree/bindings/net/wireless/qcom,ath10k.txt                       |   30 +
 Documentation/devicetree/bindings/phy/phy-miphy365x.txt                              |   15 +-
 Documentation/devicetree/bindings/phy/phy-stih407-usb.txt                            |   10 +-
 Documentation/kernel-parameters.txt                                                  |   12 +
 Documentation/networking/filter.txt                                                  |    4 +-
 Documentation/networking/ip-sysctl.txt                                               |   29 +
 Documentation/networking/nf_conntrack-sysctl.txt                                     |    3 +-
 Documentation/networking/openvswitch.txt                                             |   13 +
 Documentation/networking/timestamping.txt                                            |   21 +
 Documentation/networking/timestamping/txtimestamp.c                                  |   38 +-
 Documentation/rfkill.txt                                                             |    3 +
 Documentation/sysctl/net.txt                                                         |    8 +
 MAINTAINERS                                                                          |   19 +-
 arch/arm/boot/dts/am3517.dtsi                                                        |    1 +
 arch/arm/boot/dts/rk3288-evb-rk808.dts                                               |   23 +
 arch/arm/boot/dts/rk3288-evb.dtsi                                                    |   19 +
 arch/arm/boot/dts/rk3288.dtsi                                                        |   54 +
 arch/arm/boot/dts/stih407-family.dtsi                                                |    9 +
 arch/arm/boot/dts/stih410.dtsi                                                       |   70 +
 arch/arm/boot/dts/stih415.dtsi                                                       |   12 +-
 arch/arm/boot/dts/stih416.dtsi                                                       |   22 +-
 arch/arm/configs/multi_v7_defconfig                                                  |    1 +
 arch/arm/mach-sa1100/assabet.c                                                       |    2 +-
 arch/arm/mach-sa1100/collie.c                                                        |    2 +-
 arch/arm/mach-sa1100/h3100.c                                                         |    2 +-
 arch/arm/mach-sa1100/h3600.c                                                         |    2 +-
 arch/microblaze/kernel/timer.c                                                       |    1 +
 crypto/af_alg.c                                                                      |   40 +-
 crypto/algif_hash.c                                                                  |   45 +-
 crypto/algif_skcipher.c                                                              |   74 +-
 drivers/acpi/event.c                                                                 |    7 +-
 drivers/atm/eni.c                                                                    |   33 +-
 drivers/atm/fore200e.c                                                               |   22 +-
 drivers/atm/he.c                                                                     |  125 +-
 drivers/atm/he.h                                                                     |    4 +-
 drivers/atm/horizon.c                                                                |   24 -
 drivers/atm/idt77252.c                                                               |  107 +-
 drivers/atm/iphase.c                                                                 |   54 +-
 drivers/atm/lanai.c                                                                  |   23 +-
 drivers/atm/nicstar.c                                                                |   60 +-
 drivers/atm/solos-pci.c                                                              |   26 +-
 drivers/atm/zatm.c                                                                   |   17 +-
 drivers/bcma/bcma_private.h                                                          |   18 +-
 drivers/bcma/driver_chipcommon.c                                                     |   20 +-
 drivers/bcma/driver_pci.c                                                            |   68 +-
 drivers/bcma/host_pci.c                                                              |    6 +-
 drivers/bcma/host_soc.c                                                              |    2 +-
 drivers/bcma/main.c                                                                  |   76 +-
 drivers/bcma/scan.c                                                                  |   67 +-
 drivers/bcma/sprom.c                                                                 |    3 +-
 drivers/bluetooth/ath3k.c                                                            |   10 +
 drivers/bluetooth/bfusb.c                                                            |    2 +
 drivers/bluetooth/btmrvl_drv.h                                                       |    5 +-
 drivers/bluetooth/btmrvl_main.c                                                      |   32 +-
 drivers/bluetooth/btmrvl_sdio.c                                                      |    6 +-
 drivers/bluetooth/btusb.c                                                            |  710 +++++++-
 drivers/clk/rockchip/clk-rk3288.c                                                    |   14 +-
 drivers/clocksource/arm_arch_timer.c                                                 |    1 +
 drivers/infiniband/hw/cxgb4/cm.c                                                     |  118 +-
 drivers/infiniband/hw/cxgb4/cq.c                                                     |   60 +-
 drivers/infiniband/hw/cxgb4/device.c                                                 |   12 +-
 drivers/infiniband/hw/cxgb4/ev.c                                                     |   12 +-
 drivers/infiniband/hw/cxgb4/mem.c                                                    |   22 +-
 drivers/infiniband/hw/cxgb4/qp.c                                                     |   62 +-
 drivers/infiniband/hw/cxgb4/t4.h                                                     |  126 +-
 drivers/infiniband/hw/cxgb4/t4fw_ri_api.h                                            |  812 +++++-----
 drivers/infiniband/hw/mlx4/ah.c                                                      |    1 +
 drivers/infiniband/hw/mlx4/alias_GUID.c                                              |    2 +-
 drivers/infiniband/hw/mlx4/cq.c                                                      |   57 +
 drivers/infiniband/hw/mlx4/mad.c                                                     |    3 +-
 drivers/infiniband/hw/mlx4/main.c                                                    |  246 ++-
 drivers/infiniband/hw/mlx4/mlx4_ib.h                                                 |   26 +-
 drivers/infiniband/hw/mlx4/mr.c                                                      |    6 +-
 drivers/infiniband/hw/mlx4/qp.c                                                      |   90 +-
 drivers/infiniband/hw/mlx4/srq.c                                                     |    8 +
 drivers/infiniband/hw/mlx4/sysfs.c                                                   |    6 +-
 drivers/infiniband/hw/mlx5/mem.c                                                     |    2 +-
 drivers/infiniband/hw/nes/nes_nic.c                                                  |   13 +-
 drivers/isdn/hardware/mISDN/mISDNipac.c                                              |   12 +-
 drivers/isdn/hardware/mISDN/w6692.c                                                  |    6 +-
 drivers/isdn/hisax/hfc4s8s_l1.c                                                      |   21 -
 drivers/isdn/isdnloop/isdnloop.c                                                     |   64 +-
 drivers/isdn/sc/init.c                                                               |   15 +-
 drivers/misc/vmw_vmci/vmci_queue_pair.c                                              |   16 +-
 drivers/net/arcnet/com20020-pci.c                                                    |    3 +
 drivers/net/bonding/bond_3ad.c                                                       |   55 +-
 drivers/net/bonding/bond_main.c                                                      |  121 +-
 drivers/net/bonding/bond_options.c                                                   |    6 +-
 drivers/net/can/at91_can.c                                                           |    2 -
 drivers/net/can/bfin_can.c                                                           |    1 +
 drivers/net/can/c_can/c_can.c                                                        |    2 +-
 drivers/net/can/cc770/cc770.c                                                        |    1 +
 drivers/net/can/dev.c                                                                |    5 +-
 drivers/net/can/flexcan.c                                                            |    2 -
 drivers/net/can/janz-ican3.c                                                         |    7 +-
 drivers/net/can/m_can/m_can.c                                                        |    1 +
 drivers/net/can/pch_can.c                                                            |    1 +
 drivers/net/can/rcar_can.c                                                           |    1 +
 drivers/net/can/softing/softing_main.c                                               |    1 +
 drivers/net/can/spi/mcp251x.c                                                        |    1 +
 drivers/net/can/ti_hecc.c                                                            |    1 +
 drivers/net/can/usb/Kconfig                                                          |   22 +-
 drivers/net/can/usb/ems_usb.c                                                        |    1 +
 drivers/net/can/usb/esd_usb2.c                                                       |    1 +
 drivers/net/can/usb/kvaser_usb.c                                                     |  723 ++++++---
 drivers/net/can/usb/peak_usb/Makefile                                                |    2 +-
 drivers/net/can/usb/peak_usb/pcan_ucan.h                                             |  222 +++
 drivers/net/can/usb/peak_usb/pcan_usb.c                                              |    4 +-
 drivers/net/can/usb/peak_usb/pcan_usb_core.c                                         |   83 +-
 drivers/net/can/usb/peak_usb/pcan_usb_core.h                                         |   26 +-
 drivers/net/can/usb/peak_usb/pcan_usb_fd.c                                           | 1095 +++++++++++++
 drivers/net/can/usb/peak_usb/pcan_usb_pro.c                                          |   20 +-
 drivers/net/can/usb/peak_usb/pcan_usb_pro.h                                          |   13 +
 drivers/net/can/usb/usb_8dev.c                                                       |    1 +
 drivers/net/dsa/bcm_sf2.c                                                            |   88 +-
 drivers/net/dsa/bcm_sf2_regs.h                                                       |    4 +
 drivers/net/dsa/mv88e6131.c                                                          |    3 +-
 drivers/net/dsa/mv88e6352.c                                                          |   13 +-
 drivers/net/dsa/mv88e6xxx.c                                                          |    9 +
 drivers/net/ethernet/3com/typhoon.c                                                  |    4 +-
 drivers/net/ethernet/alteon/acenic.c                                                 |    8 +-
 drivers/net/ethernet/amd/Kconfig                                                     |    2 +-
 drivers/net/ethernet/amd/amd8111e.c                                                  |    4 +-
 drivers/net/ethernet/amd/pcnet32.c                                                   |    2 +-
 drivers/net/ethernet/amd/xgbe/xgbe-debugfs.c                                         |    2 +-
 drivers/net/ethernet/amd/xgbe/xgbe-desc.c                                            |   32 +-
 drivers/net/ethernet/amd/xgbe/xgbe-dev.c                                             |   66 +-
 drivers/net/ethernet/amd/xgbe/xgbe-drv.c                                             |   78 +-
 drivers/net/ethernet/amd/xgbe/xgbe-main.c                                            |  203 ++-
 drivers/net/ethernet/amd/xgbe/xgbe-mdio.c                                            |   29 +-
 drivers/net/ethernet/amd/xgbe/xgbe-ptp.c                                             |   12 +-
 drivers/net/ethernet/amd/xgbe/xgbe.h                                                 |   31 +-
 drivers/net/ethernet/apm/xgene/xgene_enet_hw.c                                       |   94 +-
 drivers/net/ethernet/apm/xgene/xgene_enet_main.c                                     |  109 +-
 drivers/net/ethernet/apm/xgene/xgene_enet_main.h                                     |    3 +
 drivers/net/ethernet/atheros/atl1c/atl1c_main.c                                      |    4 +-
 drivers/net/ethernet/atheros/atl1e/atl1e_main.c                                      |    9 +-
 drivers/net/ethernet/atheros/atlx/atl1.c                                             |    4 +-
 drivers/net/ethernet/atheros/atlx/atl2.c                                             |   14 +-
 drivers/net/ethernet/broadcom/bnx2.c                                                 |    4 +-
 drivers/net/ethernet/broadcom/bnx2x/bnx2x.h                                          |    6 +-
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c                                      |    4 +-
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c                                     |   14 +-
 drivers/net/ethernet/broadcom/tg3.c                                                  |   29 +-
 drivers/net/ethernet/brocade/bna/bnad.c                                              |    4 +-
 drivers/net/ethernet/cadence/macb.c                                                  |   84 +-
 drivers/net/ethernet/cadence/macb.h                                                  |  631 +++++---
 drivers/net/ethernet/chelsio/cxgb/sge.c                                              |    4 +-
 drivers/net/ethernet/chelsio/cxgb3/mc5.c                                             |   16 -
 drivers/net/ethernet/chelsio/cxgb3/sge.c                                             |    6 +-
 drivers/net/ethernet/chelsio/cxgb3/t3_hw.c                                           |    6 +-
 drivers/net/ethernet/chelsio/cxgb4/Makefile                                          |    2 +-
 drivers/net/ethernet/chelsio/cxgb4/clip_tbl.c                                        |  317 ++++
 drivers/net/ethernet/chelsio/cxgb4/clip_tbl.h                                        |   41 +
 drivers/net/ethernet/chelsio/cxgb4/cxgb4.h                                           |  169 +-
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_dcb.c                                       |  100 +-
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_dcb.h                                       |   11 +
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c                                   | 1917 +++++++++++++++++++++-
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.h                                   |   33 +
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c                                      | 1003 ++++--------
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_uld.h                                       |    3 -
 drivers/net/ethernet/chelsio/cxgb4/l2t.c                                             |   13 +-
 drivers/net/ethernet/chelsio/cxgb4/sge.c                                             |  270 ++--
 drivers/net/ethernet/chelsio/cxgb4/t4_hw.c                                           | 1543 ++++++++++++------
 drivers/net/ethernet/chelsio/cxgb4/t4_hw.h                                           |   24 +
 drivers/net/ethernet/chelsio/cxgb4/t4_msg.h                                          |  367 +++--
 drivers/net/ethernet/chelsio/cxgb4/t4_pci_id_tbl.h                                   |    1 +
 drivers/net/ethernet/chelsio/cxgb4/t4_regs.h                                         | 3392 +++++++++++++++++++++++++++------------
 drivers/net/ethernet/chelsio/cxgb4/t4_values.h                                       |  124 ++
 drivers/net/ethernet/chelsio/cxgb4/t4fw_api.h                                        |  101 ++
 drivers/net/ethernet/chelsio/cxgb4/t4fw_version.h                                    |   48 +
 drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c                                  |   44 +-
 drivers/net/ethernet/chelsio/cxgb4vf/sge.c                                           |   57 +-
 drivers/net/ethernet/chelsio/cxgb4vf/t4vf_defs.h                                     |    4 +-
 drivers/net/ethernet/chelsio/cxgb4vf/t4vf_hw.c                                       |   43 +-
 drivers/net/ethernet/cirrus/ep93xx_eth.c                                             |    6 +-
 drivers/net/ethernet/cisco/enic/enic.h                                               |   16 +-
 drivers/net/ethernet/cisco/enic/enic_dev.c                                           |   56 -
 drivers/net/ethernet/cisco/enic/enic_dev.h                                           |    5 -
 drivers/net/ethernet/cisco/enic/enic_ethtool.c                                       |   21 +-
 drivers/net/ethernet/cisco/enic/enic_main.c                                          |  179 ++-
 drivers/net/ethernet/cisco/enic/vnic_stats.h                                         |    5 +
 drivers/net/ethernet/cisco/enic/vnic_wq.c                                            |    3 +
 drivers/net/ethernet/cisco/enic/vnic_wq.h                                            |    1 +
 drivers/net/ethernet/davicom/dm9000.c                                                |   40 +
 drivers/net/ethernet/dec/tulip/winbond-840.c                                         |    2 +-
 drivers/net/ethernet/emulex/benet/be.h                                               |  203 +--
 drivers/net/ethernet/emulex/benet/be_cmds.c                                          |  231 ++-
 drivers/net/ethernet/emulex/benet/be_cmds.h                                          |  218 ++-
 drivers/net/ethernet/emulex/benet/be_ethtool.c                                       |   16 +-
 drivers/net/ethernet/emulex/benet/be_hw.h                                            |  240 +--
 drivers/net/ethernet/emulex/benet/be_main.c                                          |  951 +++++++----
 drivers/net/ethernet/freescale/Kconfig                                               |    3 +-
 drivers/net/ethernet/freescale/fec.h                                                 |    3 +
 drivers/net/ethernet/freescale/fec_main.c                                            |  145 +-
 drivers/net/ethernet/freescale/fec_ptp.c                                             |   16 +-
 drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c                                |   95 +-
 drivers/net/ethernet/freescale/fs_enet/fs_enet.h                                     |    1 +
 drivers/net/ethernet/freescale/gianfar.c                                             |   17 +-
 drivers/net/ethernet/freescale/gianfar.h                                             |    2 +-
 drivers/net/ethernet/freescale/xgmac_mdio.c                                          |  130 +-
 drivers/net/ethernet/hisilicon/Kconfig                                               |    9 +
 drivers/net/ethernet/hisilicon/Makefile                                              |    1 +
 drivers/net/ethernet/hisilicon/hip04_eth.c                                           |  971 +++++++++++
 drivers/net/ethernet/hisilicon/hip04_mdio.c                                          |  186 +++
 drivers/net/ethernet/ibm/ehea/ehea_main.c                                            |    4 +-
 drivers/net/ethernet/ibm/emac/core.c                                                 |    2 +-
 drivers/net/ethernet/intel/Kconfig                                                   |   11 +
 drivers/net/ethernet/intel/e1000/e1000_ethtool.c                                     |    3 +-
 drivers/net/ethernet/intel/e1000/e1000_main.c                                        |   20 +-
 drivers/net/ethernet/intel/e1000e/e1000.h                                            |    2 +-
 drivers/net/ethernet/intel/e1000e/netdev.c                                           |   41 +-
 drivers/net/ethernet/intel/e1000e/ptp.c                                              |    5 +-
 drivers/net/ethernet/intel/fm10k/fm10k_main.c                                        |   44 +-
 drivers/net/ethernet/intel/fm10k/fm10k_mbx.c                                         |    5 +-
 drivers/net/ethernet/intel/fm10k/fm10k_netdev.c                                      |   15 +-
 drivers/net/ethernet/intel/fm10k/fm10k_pf.c                                          |    7 +-
 drivers/net/ethernet/intel/fm10k/fm10k_ptp.c                                         |    3 -
 drivers/net/ethernet/intel/fm10k/fm10k_type.h                                        |    2 +-
 drivers/net/ethernet/intel/i40e/i40e.h                                               |   10 +-
 drivers/net/ethernet/intel/i40e/i40e_adminq.h                                        |    2 +-
 drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h                                    |  152 +-
 drivers/net/ethernet/intel/i40e/i40e_common.c                                        |  136 +-
 drivers/net/ethernet/intel/i40e/i40e_debugfs.c                                       |    1 -
 drivers/net/ethernet/intel/i40e/i40e_ethtool.c                                       |   43 +-
 drivers/net/ethernet/intel/i40e/i40e_fcoe.c                                          |   18 +-
 drivers/net/ethernet/intel/i40e/i40e_main.c                                          |  149 +-
 drivers/net/ethernet/intel/i40e/i40e_prototype.h                                     |    5 +
 drivers/net/ethernet/intel/i40e/i40e_ptp.c                                           |   44 +-
 drivers/net/ethernet/intel/i40e/i40e_txrx.c                                          |   13 +-
 drivers/net/ethernet/intel/i40e/i40e_type.h                                          |   10 +-
 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c                                   |   34 +-
 drivers/net/ethernet/intel/i40evf/i40e_adminq.h                                      |    2 +-
 drivers/net/ethernet/intel/i40evf/i40e_adminq_cmd.h                                  |  108 +-
 drivers/net/ethernet/intel/i40evf/i40e_txrx.c                                        |   44 +-
 drivers/net/ethernet/intel/i40evf/i40e_txrx.h                                        |    1 +
 drivers/net/ethernet/intel/i40evf/i40e_type.h                                        |    8 +-
 drivers/net/ethernet/intel/i40evf/i40evf_main.c                                      |  112 +-
 drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c                                  |    6 +-
 drivers/net/ethernet/intel/igb/igb.h                                                 |   11 +-
 drivers/net/ethernet/intel/igb/igb_main.c                                            |  157 +-
 drivers/net/ethernet/intel/igb/igb_ptp.c                                             |  267 ++-
 drivers/net/ethernet/intel/igbvf/netdev.c                                            |    5 +-
 drivers/net/ethernet/intel/ixgb/ixgb_main.c                                          |    4 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe.h                                             |    5 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c                                        |  118 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c                                         |   13 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c                                       |   16 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe_type.h                                        |   12 +
 drivers/net/ethernet/intel/ixgbe/ixgbe_x540.c                                        |    3 -
 drivers/net/ethernet/intel/ixgbe/ixgbe_x550.c                                        |   90 +-
 drivers/net/ethernet/intel/ixgbevf/ixgbevf.h                                         |   36 +-
 drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c                                    |  499 ++++--
 drivers/net/ethernet/intel/ixgbevf/regs.h                                            |   10 +
 drivers/net/ethernet/jme.c                                                           |    4 +-
 drivers/net/ethernet/marvell/sky2.c                                                  |    6 +-
 drivers/net/ethernet/mellanox/mlx4/alloc.c                                           |   17 +-
 drivers/net/ethernet/mellanox/mlx4/catas.c                                           |  294 +++-
 drivers/net/ethernet/mellanox/mlx4/cmd.c                                             |  422 +++--
 drivers/net/ethernet/mellanox/mlx4/en_clock.c                                        |   10 +-
 drivers/net/ethernet/mellanox/mlx4/en_cq.c                                           |    4 +-
 drivers/net/ethernet/mellanox/mlx4/en_ethtool.c                                      |   20 +-
 drivers/net/ethernet/mellanox/mlx4/en_main.c                                         |   12 +-
 drivers/net/ethernet/mellanox/mlx4/en_netdev.c                                       |  182 ++-
 drivers/net/ethernet/mellanox/mlx4/en_resources.c                                    |    8 +-
 drivers/net/ethernet/mellanox/mlx4/en_rx.c                                           |   13 +-
 drivers/net/ethernet/mellanox/mlx4/en_tx.c                                           |   16 +-
 drivers/net/ethernet/mellanox/mlx4/eq.c                                              |  100 +-
 drivers/net/ethernet/mellanox/mlx4/fw.c                                              |  144 +-
 drivers/net/ethernet/mellanox/mlx4/fw.h                                              |    1 +
 drivers/net/ethernet/mellanox/mlx4/icm.c                                             |   11 +-
 drivers/net/ethernet/mellanox/mlx4/intf.c                                            |   62 +-
 drivers/net/ethernet/mellanox/mlx4/main.c                                            |  489 +++++-
 drivers/net/ethernet/mellanox/mlx4/mcg.c                                             |    6 +
 drivers/net/ethernet/mellanox/mlx4/mlx4.h                                            |   31 +-
 drivers/net/ethernet/mellanox/mlx4/mlx4_en.h                                         |    5 +
 drivers/net/ethernet/mellanox/mlx4/mr.c                                              |   25 +-
 drivers/net/ethernet/mellanox/mlx4/pd.c                                              |    7 +-
 drivers/net/ethernet/mellanox/mlx4/port.c                                            |   17 +-
 drivers/net/ethernet/mellanox/mlx4/qp.c                                              |    2 +
 drivers/net/ethernet/mellanox/mlx4/reset.c                                           |   23 +-
 drivers/net/ethernet/mellanox/mlx4/resource_tracker.c                                |   57 +-
 drivers/net/ethernet/mellanox/mlx5/core/alloc.c                                      |    2 +-
 drivers/net/ethernet/mellanox/mlx5/core/debugfs.c                                    |    6 +-
 drivers/net/ethernet/mellanox/mlx5/core/main.c                                       |   12 +-
 drivers/net/ethernet/micrel/ksz884x.c                                                |    4 +-
 drivers/net/ethernet/myricom/myri10ge/myri10ge.c                                     |    3 +-
 drivers/net/ethernet/natsemi/ns83820.c                                               |    4 +-
 drivers/net/ethernet/neterion/s2io.c                                                 |    4 +-
 drivers/net/ethernet/neterion/vxge/vxge-config.c                                     |    2 +-
 drivers/net/ethernet/neterion/vxge/vxge-main.c                                       |    4 +-
 drivers/net/ethernet/nvidia/forcedeth.c                                              |    4 +-
 drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c                                 |    8 +-
 drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c                                       |   25 +-
 drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c                                     |   24 +-
 drivers/net/ethernet/qlogic/qlcnic/qlcnic_minidump.c                                 |    3 +-
 drivers/net/ethernet/qlogic/qlge/qlge_main.c                                         |    6 +-
 drivers/net/ethernet/realtek/8139cp.c                                                |    4 +-
 drivers/net/ethernet/realtek/r8169.c                                                 |   16 +-
 drivers/net/ethernet/renesas/sh_eth.c                                                |   48 +-
 drivers/net/ethernet/renesas/sh_eth.h                                                |   30 +-
 drivers/net/ethernet/rocker/rocker.c                                                 |  177 +-
 drivers/net/ethernet/rocker/rocker.h                                                 |   21 +
 drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c                                      |   69 +-
 drivers/net/ethernet/smsc/Kconfig                                                    |   10 +-
 drivers/net/ethernet/smsc/smc91x.h                                                   |   21 +
 drivers/net/ethernet/stmicro/stmmac/Makefile                                         |    2 +-
 drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c                                       |  437 +++++
 drivers/net/ethernet/stmicro/stmmac/dwmac-sti.c                                      |   13 +-
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c                                    |   26 +-
 drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c                                     |  113 +-
 drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c                                |    4 +
 drivers/net/ethernet/stmicro/stmmac/stmmac_platform.h                                |    1 +
 drivers/net/ethernet/sun/niu.c                                                       |    3 +-
 drivers/net/ethernet/sun/sunvnet.c                                                   |   90 +-
 drivers/net/ethernet/tehuti/tehuti.c                                                 |    4 +-
 drivers/net/ethernet/ti/Kconfig                                                      |   25 +
 drivers/net/ethernet/ti/Makefile                                                     |   11 +-
 drivers/net/ethernet/ti/cpsw-common.c                                                |   55 +
 drivers/net/ethernet/ti/cpsw.c                                                       |  111 +-
 drivers/net/ethernet/ti/cpsw.h                                                       |    2 +
 drivers/net/ethernet/ti/cpsw_ale.c                                                   |   26 +-
 drivers/net/ethernet/ti/cpts.c                                                       |    5 +-
 drivers/net/ethernet/ti/cpts.h                                                       |    1 +
 drivers/net/ethernet/ti/davinci_emac.c                                               |   56 +-
 drivers/net/ethernet/ti/netcp.h                                                      |  229 +++
 drivers/net/ethernet/ti/netcp_core.c                                                 | 2149 +++++++++++++++++++++++++
 drivers/net/ethernet/ti/netcp_ethss.c                                                | 2159 +++++++++++++++++++++++++
 drivers/net/ethernet/ti/netcp_sgmii.c                                                |  131 ++
 drivers/net/ethernet/ti/netcp_xgbepcsr.c                                             |  501 ++++++
 drivers/net/ethernet/ti/tlan.c                                                       |   14 +-
 drivers/net/ethernet/via/via-rhine.c                                                 |    9 +-
 drivers/net/ethernet/via/via-velocity.c                                              |    4 +-
 drivers/net/fddi/skfp/smt.c                                                          |   12 -
 drivers/net/hyperv/netvsc.c                                                          |   11 +-
 drivers/net/hyperv/rndis_filter.c                                                    |   24 +-
 drivers/net/ieee802154/at86rf230.c                                                   |   82 +-
 drivers/net/ieee802154/cc2520.c                                                      |   37 +-
 drivers/net/ieee802154/mrf24j40.c                                                    |    6 +-
 drivers/net/ipvlan/ipvlan_core.c                                                     |    2 +-
 drivers/net/irda/ali-ircc.c                                                          |   11 +-
 drivers/net/irda/ali-ircc.h                                                          |    5 +-
 drivers/net/irda/au1k_ir.c                                                           |    3 -
 drivers/net/irda/irda-usb.c                                                          |   10 +-
 drivers/net/irda/irda-usb.h                                                          |    5 +-
 drivers/net/irda/kingsun-sir.c                                                       |    3 -
 drivers/net/irda/ks959-sir.c                                                         |    3 -
 drivers/net/irda/mcs7780.c                                                           |    2 -
 drivers/net/irda/mcs7780.h                                                           |    1 -
 drivers/net/irda/nsc-ircc.c                                                          |    7 +-
 drivers/net/irda/nsc-ircc.h                                                          |    5 +-
 drivers/net/irda/sa1100_ir.c                                                         |    2 +-
 drivers/net/irda/stir4200.c                                                          |   16 +-
 drivers/net/irda/via-ircc.h                                                          |    4 -
 drivers/net/irda/vlsi_ir.c                                                           |   46 +-
 drivers/net/irda/vlsi_ir.h                                                           |    2 +-
 drivers/net/macvlan.c                                                                |    6 +
 drivers/net/macvtap.c                                                                |    6 +-
 drivers/net/mii.c                                                                    |   12 +-
 drivers/net/phy/Kconfig                                                              |    2 +-
 drivers/net/phy/amd-xgbe-phy.c                                                       |  981 +++++++----
 drivers/net/phy/fixed_phy.c                                                          |    2 +-
 drivers/net/phy/mdio_bus.c                                                           |   14 +-
 drivers/net/phy/phy.c                                                                |    3 +
 drivers/net/phy/phy_device.c                                                         |   22 +-
 drivers/net/team/team.c                                                              |   12 +-
 drivers/net/tun.c                                                                    |   37 +-
 drivers/net/usb/hso.c                                                                |  106 +-
 drivers/net/usb/r8152.c                                                              |  229 +--
 drivers/net/usb/usbnet.c                                                             |   17 +-
 drivers/net/veth.c                                                                   |    9 +
 drivers/net/virtio_net.c                                                             |    6 +
 drivers/net/vmxnet3/vmxnet3_defs.h                                                   |    3 +-
 drivers/net/vmxnet3/vmxnet3_drv.c                                                    |   54 +-
 drivers/net/vmxnet3/vmxnet3_ethtool.c                                                |   29 +-
 drivers/net/vmxnet3/vmxnet3_int.h                                                    |    6 +-
 drivers/net/vxlan.c                                                                  |  440 +++--
 drivers/net/wireless/adm8211.c                                                       |    1 +
 drivers/net/wireless/ath/ath.h                                                       |    1 +
 drivers/net/wireless/ath/ath10k/Makefile                                             |    6 +-
 drivers/net/wireless/ath/ath10k/ce.c                                                 |   14 +-
 drivers/net/wireless/ath/ath10k/ce.h                                                 |    2 +-
 drivers/net/wireless/ath/ath10k/core.c                                               |  322 +++-
 drivers/net/wireless/ath/ath10k/core.h                                               |   61 +-
 drivers/net/wireless/ath/ath10k/debug.c                                              |  122 +-
 drivers/net/wireless/ath/ath10k/debug.h                                              |   11 +-
 drivers/net/wireless/ath/ath10k/debugfs_sta.c                                        |  243 +++
 drivers/net/wireless/ath/ath10k/htc.c                                                |    6 +-
 drivers/net/wireless/ath/ath10k/htt.c                                                |    3 +-
 drivers/net/wireless/ath/ath10k/htt.h                                                |   87 +-
 drivers/net/wireless/ath/ath10k/htt_rx.c                                             |  402 ++++-
 drivers/net/wireless/ath/ath10k/htt_tx.c                                             |   99 +-
 drivers/net/wireless/ath/ath10k/hw.c                                                 |   58 +
 drivers/net/wireless/ath/ath10k/hw.h                                                 |  136 +-
 drivers/net/wireless/ath/ath10k/mac.c                                                |  666 ++++++--
 drivers/net/wireless/ath/ath10k/pci.c                                                |  170 +-
 drivers/net/wireless/ath/ath10k/pci.h                                                |    7 +-
 drivers/net/wireless/ath/ath10k/rx_desc.h                                            |   25 +-
 drivers/net/wireless/ath/ath10k/spectral.c                                           |    1 +
 drivers/net/wireless/ath/ath10k/targaddrs.h                                          |    5 +
 drivers/net/wireless/ath/ath10k/testmode.c                                           |    5 +-
 drivers/net/wireless/ath/ath10k/thermal.c                                            |  244 +++
 drivers/net/wireless/ath/ath10k/thermal.h                                            |   58 +
 drivers/net/wireless/ath/ath10k/trace.h                                              |   68 +
 drivers/net/wireless/ath/ath10k/txrx.c                                               |    9 +-
 drivers/net/wireless/ath/ath10k/wmi-ops.h                                            | 1064 ++++++++++++
 drivers/net/wireless/ath/ath10k/wmi-tlv.c                                            | 2696 +++++++++++++++++++++++++++++++
 drivers/net/wireless/ath/ath10k/wmi-tlv.h                                            | 1444 +++++++++++++++++
 drivers/net/wireless/ath/ath10k/wmi.c                                                | 2318 ++++++++++++++++++--------
 drivers/net/wireless/ath/ath10k/wmi.h                                                |  449 +++++-
 drivers/net/wireless/ath/ath5k/ahb.c                                                 |    1 -
 drivers/net/wireless/ath/ath5k/mac80211-ops.c                                        |   16 +-
 drivers/net/wireless/ath/ath5k/pcu.c                                                 |    1 +
 drivers/net/wireless/ath/ath5k/reset.c                                               |    2 +-
 drivers/net/wireless/ath/ath6kl/cfg80211.c                                           |   17 +-
 drivers/net/wireless/ath/ath6kl/main.c                                               |    1 -
 drivers/net/wireless/ath/ath9k/ahb.c                                                 |    4 +
 drivers/net/wireless/ath/ath9k/ani.c                                                 |    3 +-
 drivers/net/wireless/ath/ath9k/ar5008_phy.c                                          |   80 +
 drivers/net/wireless/ath/ath9k/ar9003_calib.c                                        |   61 +-
 drivers/net/wireless/ath/ath9k/ar9003_eeprom.c                                       |   15 +-
 drivers/net/wireless/ath/ath9k/ar9003_hw.c                                           |   61 +-
 drivers/net/wireless/ath/ath9k/ar9003_phy.c                                          |   47 +-
 drivers/net/wireless/ath/ath9k/ar9003_phy.h                                          |   19 +-
 drivers/net/wireless/ath/ath9k/ar9003_wow.c                                          |  315 ++--
 drivers/net/wireless/ath/ath9k/ar953x_initvals.h                                     |    4 +-
 drivers/net/wireless/ath/ath9k/ar955x_1p0_initvals.h                                 |    4 +-
 drivers/net/wireless/ath/ath9k/ar956x_initvals.h                                     | 1046 ++++++++++++
 drivers/net/wireless/ath/ath9k/ath9k.h                                               |   15 +-
 drivers/net/wireless/ath/ath9k/common-spectral.c                                     |    2 +-
 drivers/net/wireless/ath/ath9k/debug.c                                               |  263 +--
 drivers/net/wireless/ath/ath9k/eeprom_4k.c                                           |   14 +
 drivers/net/wireless/ath/ath9k/eeprom_9287.c                                         |   15 +
 drivers/net/wireless/ath/ath9k/eeprom_def.c                                          |   14 +
 drivers/net/wireless/ath/ath9k/gpio.c                                                |    2 +-
 drivers/net/wireless/ath/ath9k/htc.h                                                 |    3 +
 drivers/net/wireless/ath/ath9k/htc_drv_gpio.c                                        |    4 +
 drivers/net/wireless/ath/ath9k/htc_drv_init.c                                        |    4 +
 drivers/net/wireless/ath/ath9k/htc_hst.c                                             |    6 +-
 drivers/net/wireless/ath/ath9k/hw.c                                                  |   53 +-
 drivers/net/wireless/ath/ath9k/hw.h                                                  |   40 +-
 drivers/net/wireless/ath/ath9k/init.c                                                |    5 +-
 drivers/net/wireless/ath/ath9k/link.c                                                |   16 +-
 drivers/net/wireless/ath/ath9k/mac.c                                                 |    3 +-
 drivers/net/wireless/ath/ath9k/main.c                                                |    9 -
 drivers/net/wireless/ath/ath9k/pci.c                                                 |   90 +-
 drivers/net/wireless/ath/ath9k/recv.c                                                |    3 +-
 drivers/net/wireless/ath/ath9k/reg.h                                                 |  129 +-
 drivers/net/wireless/ath/ath9k/reg_wow.h                                             |  128 ++
 drivers/net/wireless/ath/ath9k/wow.c                                                 |  228 ++-
 drivers/net/wireless/ath/ath9k/xmit.c                                                |   83 +-
 drivers/net/wireless/ath/carl9170/cmd.c                                              |   12 +-
 drivers/net/wireless/ath/carl9170/main.c                                             |    6 +-
 drivers/net/wireless/ath/dfs_pattern_detector.c                                      |    2 +-
 drivers/net/wireless/ath/wcn36xx/dxe.c                                               |    3 +
 drivers/net/wireless/ath/wcn36xx/main.c                                              |   16 +-
 drivers/net/wireless/ath/wcn36xx/smd.c                                               |   73 +-
 drivers/net/wireless/ath/wcn36xx/txrx.c                                              |   83 +-
 drivers/net/wireless/ath/wcn36xx/txrx.h                                              |    9 +-
 drivers/net/wireless/ath/wcn36xx/wcn36xx.h                                           |   20 +
 drivers/net/wireless/ath/wil6210/Kconfig                                             |    9 -
 drivers/net/wireless/ath/wil6210/Makefile                                            |    1 -
 drivers/net/wireless/ath/wil6210/cfg80211.c                                          |  179 ++-
 drivers/net/wireless/ath/wil6210/debugfs.c                                           |  164 +-
 drivers/net/wireless/ath/wil6210/ethtool.c                                           |   46 +-
 drivers/net/wireless/ath/wil6210/interrupt.c                                         |  109 +-
 drivers/net/wireless/ath/wil6210/main.c                                              |  205 ++-
 drivers/net/wireless/ath/wil6210/netdev.c                                            |   15 +-
 drivers/net/wireless/ath/wil6210/pcie_bus.c                                          |   65 +-
 drivers/net/wireless/ath/wil6210/rx_reorder.c                                        |  277 +++-
 drivers/net/wireless/ath/wil6210/txrx.c                                              |  151 +-
 drivers/net/wireless/ath/wil6210/txrx.h                                              |  158 +-
 drivers/net/wireless/ath/wil6210/wil6210.h                                           |  183 ++-
 drivers/net/wireless/ath/wil6210/wil_platform.c                                      |   12 +-
 drivers/net/wireless/ath/wil6210/wil_platform_msm.c                                  |  257 ---
 drivers/net/wireless/ath/wil6210/wmi.c                                               |  239 ++-
 drivers/net/wireless/ath/wil6210/wmi.h                                               |   70 +-
 drivers/net/wireless/atmel.c                                                         |   12 +-
 drivers/net/wireless/b43/Kconfig                                                     |    9 +
 drivers/net/wireless/b43/Makefile                                                    |    1 +
 drivers/net/wireless/b43/b43.h                                                       |    3 +
 drivers/net/wireless/b43/main.c                                                      |   71 +-
 drivers/net/wireless/b43/phy_ac.c                                                    |   92 ++
 drivers/net/wireless/b43/phy_ac.h                                                    |   38 +
 drivers/net/wireless/b43/phy_common.c                                                |    9 +-
 drivers/net/wireless/b43/phy_common.h                                                |    2 +
 drivers/net/wireless/b43legacy/radio.c                                               |   19 -
 drivers/net/wireless/b43legacy/radio.h                                               |    1 -
 drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c                                     |   90 +-
 drivers/net/wireless/brcm80211/brcmfmac/bus.h                                        |   24 +-
 drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c                                   |  227 ++-
 drivers/net/wireless/brcm80211/brcmfmac/cfg80211.h                                   |    5 +
 drivers/net/wireless/brcm80211/brcmfmac/chip.c                                       |   15 +-
 drivers/net/wireless/brcm80211/brcmfmac/common.c                                     |   34 +-
 drivers/net/wireless/{ath/wil6210/wil_platform_msm.h => brcm80211/brcmfmac/common.h} |   24 +-
 drivers/net/wireless/brcm80211/brcmfmac/commonring.h                                 |    2 +
 drivers/net/wireless/brcm80211/brcmfmac/core.c                                       |   42 +-
 drivers/net/wireless/brcm80211/brcmfmac/core.h                                       |   34 +-
 drivers/net/wireless/brcm80211/brcmfmac/firmware.c                                   |    6 +-
 drivers/net/wireless/brcm80211/brcmfmac/flowring.c                                   |    6 +-
 drivers/net/wireless/brcm80211/brcmfmac/fwil.c                                       |    2 +-
 drivers/net/wireless/brcm80211/brcmfmac/fwil.h                                       |    5 +
 drivers/net/wireless/brcm80211/brcmfmac/fwil_types.h                                 |   55 +
 drivers/net/wireless/brcm80211/brcmfmac/msgbuf.c                                     |   54 +-
 drivers/net/wireless/brcm80211/brcmfmac/pcie.c                                       |   12 +-
 drivers/net/wireless/brcm80211/brcmfmac/sdio.c                                       |  178 +-
 drivers/net/wireless/brcm80211/brcmfmac/sdio.h                                       |   12 +-
 drivers/net/wireless/brcm80211/brcmfmac/usb.c                                        |    6 +-
 drivers/net/wireless/brcm80211/brcmsmac/debug.c                                      |    2 +-
 drivers/net/wireless/brcm80211/brcmutil/utils.c                                      |   32 +-
 drivers/net/wireless/brcm80211/include/brcm_hw_ids.h                                 |   12 +-
 drivers/net/wireless/brcm80211/include/brcmu_utils.h                                 |    4 +
 drivers/net/wireless/cw1200/fwio.c                                                   |   40 +-
 drivers/net/wireless/cw1200/main.c                                                   |    6 +-
 drivers/net/wireless/cw1200/pm.c                                                     |    5 +-
 drivers/net/wireless/cw1200/queue.c                                                  |    4 +-
 drivers/net/wireless/cw1200/scan.c                                                   |    8 +-
 drivers/net/wireless/cw1200/sta.c                                                    |    4 +-
 drivers/net/wireless/hostap/hostap_ap.c                                              |    2 +-
 drivers/net/wireless/iwlegacy/3945-mac.c                                             |    4 +-
 drivers/net/wireless/iwlegacy/4965-mac.c                                             |    9 +-
 drivers/net/wireless/iwlwifi/dvm/main.c                                              |   31 +-
 drivers/net/wireless/iwlwifi/dvm/tt.c                                                |   13 +-
 drivers/net/wireless/iwlwifi/dvm/tx.c                                                |    2 +-
 drivers/net/wireless/iwlwifi/dvm/ucode.c                                             |    2 +-
 drivers/net/wireless/iwlwifi/iwl-7000.c                                              |   23 +-
 drivers/net/wireless/iwlwifi/iwl-8000.c                                              |   31 +-
 drivers/net/wireless/iwlwifi/iwl-config.h                                            |   17 +-
 drivers/net/wireless/iwlwifi/iwl-csr.h                                               |    2 +
 drivers/net/wireless/iwlwifi/iwl-drv.c                                               |   88 +-
 drivers/net/wireless/iwlwifi/iwl-drv.h                                               |    1 -
 drivers/net/wireless/iwlwifi/iwl-fw-error-dump.h                                     |   43 +-
 drivers/net/wireless/iwlwifi/iwl-fw-file.h                                           |   18 +-
 drivers/net/wireless/iwlwifi/iwl-fw.h                                                |    4 +
 drivers/net/wireless/iwlwifi/iwl-io.c                                                |   10 +-
 drivers/net/wireless/iwlwifi/iwl-modparams.h                                         |    4 +-
 drivers/net/wireless/iwlwifi/iwl-nvm-parse.c                                         |    6 +
 drivers/net/wireless/iwlwifi/iwl-prph.h                                              |   52 +-
 drivers/net/wireless/iwlwifi/iwl-scd.h                                               |   41 +-
 drivers/net/wireless/iwlwifi/iwl-trans.h                                             |   50 +-
 drivers/net/wireless/iwlwifi/mvm/coex.c                                              |   20 +-
 drivers/net/wireless/iwlwifi/mvm/coex_legacy.c                                       |   20 +-
 drivers/net/wireless/iwlwifi/mvm/constants.h                                         |   35 +-
 drivers/net/wireless/iwlwifi/mvm/d3.c                                                |   51 +-
 drivers/net/wireless/iwlwifi/mvm/debugfs-vif.c                                       |   33 +-
 drivers/net/wireless/iwlwifi/mvm/debugfs.c                                           |  247 ++-
 drivers/net/wireless/iwlwifi/mvm/fw-api-power.h                                      |   20 +-
 drivers/net/wireless/iwlwifi/mvm/fw-api-rs.h                                         |   40 +-
 drivers/net/wireless/iwlwifi/mvm/fw-api-stats.h                                      |  277 ++++
 drivers/net/wireless/iwlwifi/mvm/fw-api-tx.h                                         |   39 +
 drivers/net/wireless/iwlwifi/mvm/fw-api.h                                            |  301 +---
 drivers/net/wireless/iwlwifi/mvm/fw.c                                                |  117 +-
 drivers/net/wireless/iwlwifi/mvm/mac-ctxt.c                                          |   24 +-
 drivers/net/wireless/iwlwifi/mvm/mac80211.c                                          |  362 ++++-
 drivers/net/wireless/iwlwifi/mvm/mvm.h                                               |   88 +-
 drivers/net/wireless/iwlwifi/mvm/nvm.c                                               |    4 +-
 drivers/net/wireless/iwlwifi/mvm/ops.c                                               |   83 +-
 drivers/net/wireless/iwlwifi/mvm/phy-ctxt.c                                          |    4 +-
 drivers/net/wireless/iwlwifi/mvm/rs.c                                                |  551 +++++--
 drivers/net/wireless/iwlwifi/mvm/rs.h                                                |   53 +-
 drivers/net/wireless/iwlwifi/mvm/rx.c                                                |   10 +-
 drivers/net/wireless/iwlwifi/mvm/scan.c                                              |   68 +-
 drivers/net/wireless/iwlwifi/mvm/sta.c                                               |   44 +-
 drivers/net/wireless/iwlwifi/mvm/tdls.c                                              |   63 +-
 drivers/net/wireless/iwlwifi/mvm/tt.c                                                |    7 +-
 drivers/net/wireless/iwlwifi/mvm/tx.c                                                |   12 +-
 drivers/net/wireless/iwlwifi/mvm/utils.c                                             |   79 +-
 drivers/net/wireless/iwlwifi/pcie/drv.c                                              |    2 +
 drivers/net/wireless/iwlwifi/pcie/internal.h                                         |   18 +-
 drivers/net/wireless/iwlwifi/pcie/trans.c                                            |   78 +-
 drivers/net/wireless/iwlwifi/pcie/tx.c                                               |  100 +-
 drivers/net/wireless/libertas/cfg.c                                                  |   12 +-
 drivers/net/wireless/mac80211_hwsim.c                                                |   33 +-
 drivers/net/wireless/mwifiex/11h.c                                                   |  198 ++-
 drivers/net/wireless/mwifiex/11n.c                                                   |    6 +-
 drivers/net/wireless/mwifiex/11n.h                                                   |   14 +-
 drivers/net/wireless/mwifiex/11n_aggr.c                                              |   15 +-
 drivers/net/wireless/mwifiex/11n_rxreorder.c                                         |   16 +-
 drivers/net/wireless/mwifiex/Makefile                                                |    2 +
 drivers/net/wireless/mwifiex/cfg80211.c                                              |  951 ++++++++---
 drivers/net/wireless/mwifiex/cfp.c                                                   |   22 +-
 drivers/net/wireless/mwifiex/cmdevt.c                                                |   46 +-
 drivers/net/wireless/mwifiex/debugfs.c                                               |  281 ++--
 drivers/net/wireless/mwifiex/decl.h                                                  |   55 +-
 drivers/net/wireless/mwifiex/ethtool.c                                               |   16 +-
 drivers/net/wireless/mwifiex/fw.h                                                    |   61 +
 drivers/net/wireless/mwifiex/ie.c                                                    |   89 +-
 drivers/net/wireless/mwifiex/init.c                                                  |   35 +-
 drivers/net/wireless/mwifiex/ioctl.h                                                 |   11 +-
 drivers/net/wireless/mwifiex/main.c                                                  |  147 +-
 drivers/net/wireless/mwifiex/main.h                                                  |   84 +-
 drivers/net/wireless/mwifiex/pcie.c                                                  |    7 +-
 drivers/net/wireless/mwifiex/pcie.h                                                  |    3 +
 drivers/net/wireless/mwifiex/scan.c                                                  |   16 +-
 drivers/net/wireless/mwifiex/sdio.c                                                  |  111 +-
 drivers/net/wireless/mwifiex/sdio.h                                                  |   49 +
 drivers/net/wireless/mwifiex/sta_cmd.c                                               |   24 +-
 drivers/net/wireless/mwifiex/sta_cmdresp.c                                           |    7 +
 drivers/net/wireless/mwifiex/sta_event.c                                             |   18 +-
 drivers/net/wireless/mwifiex/sta_ioctl.c                                             |   38 +-
 drivers/net/wireless/mwifiex/sta_rx.c                                                |    9 +
 drivers/net/wireless/mwifiex/sta_tx.c                                                |   28 +-
 drivers/net/wireless/mwifiex/tdls.c                                                  |   35 +-
 drivers/net/wireless/mwifiex/txrx.c                                                  |    2 +-
 drivers/net/wireless/mwifiex/uap_cmd.c                                               |   70 +
 drivers/net/wireless/mwifiex/uap_event.c                                             |   50 +-
 drivers/net/wireless/mwifiex/uap_txrx.c                                              |   28 +-
 drivers/net/wireless/mwifiex/usb.c                                                   |   27 +-
 drivers/net/wireless/mwifiex/usb.h                                                   |   11 +-
 drivers/net/wireless/mwifiex/util.c                                                  |  222 ++-
 drivers/net/wireless/mwifiex/util.h                                                  |   20 +
 drivers/net/wireless/mwifiex/wmm.c                                                   |    3 +
 drivers/net/wireless/mwl8k.c                                                         |   12 +-
 drivers/net/wireless/orinoco/Kconfig                                                 |    3 +-
 drivers/net/wireless/orinoco/main.c                                                  |    2 +-
 drivers/net/wireless/orinoco/orinoco_pci.c                                           |    2 +-
 drivers/net/wireless/orinoco/orinoco_plx.c                                           |    2 +-
 drivers/net/wireless/orinoco/orinoco_tmd.c                                           |    2 +-
 drivers/net/wireless/orinoco/orinoco_usb.c                                           |    4 +-
 drivers/net/wireless/p54/eeprom.c                                                    |    6 +-
 drivers/net/wireless/p54/fwio.c                                                      |    9 +-
 drivers/net/wireless/p54/main.c                                                      |   10 +-
 drivers/net/wireless/p54/p54pci.c                                                    |    7 +-
 drivers/net/wireless/p54/txrx.c                                                      |   12 +-
 drivers/net/wireless/rndis_wlan.c                                                    |    4 +-
 drivers/net/wireless/rsi/rsi_91x_sdio_ops.c                                          |    4 +-
 drivers/net/wireless/rt2x00/rt2800lib.c                                              |   12 +-
 drivers/net/wireless/rt2x00/rt2x00config.c                                           |    4 +-
 drivers/net/wireless/rt2x00/rt2x00dev.c                                              |   18 +-
 drivers/net/wireless/rt2x00/rt2x00firmware.c                                         |    2 +-
 drivers/net/wireless/rt2x00/rt2x00mac.c                                              |    2 +-
 drivers/net/wireless/rt2x00/rt2x00queue.c                                            |   18 +-
 drivers/net/wireless/rt2x00/rt2x00usb.c                                              |    8 +-
 drivers/net/wireless/rtlwifi/base.c                                                  |  156 +-
 drivers/net/wireless/rtlwifi/base.h                                                  |    4 +-
 drivers/net/wireless/rtlwifi/core.c                                                  |   72 +-
 drivers/net/wireless/rtlwifi/core.h                                                  |   42 +
 drivers/net/wireless/rtlwifi/pci.c                                                   |   31 +-
 drivers/net/wireless/rtlwifi/pci.h                                                   |    7 +
 drivers/net/wireless/rtlwifi/rtl8188ee/dm.c                                          |   36 +-
 drivers/net/wireless/rtlwifi/rtl8188ee/dm.h                                          |   41 -
 drivers/net/wireless/rtlwifi/rtl8188ee/trx.c                                         |  162 +-
 drivers/net/wireless/rtlwifi/rtl8192c/dm_common.c                                    |   45 +-
 drivers/net/wireless/rtlwifi/rtl8192c/dm_common.h                                    |   38 -
 drivers/net/wireless/rtlwifi/rtl8192c/fw_common.h                                    |    1 +
 drivers/net/wireless/rtlwifi/rtl8192ce/dm.c                                          |    1 +
 drivers/net/wireless/rtlwifi/rtl8192ce/dm.h                                          |   13 -
 drivers/net/wireless/rtlwifi/rtl8192ce/hw.c                                          |  165 +-
 drivers/net/wireless/rtlwifi/rtl8192ce/phy.c                                         |    5 +-
 drivers/net/wireless/rtlwifi/rtl8192ce/sw.c                                          |   30 +-
 drivers/net/wireless/rtlwifi/rtl8192ce/trx.c                                         |   13 +-
 drivers/net/wireless/rtlwifi/rtl8192cu/hw.c                                          |    4 +
 drivers/net/wireless/rtlwifi/rtl8192cu/mac.c                                         |    4 +-
 drivers/net/wireless/rtlwifi/rtl8192cu/sw.c                                          |   28 +-
 drivers/net/wireless/rtlwifi/rtl8192cu/trx.c                                         |   20 +-
 drivers/net/wireless/rtlwifi/rtl8192de/dm.c                                          |   33 +-
 drivers/net/wireless/rtlwifi/rtl8192de/dm.h                                          |   38 -
 drivers/net/wireless/rtlwifi/rtl8192de/fw.c                                          |   17 -
 drivers/net/wireless/rtlwifi/rtl8192de/fw.h                                          |    1 -
 drivers/net/wireless/rtlwifi/rtl8192de/hw.c                                          |    2 +-
 drivers/net/wireless/rtlwifi/rtl8192de/sw.c                                          |   30 +-
 drivers/net/wireless/rtlwifi/rtl8192de/trx.c                                         |   27 +-
 drivers/net/wireless/rtlwifi/rtl8192ee/dm.c                                          |   55 +-
 drivers/net/wireless/rtlwifi/rtl8192ee/dm.h                                          |   16 -
 drivers/net/wireless/rtlwifi/rtl8192ee/fw.c                                          |    6 +-
 drivers/net/wireless/rtlwifi/rtl8192ee/hw.c                                          |  166 +-
 drivers/net/wireless/rtlwifi/rtl8192ee/reg.h                                         |    2 +
 drivers/net/wireless/rtlwifi/rtl8192ee/sw.c                                          |    3 +-
 drivers/net/wireless/rtlwifi/rtl8192ee/trx.c                                         |  200 +--
 drivers/net/wireless/rtlwifi/rtl8192ee/trx.h                                         |   12 +-
 drivers/net/wireless/rtlwifi/rtl8192se/def.h                                         |    8 +-
 drivers/net/wireless/rtlwifi/rtl8192se/dm.c                                          |    7 +-
 drivers/net/wireless/rtlwifi/rtl8192se/dm.h                                          |   28 -
 drivers/net/wireless/rtlwifi/rtl8192se/sw.c                                          |   30 +-
 drivers/net/wireless/rtlwifi/rtl8192se/trx.c                                         |   23 +-
 drivers/net/wireless/rtlwifi/rtl8723ae/dm.c                                          |   42 +-
 drivers/net/wireless/rtlwifi/rtl8723ae/dm.h                                          |   38 -
 drivers/net/wireless/rtlwifi/rtl8723ae/trx.c                                         |  162 +-
 drivers/net/wireless/rtlwifi/rtl8723be/dm.c                                          |   55 +-
 drivers/net/wireless/rtlwifi/rtl8723be/dm.h                                          |   33 -
 drivers/net/wireless/rtlwifi/rtl8723be/phy.c                                         |   25 -
 drivers/net/wireless/rtlwifi/rtl8723be/phy.h                                         |    2 -
 drivers/net/wireless/rtlwifi/rtl8723be/sw.c                                          |   10 +-
 drivers/net/wireless/rtlwifi/rtl8723be/trx.c                                         |  162 +-
 drivers/net/wireless/rtlwifi/rtl8821ae/def.h                                         |   54 -
 drivers/net/wireless/rtlwifi/rtl8821ae/dm.c                                          |   58 +-
 drivers/net/wireless/rtlwifi/rtl8821ae/dm.h                                          |   41 -
 drivers/net/wireless/rtlwifi/rtl8821ae/pwrseq.h                                      |    4 +-
 drivers/net/wireless/rtlwifi/rtl8821ae/sw.c                                          |   74 +-
 drivers/net/wireless/rtlwifi/rtl8821ae/trx.c                                         |  232 +--
 drivers/net/wireless/rtlwifi/wifi.h                                                  |   99 +-
 drivers/net/wireless/ti/wl1251/main.c                                                |    5 +-
 drivers/net/wireless/ti/wl12xx/main.c                                                |    4 +
 drivers/net/wireless/ti/wl18xx/acx.c                                                 |   88 +
 drivers/net/wireless/ti/wl18xx/acx.h                                                 |   46 +-
 drivers/net/wireless/ti/wl18xx/cmd.c                                                 |   93 +-
 drivers/net/wireless/ti/wl18xx/cmd.h                                                 |   27 +
 drivers/net/wireless/ti/wl18xx/conf.h                                                |   23 +-
 drivers/net/wireless/ti/wl18xx/debugfs.c                                             |   43 +
 drivers/net/wireless/ti/wl18xx/event.c                                               |   21 +
 drivers/net/wireless/ti/wl18xx/event.h                                               |   14 +-
 drivers/net/wireless/ti/wl18xx/main.c                                                |   37 +-
 drivers/net/wireless/ti/wl18xx/wl18xx.h                                              |    4 +-
 drivers/net/wireless/ti/wlcore/acx.c                                                 |    2 +-
 drivers/net/wireless/ti/wlcore/cmd.c                                                 |   20 +-
 drivers/net/wireless/ti/wlcore/cmd.h                                                 |    8 +
 drivers/net/wireless/ti/wlcore/conf.h                                                |    7 +-
 drivers/net/wireless/ti/wlcore/debugfs.c                                             |    9 +-
 drivers/net/wireless/ti/wlcore/event.c                                               |   11 +-
 drivers/net/wireless/ti/wlcore/hw_ops.h                                              |   48 +-
 drivers/net/wireless/ti/wlcore/init.c                                                |    8 +-
 drivers/net/wireless/ti/wlcore/main.c                                                |  405 ++++-
 drivers/net/wireless/ti/wlcore/ps.c                                                  |    8 +-
 drivers/net/wireless/ti/wlcore/vendor_cmd.c                                          |    2 +-
 drivers/net/wireless/ti/wlcore/wlcore.h                                              |   12 +-
 drivers/net/wireless/ti/wlcore/wlcore_i.h                                            |    7 +
 drivers/net/xen-netback/common.h                                                     |    1 -
 drivers/net/xen-netback/interface.c                                                  |    2 +-
 drivers/net/xen-netback/netback.c                                                    |  107 +-
 drivers/net/xen-netfront.c                                                           |  258 +--
 drivers/nfc/microread/microread.c                                                    |    3 +-
 drivers/nfc/pn544/i2c.c                                                              |  133 +-
 drivers/nfc/pn544/pn544.c                                                            |    3 +-
 drivers/nfc/st21nfca/Makefile                                                        |    2 +-
 drivers/nfc/st21nfca/i2c.c                                                           |   23 +-
 drivers/nfc/st21nfca/st21nfca.c                                                      |  186 ++-
 drivers/nfc/st21nfca/st21nfca.h                                                      |   21 +-
 drivers/nfc/st21nfca/st21nfca_se.c                                                   |  411 +++++
 drivers/nfc/st21nfca/st21nfca_se.h                                                   |   63 +
 drivers/nfc/st21nfcb/Makefile                                                        |    2 +-
 drivers/nfc/st21nfcb/i2c.c                                                           |   19 +-
 drivers/nfc/st21nfcb/ndlc.c                                                          |    3 +-
 drivers/nfc/st21nfcb/st21nfcb.c                                                      |   11 +-
 drivers/nfc/st21nfcb/st21nfcb.h                                                      |    2 +
 drivers/nfc/st21nfcb/st21nfcb_se.c                                                   |  707 ++++++++
 drivers/nfc/st21nfcb/st21nfcb_se.h                                                   |   61 +
 drivers/phy/phy-miphy365x.c                                                          |   29 +-
 drivers/phy/phy-stih407-usb.c                                                        |   25 +-
 drivers/s390/net/claw.c                                                              |    6 +-
 drivers/s390/net/ctcm_fsms.c                                                         |   18 +-
 drivers/s390/net/ctcm_main.c                                                         |    4 +-
 drivers/s390/net/ctcm_main.h                                                         |    2 +-
 drivers/s390/net/ctcm_sysfs.c                                                        |    4 +-
 drivers/s390/net/lcs.c                                                               |    6 +-
 drivers/s390/net/netiucv.c                                                           |   15 +-
 drivers/s390/net/qeth_core.h                                                         |    1 -
 drivers/s390/net/qeth_core_sys.c                                                     |   45 +-
 drivers/s390/net/qeth_l2_main.c                                                      |    6 +-
 drivers/s390/net/qeth_l3_main.c                                                      |   15 +-
 drivers/s390/net/qeth_l3_sys.c                                                       |   45 +-
 drivers/scsi/csiostor/Makefile                                                       |    2 +-
 drivers/scsi/csiostor/csio_hw.c                                                      | 1175 +++++++-------
 drivers/scsi/csiostor/csio_hw.h                                                      |   49 +-
 drivers/scsi/csiostor/csio_hw_chip.h                                                 |   65 +-
 drivers/scsi/csiostor/csio_hw_t4.c                                                   |  404 -----
 drivers/scsi/csiostor/csio_hw_t5.c                                                   |  150 +-
 drivers/scsi/csiostor/csio_init.c                                                    |    6 +-
 drivers/scsi/csiostor/csio_isr.c                                                     |    2 +-
 drivers/scsi/csiostor/csio_lnode.c                                                   |    2 +-
 drivers/scsi/csiostor/csio_mb.c                                                      |   56 +-
 drivers/scsi/csiostor/csio_scsi.c                                                    |    4 +-
 drivers/scsi/csiostor/csio_wr.c                                                      |  157 +-
 drivers/scsi/cxgbi/cxgb4i/cxgb4i.c                                                   |   41 +-
 drivers/scsi/pmcraid.c                                                               |    8 +-
 drivers/ssb/main.c                                                                   |   19 -
 drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c                                    |   10 +-
 drivers/staging/wlan-ng/cfg80211.c                                                   |    4 +-
 drivers/target/target_core_user.c                                                    |    4 +-
 drivers/thermal/thermal_core.c                                                       |    6 +-
 drivers/vhost/net.c                                                                  |   83 +-
 drivers/vhost/scsi.c                                                                 |    2 +-
 drivers/vhost/vhost.c                                                                |    6 +-
 fs/afs/rxrpc.c                                                                       |   14 +-
 fs/dlm/netlink.c                                                                     |    7 +-
 include/clocksource/arm_arch_timer.h                                                 |    2 +-
 include/crypto/if_alg.h                                                              |    3 +-
 include/dt-bindings/clock/rk3288-cru.h                                               |    3 +
 include/linux/bcma/bcma.h                                                            |    1 +
 include/linux/bcma/bcma_driver_pci.h                                                 |    2 +
 include/linux/bcma/bcma_regs.h                                                       |    2 +
 include/linux/bcma/bcma_soc.h                                                        |    2 -
 include/linux/clocksource.h                                                          |  102 --
 include/linux/etherdevice.h                                                          |    4 +
 include/linux/fec.h                                                                  |    1 +
 include/linux/ieee80211.h                                                            |   27 +
 include/linux/if_bridge.h                                                            |   18 -
 include/linux/if_vlan.h                                                              |   14 +-
 include/linux/ipv6.h                                                                 |   13 +-
 include/linux/list_nulls.h                                                           |    6 +-
 include/linux/mlx4/cmd.h                                                             |   16 +-
 include/linux/mlx4/device.h                                                          |   61 +-
 include/linux/mlx4/driver.h                                                          |   19 +
 include/linux/mlx4/qp.h                                                              |    1 +
 include/linux/mmc/sdio_ids.h                                                         |    6 +-
 include/linux/netdev_features.h                                                      |    6 +-
 include/linux/netdevice.h                                                            |   88 +-
 include/linux/phy.h                                                                  |   12 +
 arch/arm/include/asm/mach/irda.h => include/linux/platform_data/irda-sa11x0.h        |    0
 include/linux/platform_data/st21nfca.h                                               |    2 +
 include/linux/platform_data/st21nfcb.h                                               |    4 +-
 include/linux/rhashtable.h                                                           |  308 +++-
 include/linux/skbuff.h                                                               |   44 +-
 include/linux/socket.h                                                               |    7 -
 include/linux/spinlock.h                                                             |    8 +
 include/linux/spinlock_api_smp.h                                                     |    2 +
 include/linux/spinlock_api_up.h                                                      |    1 +
 include/linux/ssb/ssb_regs.h                                                         |    1 +
 include/linux/tcp.h                                                                  |    6 +
 include/linux/timecounter.h                                                          |  139 ++
 include/linux/types.h                                                                |    3 +
 include/linux/udp.h                                                                  |   16 +-
 include/linux/uio.h                                                                  |    6 -
 include/linux/vmw_vmci_api.h                                                         |    2 +-
 include/net/addrconf.h                                                               |    3 +
 include/net/bluetooth/bluetooth.h                                                    |    2 +-
 include/net/bluetooth/hci.h                                                          |   83 +-
 include/net/bluetooth/hci_core.h                                                     |   52 +-
 include/net/bluetooth/l2cap.h                                                        |    1 +
 include/net/bluetooth/mgmt.h                                                         |    4 -
 include/net/bluetooth/rfcomm.h                                                       |    2 -
 include/net/bond_3ad.h                                                               |    1 -
 include/net/bonding.h                                                                |   18 +
 include/net/cfg80211.h                                                               |  293 ++--
 include/net/cfg802154.h                                                              |   10 +-
 include/net/genetlink.h                                                              |   21 +-
 include/net/geneve.h                                                                 |    7 +-
 include/net/gro_cells.h                                                              |   29 +-
 include/net/ieee802154_netdev.h                                                      |    4 +-
 include/net/inet_connection_sock.h                                                   |    3 +-
 include/net/inet_sock.h                                                              |   29 +-
 include/net/ip.h                                                                     |    7 +-
 include/net/ip6_fib.h                                                                |   10 +-
 include/net/ip6_tunnel.h                                                             |    1 +
 include/net/ip_fib.h                                                                 |   50 +-
 include/net/ip_tunnels.h                                                             |    6 +-
 include/net/ipv6.h                                                                   |   21 +-
 include/net/mac80211.h                                                               |  100 +-
 include/net/mac802154.h                                                              |    5 +-
 include/net/net_namespace.h                                                          |    4 +
 include/net/netfilter/nf_conntrack.h                                                 |    2 -
 include/net/netlink.h                                                                |   10 +-
 include/net/netns/ipv4.h                                                             |    5 +-
 include/net/nfc/hci.h                                                                |   25 +-
 include/net/nfc/nci.h                                                                |   97 ++
 include/net/nfc/nci_core.h                                                           |  137 +-
 include/net/nfc/nfc.h                                                                |   27 +
 include/net/nl802154.h                                                               |   45 +-
 include/net/ping.h                                                                   |    2 +-
 include/net/pkt_sched.h                                                              |   12 +
 include/net/regulatory.h                                                             |   19 +
 include/net/route.h                                                                  |    2 +
 include/net/rtnetlink.h                                                              |    2 +
 include/net/sock.h                                                                   |   66 +-
 include/net/switchdev.h                                                              |   79 +-
 include/net/tc_act/tc_bpf.h                                                          |   25 +
 include/net/tc_act/tc_connmark.h                                                     |   14 +
 include/net/tcp.h                                                                    |   72 +-
 include/net/udp_tunnel.h                                                             |   16 +-
 include/net/udplite.h                                                                |    3 +-
 include/net/vxlan.h                                                                  |  103 +-
 include/trace/events/net.h                                                           |    8 +-
 include/uapi/linux/Kbuild                                                            |    1 +
 include/uapi/linux/ethtool.h                                                         |    4 +-
 include/uapi/linux/if_bridge.h                                                       |    2 +
 include/uapi/linux/if_link.h                                                         |    4 +
 include/uapi/linux/in.h                                                              |    1 +
 include/uapi/linux/ipv6.h                                                            |    7 +-
 include/uapi/linux/l2tp.h                                                            |    1 +
 include/uapi/linux/libc-compat.h                                                     |    6 +
 include/uapi/linux/neighbour.h                                                       |    1 +
 include/uapi/linux/net_namespace.h                                                   |   23 +
 include/uapi/linux/net_tstamp.h                                                      |    3 +-
 include/uapi/linux/nfc.h                                                             |    1 +
 include/uapi/linux/nl80211.h                                                         |  207 ++-
 include/uapi/linux/openvswitch.h                                                     |   53 +-
 include/uapi/linux/pkt_sched.h                                                       |    2 +
 include/uapi/linux/rtnetlink.h                                                       |    8 +
 include/uapi/linux/snmp.h                                                            |    6 +
 include/uapi/linux/tc_act/Kbuild                                                     |    1 +
 include/uapi/linux/tc_act/tc_bpf.h                                                   |   31 +
 include/uapi/linux/tc_act/tc_connmark.h                                              |   22 +
 include/uapi/linux/tipc_config.h                                                     |   20 +
 include/xen/page.h                                                                   |    5 +
 kernel/locking/spinlock.c                                                            |    8 +
 kernel/taskstats.c                                                                   |   13 +-
 kernel/time/Makefile                                                                 |    2 +-
 kernel/time/clocksource.c                                                            |   76 -
 kernel/time/timecounter.c                                                            |  112 ++
 lib/Kconfig.debug                                                                    |    2 +-
 lib/Makefile                                                                         |    3 +-
 lib/iovec.c                                                                          |   87 -
 lib/rhashtable.c                                                                     | 1170 +++++++++-----
 lib/test_rhashtable.c                                                                |  227 +++
 net/8021q/vlan_core.c                                                                |    2 +-
 net/8021q/vlan_netlink.c                                                             |    8 +
 net/batman-adv/Kconfig                                                               |    1 +
 net/batman-adv/bat_iv_ogm.c                                                          |   15 +-
 net/batman-adv/bitarray.c                                                            |    1 -
 net/batman-adv/bitarray.h                                                            |    3 +-
 net/batman-adv/bridge_loop_avoidance.c                                               |   17 +-
 net/batman-adv/debugfs.c                                                             |    2 +-
 net/batman-adv/distributed-arp-table.c                                               |    1 +
 net/batman-adv/distributed-arp-table.h                                               |    4 +-
 net/batman-adv/fragmentation.c                                                       |    1 -
 net/batman-adv/fragmentation.h                                                       |    3 +-
 net/batman-adv/gateway_client.c                                                      |    1 +
 net/batman-adv/main.c                                                                |   10 +-
 net/batman-adv/main.h                                                                |   15 +-
 net/batman-adv/multicast.h                                                           |    3 -
 net/batman-adv/network-coding.c                                                      |    3 +-
 net/batman-adv/originator.c                                                          |    1 -
 net/batman-adv/originator.h                                                          |    1 -
 net/batman-adv/packet.h                                                              |    5 +-
 net/batman-adv/routing.c                                                             |    3 +-
 net/batman-adv/soft-interface.c                                                      |    1 -
 net/batman-adv/sysfs.c                                                               |    1 -
 net/batman-adv/translation-table.c                                                   |    8 +-
 net/batman-adv/types.h                                                               |    4 +-
 net/bluetooth/6lowpan.c                                                              |   66 +-
 net/bluetooth/Kconfig                                                                |   27 +
 net/bluetooth/Makefile                                                               |    4 +-
 net/bluetooth/af_bluetooth.c                                                         |    6 +
 net/bluetooth/bnep/core.c                                                            |    7 +-
 net/bluetooth/cmtp/capi.c                                                            |    6 -
 net/bluetooth/hci_conn.c                                                             |   21 +-
 net/bluetooth/hci_core.c                                                             | 1917 +++-------------------
 net/bluetooth/hci_debugfs.c                                                          | 1056 ++++++++++++
 net/bluetooth/hci_debugfs.h                                                          |   26 +
 net/bluetooth/hci_event.c                                                            |  248 ++-
 net/bluetooth/hci_request.c                                                          |  556 +++++++
 net/bluetooth/hci_request.h                                                          |   54 +
 net/bluetooth/hci_sock.c                                                             |  107 +-
 net/bluetooth/l2cap_core.c                                                           |   55 +-
 net/bluetooth/l2cap_sock.c                                                           |   11 +-
 net/bluetooth/mgmt.c                                                                 |  617 +++++--
 net/bluetooth/rfcomm/core.c                                                          |    4 +-
 net/bluetooth/rfcomm/sock.c                                                          |   11 +-
 net/bluetooth/sco.c                                                                  |   10 +-
 net/bluetooth/selftest.c                                                             |  244 +++
 net/bluetooth/selftest.h                                                             |   45 +
 net/bluetooth/smp.c                                                                  |  468 +++++-
 net/bluetooth/smp.h                                                                  |   13 +
 net/bridge/br.c                                                                      |   52 +-
 net/bridge/br_fdb.c                                                                  |   60 +-
 net/bridge/br_if.c                                                                   |   11 +-
 net/bridge/br_mdb.c                                                                  |    5 +-
 net/bridge/br_netfilter.c                                                            |   12 +-
 net/bridge/br_netlink.c                                                              |  300 +++-
 net/bridge/br_private.h                                                              |   12 +-
 net/bridge/br_vlan.c                                                                 |    4 +-
 net/bridge/netfilter/ebt_vlan.c                                                      |    4 +-
 net/bridge/netfilter/ebtables.c                                                      |    2 +-
 net/can/gw.c                                                                         |    3 +-
 net/core/Makefile                                                                    |    2 +-
 net/core/dev.c                                                                       |  227 ++-
 net/core/ethtool.c                                                                   |   45 +-
 net/core/fib_rules.c                                                                 |    3 +-
 net/core/flow.c                                                                      |    2 +-
 net/core/flow_dissector.c                                                            |   21 +-
 net/core/iovec.c                                                                     |  137 --
 net/core/neighbour.c                                                                 |   20 +-
 net/core/net_namespace.c                                                             |  213 +++
 net/core/netpoll.c                                                                   |    2 +-
 net/core/pktgen.c                                                                    |   16 +-
 net/core/rtnetlink.c                                                                 |  156 +-
 net/core/skbuff.c                                                                    |   59 +-
 net/core/sock.c                                                                      |    3 +
 net/core/sysctl_net_core.c                                                           |   13 +-
 net/decnet/dn_dev.c                                                                  |    3 +-
 net/decnet/dn_fib.c                                                                  |    3 +-
 net/decnet/dn_route.c                                                                |    8 +-
 net/decnet/dn_table.c                                                                |    7 +-
 net/dsa/dsa.c                                                                        |    2 +-
 net/dsa/slave.c                                                                      |   13 -
 net/ethernet/eth.c                                                                   |   92 ++
 net/ieee802154/6lowpan/6lowpan_i.h                                                   |   72 +
 net/ieee802154/6lowpan/Kconfig                                                       |    5 +
 net/ieee802154/6lowpan/Makefile                                                      |    3 +
 net/ieee802154/6lowpan/core.c                                                        |  304 ++++
 net/ieee802154/{ => 6lowpan}/reassembly.c                                            |    2 +-
 net/ieee802154/6lowpan/rx.c                                                          |  171 ++
 net/ieee802154/6lowpan/tx.c                                                          |  271 ++++
 net/ieee802154/6lowpan_rtnl.c                                                        |  729 ---------
 net/ieee802154/Kconfig                                                               |   18 +-
 net/ieee802154/Makefile                                                              |    8 +-
 net/ieee802154/af802154.h                                                            |   33 -
 net/ieee802154/af_ieee802154.c                                                       |  369 -----
 net/ieee802154/dgram.c                                                               |  549 -------
 net/ieee802154/netlink.c                                                             |   12 +-
 net/ieee802154/nl-mac.c                                                              |    7 +-
 net/ieee802154/nl-phy.c                                                              |    3 +-
 net/ieee802154/nl802154.c                                                            |   52 +-
 net/ieee802154/raw.c                                                                 |  270 ----
 net/ieee802154/rdev-ops.h                                                            |    7 +
 net/ieee802154/reassembly.h                                                          |   41 -
 net/ieee802154/socket.c                                                              | 1125 +++++++++++++
 net/ieee802154/sysfs.c                                                               |    2 +-
 net/ipv4/af_inet.c                                                                   |    2 -
 net/ipv4/devinet.c                                                                   |   16 +-
 net/ipv4/fib_frontend.c                                                              |   29 +-
 net/ipv4/fib_lookup.h                                                                |    1 -
 net/ipv4/fib_rules.c                                                                 |   22 +-
 net/ipv4/fib_semantics.c                                                             |   35 +-
 net/ipv4/fib_trie.c                                                                  | 1960 +++++++++++-----------
 net/ipv4/fou.c                                                                       |   32 +-
 net/ipv4/geneve.c                                                                    |  211 ++-
 net/ipv4/icmp.c                                                                      |   17 +-
 net/ipv4/inet_diag.c                                                                 |    9 +-
 net/ipv4/ip_gre.c                                                                    |   15 +-
 net/ipv4/ip_output.c                                                                 |    6 +-
 net/ipv4/ip_sockglue.c                                                               |  115 +-
 net/ipv4/ip_tunnel.c                                                                 |    8 +
 net/ipv4/ip_vti.c                                                                    |    1 +
 net/ipv4/ipconfig.c                                                                  |    6 +-
 net/ipv4/ipip.c                                                                      |   13 +-
 net/ipv4/ipmr.c                                                                      |    3 +-
 net/ipv4/ping.c                                                                      |   17 +-
 net/ipv4/proc.c                                                                      |    6 +
 net/ipv4/raw.c                                                                       |    7 +-
 net/ipv4/route.c                                                                     |   51 +-
 net/ipv4/sysctl_net_ipv4.c                                                           |   35 +-
 net/ipv4/tcp.c                                                                       |  233 ++-
 net/ipv4/tcp_cong.c                                                                  |  121 +-
 net/ipv4/tcp_fastopen.c                                                              |   13 +-
 net/ipv4/tcp_input.c                                                                 |   88 +-
 net/ipv4/tcp_ipv4.c                                                                  |    3 +
 net/ipv4/tcp_metrics.c                                                               |    3 +-
 net/ipv4/tcp_minisocks.c                                                             |   66 +-
 net/ipv4/tcp_output.c                                                                |   50 +-
 net/ipv4/tcp_timer.c                                                                 |    7 +-
 net/ipv4/udp.c                                                                       |    4 +-
 net/ipv4/udp_offload.c                                                               |    7 +-
 net/ipv4/udp_tunnel.c                                                                |   14 +-
 net/ipv6/addrconf.c                                                                  |   82 +-
 net/ipv6/addrlabel.c                                                                 |    5 +-
 net/ipv6/datagram.c                                                                  |    5 +-
 net/ipv6/icmp.c                                                                      |    2 +-
 net/ipv6/ip6_fib.c                                                                   |   69 +-
 net/ipv6/ip6_gre.c                                                                   |    2 +
 net/ipv6/ip6_output.c                                                                |  360 +++--
 net/ipv6/ip6_tunnel.c                                                                |    9 +
 net/ipv6/ip6_udp_tunnel.c                                                            |   12 +-
 net/ipv6/ip6_vti.c                                                                   |    1 +
 net/ipv6/ip6mr.c                                                                     |    3 +-
 net/ipv6/ipv6_sockglue.c                                                             |    8 +-
 net/ipv6/ndisc.c                                                                     |    6 +-
 net/ipv6/output_core.c                                                               |    5 +-
 net/ipv6/ping.c                                                                      |    3 +-
 net/ipv6/raw.c                                                                       |    7 +-
 net/ipv6/route.c                                                                     |   77 +-
 net/ipv6/sit.c                                                                       |    1 +
 net/ipv6/tcp_ipv6.c                                                                  |    2 +
 net/ipv6/udp.c                                                                       |   93 +-
 net/irda/irlap.c                                                                     |    8 +-
 net/l2tp/l2tp_netlink.c                                                              |  107 +-
 net/mac80211/Kconfig                                                                 |    1 +
 net/mac80211/Makefile                                                                |    2 +
 net/mac80211/aes_ccm.c                                                               |   21 +-
 net/mac80211/aes_ccm.h                                                               |   10 +-
 net/mac80211/aes_cmac.c                                                              |   34 +-
 net/mac80211/aes_cmac.h                                                              |    5 +-
 net/mac80211/aes_gcm.c                                                               |   95 ++
 net/mac80211/aes_gcm.h                                                               |   22 +
 net/mac80211/aes_gmac.c                                                              |   84 +
 net/mac80211/aes_gmac.h                                                              |   20 +
 net/mac80211/cfg.c                                                                   |   90 +-
 net/mac80211/chan.c                                                                  |   41 +-
 net/mac80211/debugfs.c                                                               |    2 -
 net/mac80211/debugfs_key.c                                                           |   55 +
 net/mac80211/driver-ops.h                                                            |   30 +-
 net/mac80211/ethtool.c                                                               |   26 +-
 net/mac80211/ibss.c                                                                  |   11 +-
 net/mac80211/ieee80211_i.h                                                           |   44 +-
 net/mac80211/iface.c                                                                 |   14 +-
 net/mac80211/key.c                                                                   |  194 ++-
 net/mac80211/key.h                                                                   |   18 +
 net/mac80211/main.c                                                                  |  111 +-
 net/mac80211/mlme.c                                                                  |   96 +-
 net/mac80211/offchannel.c                                                            |    4 +-
 net/mac80211/pm.c                                                                    |    2 +-
 net/mac80211/rc80211_minstrel.c                                                      |    6 +-
 net/mac80211/rc80211_minstrel.h                                                      |   15 +-
 net/mac80211/rx.c                                                                    |   69 +-
 net/mac80211/scan.c                                                                  |   13 +-
 net/mac80211/spectmgmt.c                                                             |    4 -
 net/mac80211/sta_info.c                                                              |  189 ++-
 net/mac80211/sta_info.h                                                              |   12 +
 net/mac80211/status.c                                                                |   26 +-
 net/mac80211/tdls.c                                                                  |   69 +-
 net/mac80211/trace.h                                                                 |   33 +-
 net/mac80211/tx.c                                                                    |   25 +-
 net/mac80211/util.c                                                                  |   83 +-
 net/mac80211/vht.c                                                                   |   73 +-
 net/mac80211/wpa.c                                                                   |  443 ++++-
 net/mac80211/wpa.h                                                                   |   19 +-
 net/mac802154/cfg.c                                                                  |   26 +-
 net/mac802154/driver-ops.h                                                           |    5 +-
 net/mac802154/iface.c                                                                |  100 +-
 net/mac802154/mac_cmd.c                                                              |    6 +-
 net/mpls/mpls_gso.c                                                                  |    4 +-
 net/netfilter/ipvs/ip_vs_ctl.c                                                       |    9 +-
 net/netfilter/nf_conntrack_core.c                                                    |   17 +-
 net/netfilter/nf_conntrack_netlink.c                                                 |   89 +-
 net/netfilter/nf_conntrack_seqadj.c                                                  |    6 +-
 net/netfilter/nf_log.c                                                               |    3 +-
 net/netfilter/nf_tables_api.c                                                        |   18 +-
 net/netfilter/nfnetlink.c                                                            |   15 +-
 net/netfilter/nfnetlink_cthelper.c                                                   |    4 +-
 net/netfilter/nft_hash.c                                                             |  145 +-
 net/netfilter/xt_osf.c                                                               |  169 +-
 net/netlabel/netlabel_cipso_v4.c                                                     |    6 +-
 net/netlabel/netlabel_mgmt.c                                                         |   56 +-
 net/netlabel/netlabel_unlabeled.c                                                    |    3 +-
 net/netlink/af_netlink.c                                                             |  250 ++-
 net/netlink/af_netlink.h                                                             |    2 +-
 net/netlink/diag.c                                                                   |   15 +-
 net/netlink/genetlink.c                                                              |    6 +-
 net/nfc/core.c                                                                       |   23 +-
 net/nfc/hci/command.c                                                                |   23 +-
 net/nfc/hci/core.c                                                                   |   97 +-
 net/nfc/hci/hci.h                                                                    |   10 +-
 net/nfc/hci/hcp.c                                                                    |   11 -
 net/nfc/nci/Makefile                                                                 |    2 +-
 net/nfc/nci/core.c                                                                   |  169 +-
 net/nfc/nci/data.c                                                                   |   56 +-
 net/nfc/nci/hci.c                                                                    |  694 ++++++++
 net/nfc/nci/ntf.c                                                                    |   77 +-
 net/nfc/nci/rsp.c                                                                    |  120 +-
 net/nfc/netlink.c                                                                    |   59 +-
 net/nfc/nfc.h                                                                        |    2 +
 net/openvswitch/actions.c                                                            |  377 +++--
 net/openvswitch/datapath.c                                                           |  237 ++-
 net/openvswitch/flow.c                                                               |    6 +-
 net/openvswitch/flow.h                                                               |   42 +-
 net/openvswitch/flow_netlink.c                                                       |  547 +++++--
 net/openvswitch/flow_netlink.h                                                       |   13 +-
 net/openvswitch/flow_table.c                                                         |  228 ++-
 net/openvswitch/flow_table.h                                                         |    8 +-
 net/openvswitch/vport-geneve.c                                                       |   32 +-
 net/openvswitch/vport-gre.c                                                          |   14 +-
 net/openvswitch/vport-vxlan.c                                                        |  110 +-
 net/openvswitch/vport-vxlan.h                                                        |   11 +
 net/openvswitch/vport.c                                                              |   12 +-
 net/openvswitch/vport.h                                                              |   18 +
 net/packet/af_packet.c                                                               |   14 +-
 net/packet/diag.c                                                                    |    3 +-
 net/phonet/pn_netlink.c                                                              |   20 +-
 net/rds/ib_send.c                                                                    |    4 +-
 net/rds/iw_cm.c                                                                      |    4 +-
 net/rds/iw_send.c                                                                    |    4 +-
 net/rds/message.c                                                                    |    8 +-
 net/rfkill/rfkill-gpio.c                                                             |    1 +
 net/rxrpc/ar-error.c                                                                 |    5 +
 net/rxrpc/ar-output.c                                                                |   46 +-
 net/sched/Kconfig                                                                    |   24 +
 net/sched/Makefile                                                                   |    2 +
 net/sched/act_bpf.c                                                                  |  208 +++
 net/sched/act_connmark.c                                                             |  192 +++
 net/sched/act_csum.c                                                                 |    2 +-
 net/sched/cls_basic.c                                                                |    7 +-
 net/sched/cls_bpf.c                                                                  |   18 +-
 net/sched/cls_flow.c                                                                 |    8 +-
 net/sched/em_ipset.c                                                                 |    2 +-
 net/sched/em_meta.c                                                                  |    4 +-
 net/sched/sch_api.c                                                                  |    2 +-
 net/sched/sch_dsmark.c                                                               |    6 +-
 net/sched/sch_fq.c                                                                   |   33 +-
 net/sched/sch_teql.c                                                                 |   11 +-
 net/sctp/associola.c                                                                 |    3 +-
 net/socket.c                                                                         |  123 +-
 net/switchdev/switchdev.c                                                            |  175 ++
 net/tipc/Kconfig                                                                     |   12 -
 net/tipc/Makefile                                                                    |    6 +-
 net/tipc/addr.c                                                                      |   45 +-
 net/tipc/addr.h                                                                      |   45 +-
 net/tipc/bcast.c                                                                     |  499 +++---
 net/tipc/bcast.h                                                                     |  115 +-
 net/tipc/bearer.c                                                                    |  205 +--
 net/tipc/bearer.h                                                                    |   43 +-
 net/tipc/config.c                                                                    |  342 ----
 net/tipc/config.h                                                                    |   67 -
 net/tipc/core.c                                                                      |  154 +-
 net/tipc/core.h                                                                      |  171 +-
 net/tipc/discover.c                                                                  |   90 +-
 net/tipc/discover.h                                                                  |    8 +-
 net/tipc/link.c                                                                      |  881 ++++------
 net/tipc/link.h                                                                      |   47 +-
 net/tipc/log.c                                                                       |   55 -
 net/tipc/msg.c                                                                       |  153 +-
 net/tipc/msg.h                                                                       |  143 +-
 net/tipc/name_distr.c                                                                |  145 +-
 net/tipc/name_distr.h                                                                |   16 +-
 net/tipc/name_table.c                                                                |  398 ++---
 net/tipc/name_table.h                                                                |   49 +-
 net/tipc/net.c                                                                       |   56 +-
 net/tipc/net.h                                                                       |    4 +-
 net/tipc/netlink.c                                                                   |   64 +-
 net/tipc/netlink.h                                                                   |    7 +-
 net/tipc/netlink_compat.c                                                            | 1084 +++++++++++++
 net/tipc/node.c                                                                      |  336 ++--
 net/tipc/node.h                                                                      |   53 +-
 net/tipc/server.c                                                                    |    6 +-
 net/tipc/server.h                                                                    |   17 +-
 net/tipc/socket.c                                                                    | 1015 ++++++------
 net/tipc/socket.h                                                                    |   20 +-
 net/tipc/subscr.c                                                                    |  131 +-
 net/tipc/subscr.h                                                                    |   14 +-
 net/unix/af_unix.c                                                                   |   73 +-
 net/unix/diag.c                                                                      |    3 +-
 net/vmw_vsock/vmci_transport.c                                                       |    3 +-
 net/wireless/core.c                                                                  |   34 +-
 net/wireless/core.h                                                                  |   11 +-
 net/wireless/nl80211.c                                                               |  726 ++++++---
 net/wireless/nl80211.h                                                               |   16 +-
 net/wireless/reg.c                                                                   |  160 +-
 net/wireless/reg.h                                                                   |    1 +
 net/wireless/scan.c                                                                  |   13 +-
 net/wireless/trace.h                                                                 |   31 +-
 net/wireless/util.c                                                                  |   97 +-
 net/wireless/wext-compat.c                                                           |   10 +-
 net/xfrm/xfrm_algo.c                                                                 |    5 -
 net/xfrm/xfrm_user.c                                                                 |   27 +-
 sound/pci/hda/hda_priv.h                                                             |    2 +-
 virt/kvm/arm/arch_timer.c                                                            |    3 +-
 1236 files changed, 72068 insertions(+), 29395 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/net/hisilicon-hip04-net.txt
 create mode 100644 Documentation/devicetree/bindings/net/keystone-netcp.txt
 create mode 100644 Documentation/devicetree/bindings/net/rockchip-dwmac.txt
 create mode 100644 Documentation/devicetree/bindings/net/wireless/qcom,ath10k.txt
 create mode 100644 drivers/net/can/usb/peak_usb/pcan_ucan.h
 create mode 100644 drivers/net/can/usb/peak_usb/pcan_usb_fd.c
 create mode 100644 drivers/net/ethernet/chelsio/cxgb4/clip_tbl.c
 create mode 100644 drivers/net/ethernet/chelsio/cxgb4/clip_tbl.h
 create mode 100644 drivers/net/ethernet/chelsio/cxgb4/t4_values.h
 create mode 100644 drivers/net/ethernet/chelsio/cxgb4/t4fw_version.h
 create mode 100644 drivers/net/ethernet/hisilicon/hip04_eth.c
 create mode 100644 drivers/net/ethernet/hisilicon/hip04_mdio.c
 create mode 100644 drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
 create mode 100644 drivers/net/ethernet/ti/cpsw-common.c
 create mode 100644 drivers/net/ethernet/ti/netcp.h
 create mode 100644 drivers/net/ethernet/ti/netcp_core.c
 create mode 100644 drivers/net/ethernet/ti/netcp_ethss.c
 create mode 100644 drivers/net/ethernet/ti/netcp_sgmii.c
 create mode 100644 drivers/net/ethernet/ti/netcp_xgbepcsr.c
 create mode 100644 drivers/net/wireless/ath/ath10k/debugfs_sta.c
 create mode 100644 drivers/net/wireless/ath/ath10k/hw.c
 create mode 100644 drivers/net/wireless/ath/ath10k/thermal.c
 create mode 100644 drivers/net/wireless/ath/ath10k/thermal.h
 create mode 100644 drivers/net/wireless/ath/ath10k/wmi-ops.h
 create mode 100644 drivers/net/wireless/ath/ath10k/wmi-tlv.c
 create mode 100644 drivers/net/wireless/ath/ath10k/wmi-tlv.h
 create mode 100644 drivers/net/wireless/ath/ath9k/ar956x_initvals.h
 create mode 100644 drivers/net/wireless/ath/ath9k/reg_wow.h
 delete mode 100644 drivers/net/wireless/ath/wil6210/wil_platform_msm.c
 create mode 100644 drivers/net/wireless/b43/phy_ac.c
 create mode 100644 drivers/net/wireless/b43/phy_ac.h
 rename drivers/net/wireless/{ath/wil6210/wil_platform_msm.h => brcm80211/brcmfmac/common.h} (50%)
 create mode 100644 drivers/net/wireless/iwlwifi/mvm/fw-api-stats.h
 create mode 100644 drivers/nfc/st21nfca/st21nfca_se.c
 create mode 100644 drivers/nfc/st21nfca/st21nfca_se.h
 create mode 100644 drivers/nfc/st21nfcb/st21nfcb_se.c
 create mode 100644 drivers/nfc/st21nfcb/st21nfcb_se.h
 delete mode 100644 drivers/scsi/csiostor/csio_hw_t4.c
 rename arch/arm/include/asm/mach/irda.h => include/linux/platform_data/irda-sa11x0.h (100%)
 create mode 100644 include/linux/timecounter.h
 create mode 100644 include/net/tc_act/tc_bpf.h
 create mode 100644 include/net/tc_act/tc_connmark.h
 create mode 100644 include/uapi/linux/net_namespace.h
 create mode 100644 include/uapi/linux/tc_act/tc_bpf.h
 create mode 100644 include/uapi/linux/tc_act/tc_connmark.h
 create mode 100644 kernel/time/timecounter.c
 delete mode 100644 lib/iovec.c
 create mode 100644 lib/test_rhashtable.c
 create mode 100644 net/bluetooth/hci_debugfs.c
 create mode 100644 net/bluetooth/hci_debugfs.h
 create mode 100644 net/bluetooth/hci_request.c
 create mode 100644 net/bluetooth/hci_request.h
 create mode 100644 net/bluetooth/selftest.c
 create mode 100644 net/bluetooth/selftest.h
 delete mode 100644 net/core/iovec.c
 create mode 100644 net/ieee802154/6lowpan/6lowpan_i.h
 create mode 100644 net/ieee802154/6lowpan/Kconfig
 create mode 100644 net/ieee802154/6lowpan/Makefile
 create mode 100644 net/ieee802154/6lowpan/core.c
 rename net/ieee802154/{ => 6lowpan}/reassembly.c (99%)
 create mode 100644 net/ieee802154/6lowpan/rx.c
 create mode 100644 net/ieee802154/6lowpan/tx.c
 delete mode 100644 net/ieee802154/6lowpan_rtnl.c
 delete mode 100644 net/ieee802154/af802154.h
 delete mode 100644 net/ieee802154/af_ieee802154.c
 delete mode 100644 net/ieee802154/dgram.c
 delete mode 100644 net/ieee802154/raw.c
 delete mode 100644 net/ieee802154/reassembly.h
 create mode 100644 net/ieee802154/socket.c
 create mode 100644 net/mac80211/aes_gcm.c
 create mode 100644 net/mac80211/aes_gcm.h
 create mode 100644 net/mac80211/aes_gmac.c
 create mode 100644 net/mac80211/aes_gmac.h
 create mode 100644 net/nfc/nci/hci.c
 create mode 100644 net/openvswitch/vport-vxlan.h
 create mode 100644 net/sched/act_bpf.c
 create mode 100644 net/sched/act_connmark.c
 delete mode 100644 net/tipc/config.c
 delete mode 100644 net/tipc/config.h
 delete mode 100644 net/tipc/log.c
 create mode 100644 net/tipc/netlink_compat.c

^ permalink raw reply

* [PATCH v3 linux-trace 0/8] tracing: attach eBPF programs to tracepoints/syscalls/kprobe
From: Alexei Starovoitov @ 2015-02-10  3:45 UTC (permalink / raw)
  To: Steven Rostedt
  Cc: Ingo Molnar, Namhyung Kim, Arnaldo Carvalho de Melo, Jiri Olsa,
	Masami Hiramatsu, linux-api-u79uwXL29TY76Z2rM5mHXA,
	netdev-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA

Hi Steven,

This patch set is for linux-trace/for-next
It adds ability to attach eBPF programs to tracepoints, syscalls and kprobes.
Obviously too late for 3.20, but please review. I'll rebase and repost when
merge window closes.

Main difference in V3 is different attaching mechanism:
- load program via bpf() syscall and receive prog_fd
- event_fd = perf_event_open()
- ioctl(event_fd, PERF_EVENT_IOC_SET_BPF, prog_fd) to attach program to event
- close(event_fd) will destroy event and detach the program
kernel diff became smaller and in general this approach is cleaner
(thanks to Masami and Namhyung for suggesting it)

The programs are run before ring buffer is allocated to have minimal
impact on a system, which can be demonstrated by
'dd if=/dev/zero of=/dev/null count=20000000' test:
4.80074 s, 2.1 GB/s - no tracing (raw base line)
5.62705 s, 1.8 GB/s - attached bpf program does 'map[log2(count)]++' without JIT
5.05963 s, 2.0 GB/s - attached bpf program does 'map[log2(count)]++' with JIT
4.91715 s, 2.1 GB/s - attached bpf program does 'return 0'

perf record -e skb:sys_write dd if=/dev/zero of=/dev/null count=20000000
8.75686 s, 1.2 GB/s
Warning: Processed 20355236 events and lost 44 chunks!

perf record -e skb:sys_write --filter cnt==1234 dd if=/dev/zero of=/dev/null count=20000000
5.69732 s, 1.8 GB/s

6.13730 s, 1.7 GB/s - echo 1 > /sys/../events/skb/sys_write/enable
6.50091 s, 1.6 GB/s - echo 'cnt == 1234' > /sys/../events/skb/sys_write/filter

(skb:sys_write is a temporary tracepoint in write() syscall)

So the overhead of realistic bpf program is 5.05963/4.80074 = ~5%
which is faster than perf_event filtering: 5.69732/4.80074 = ~18%
or ftrace filtering: 6.50091/4.80074 = ~35%

V2->V3:
- changed program attach interface from tracefs into perf_event ioctl
- rewrote user space helpers to use perf_events
- rewrote tracex1 example to use mmap-ed ring_buffer instead of trace_pipe
- as suggested by Arnaldo renamed bpf_memcmp to bpf_probe_memcmp to better
  indicate function logic
- added ifdefs to make bpf check a nop when CONFIG_BPF_SYSCALL is not set

V1->V2:
- dropped bpf_dump_stack() and bpf_printk() helpers
- disabled running programs in_nmi
- other minor cleanups

Program attach point and input arguments:
- programs attached to kprobes receive 'struct pt_regs *' as an input.
  See tracex4_kern.c that demonstrates how users can write a C program like:
  SEC("events/kprobes/sys_write")
  int bpf_prog4(struct pt_regs *regs)
  {
     long write_size = regs->dx; 
     // here user need to know the proto of sys_write() from kernel
     // sources and x64 calling convention to know that register $rdx
     // contains 3rd argument to sys_write() which is 'size_t count'

  it's obviously architecture dependent, but allows building sophisticated
  user tools on top, that can see from debug info of vmlinux which variables
  are in which registers or stack locations and fetch it from there.
  'perf probe' can potentialy use this hook to generate programs in user space
  and insert them instead of letting kernel parse string during kprobe creation.

- programs attached to tracepoints and syscalls receive 'struct bpf_context *':
  u64 arg1, arg2, ..., arg6;
  for syscalls they match syscall arguments.
  for tracepoints these args match arguments passed to tracepoint.
  For example:
  trace_sched_migrate_task(p, new_cpu); from sched/core.c
  arg1 <- p        which is 'struct task_struct *'
  arg2 <- new_cpu  which is 'unsigned int'
  arg3..arg6 = 0
  the program can use bpf_fetch_u8/16/32/64/ptr() helpers to walk 'task_struct'
  or any other kernel data structures.
  These helpers are using probe_kernel_read() similar to 'perf probe' which is
  not 100% safe in both cases, but good enough.
  To access task_struct's pid inside 'sched_migrate_task' tracepoint
  the program can do:
  struct task_struct *task = (struct task_struct *)ctx->arg1;
  u32 pid = bpf_fetch_u32(&task->pid);
  Since struct layout is kernel configuration specific such programs are not
  portable and require access to kernel headers to be compiled,
  but in this case we don't need debug info.
  llvm with bpf backend will statically compute task->pid offset as a constant
  based on kernel headers only.
  The example of this arbitrary pointer walking is tracex1_kern.c
  which does skb->dev->name == "lo" filtering.

In all cases the programs are called before ring buffer is allocated to
minimize the overhead, since we want to filter huge number of events, but
perf_trace_buf_prepare/submit and argument copy for every event is too costly.

Note, tracepoint/syscall and kprobe programs are two different types:
BPF_PROG_TYPE_TRACEPOINT and BPF_PROG_TYPE_KPROBE,
since they expect different input.
Both use the same set of helper functions:
- map access (lookup/update/delete)
- fetch (probe_kernel_read wrappers)
- probe_memcmp (probe_kernel_read + memcmp)

Portability:
- kprobe programs are architecture dependent and need user scripting
  language like ktap/stap/dtrace/perf that will dynamically generate
  them based on debug info in vmlinux
- tracepoint programs are architecture independent, but if arbitrary pointer
  walking (with fetch() helpers) is used, they need data struct layout to match.
  Debug info is not necessary
- for networking use case we need to access 'struct sk_buff' fields in portable
  way (user space needs to fetch packet length without knowing layout of sk_buff),
  so for some frequently used data structures there will be a way to access them
  effeciently without bpf_fetch* helpers. Once it's ready tracepoint programs
  that access common data structs will be kernel independent.

Program return value:
- programs return 0 to discard an event
- and return non-zero to proceed with event (get ring buffer, copy
  arguments there and pass to user space via mmap-ed area)

Examples:
- dropmon.c - simple kfree_skb() accounting in eBPF assembler, similar
  to dropmon tool
- tracex1_kern.c - does net/netif_receive_skb event filtering
  for dev->skb->name == "lo" condition
  trace1_user.c - receives PERF_SAMPLE_RAW events into mmap-ed buffer and
  prints them
- tracex2_kern.c - same kfree_skb() accounting like dropmon, but now in C
  plus computes histogram of all write sizes from sys_write syscall
  and prints the histogram in userspace
- tracex3_kern.c - most sophisticated example that computes IO latency
  between block/block_rq_issue and block/block_rq_complete events
  and prints 'heatmap' using gray shades of text terminal.
  Useful to analyze disk performance.
- tracex4_kern.c - computes histogram of write sizes from sys_write syscall
  using kprobe mechanism instead of syscall. Since kprobe is optimized into
  ftrace the overhead of instrumentation is smaller than in example 2.

The user space tools like ktap/dtrace/systemptap/perf that has access
to debug info would probably want to use kprobe attachment point, since kprobe
can be inserted anywhere and all registers are avaiable in the program.
tracepoint attachments are useful without debug info, so standalone tools
like iosnoop will use them.

The main difference vs existing perf_probe/ftrace infra is in kernel aggregation
and conditional walking of arbitrary data structures.

Thanks!

Alexei Starovoitov (8):
  tracing: attach eBPF programs to tracepoints and syscalls
  tracing: allow eBPF programs to call ktime_get_ns()
  samples: bpf: simple tracing example in eBPF assembler
  samples: bpf: simple tracing example in C
  samples: bpf: counting example for kfree_skb tracepoint and write
    syscall
  samples: bpf: IO latency analysis (iosnoop/heatmap)
  tracing: attach eBPF programs to kprobe/kretprobe
  samples: bpf: simple kprobe example

 include/linux/bpf.h             |    6 +-
 include/linux/ftrace_event.h    |   14 +++
 include/trace/bpf_trace.h       |   25 +++++
 include/trace/ftrace.h          |   31 +++++++
 include/uapi/linux/bpf.h        |    9 ++
 include/uapi/linux/perf_event.h |    1 +
 kernel/events/core.c            |   58 ++++++++++++
 kernel/trace/Makefile           |    1 +
 kernel/trace/bpf_trace.c        |  194 +++++++++++++++++++++++++++++++++++++++
 kernel/trace/trace_kprobe.c     |   10 +-
 kernel/trace/trace_syscalls.c   |   35 +++++++
 samples/bpf/Makefile            |   18 ++++
 samples/bpf/bpf_helpers.h       |   14 +++
 samples/bpf/bpf_load.c          |  136 +++++++++++++++++++++++++--
 samples/bpf/bpf_load.h          |   12 +++
 samples/bpf/dropmon.c           |  143 +++++++++++++++++++++++++++++
 samples/bpf/libbpf.c            |    7 ++
 samples/bpf/libbpf.h            |    4 +
 samples/bpf/tracex1_kern.c      |   28 ++++++
 samples/bpf/tracex1_user.c      |   50 ++++++++++
 samples/bpf/tracex2_kern.c      |   71 ++++++++++++++
 samples/bpf/tracex2_user.c      |   95 +++++++++++++++++++
 samples/bpf/tracex3_kern.c      |   98 ++++++++++++++++++++
 samples/bpf/tracex3_user.c      |  152 ++++++++++++++++++++++++++++++
 samples/bpf/tracex4_kern.c      |   36 ++++++++
 samples/bpf/tracex4_user.c      |   83 +++++++++++++++++
 26 files changed, 1321 insertions(+), 10 deletions(-)
 create mode 100644 include/trace/bpf_trace.h
 create mode 100644 kernel/trace/bpf_trace.c
 create mode 100644 samples/bpf/dropmon.c
 create mode 100644 samples/bpf/tracex1_kern.c
 create mode 100644 samples/bpf/tracex1_user.c
 create mode 100644 samples/bpf/tracex2_kern.c
 create mode 100644 samples/bpf/tracex2_user.c
 create mode 100644 samples/bpf/tracex3_kern.c
 create mode 100644 samples/bpf/tracex3_user.c
 create mode 100644 samples/bpf/tracex4_kern.c
 create mode 100644 samples/bpf/tracex4_user.c

-- 
1.7.9.5

^ permalink raw reply

* [PATCH v3 linux-trace 1/8] tracing: attach eBPF programs to tracepoints and syscalls
From: Alexei Starovoitov @ 2015-02-10  3:45 UTC (permalink / raw)
  To: Steven Rostedt
  Cc: Ingo Molnar, Namhyung Kim, Arnaldo Carvalho de Melo, Jiri Olsa,
	Masami Hiramatsu, linux-api-u79uwXL29TY76Z2rM5mHXA,
	netdev-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <1423539961-21792-1-git-send-email-ast-uqk4Ao+rVK5Wk0Htik3J/w@public.gmane.org>

User interface:
struct perf_event_attr attr = {.type = PERF_TYPE_TRACEPOINT, .config = event_id, ...};
event_fd = perf_event_open(&attr,...);
ioctl(event_fd, PERF_EVENT_IOC_SET_BPF, prog_fd);

prog_fd is a file descriptor associated with eBPF program previously loaded.
event_id is an ID of static tracepoint event or syscall.
(kprobe support is in next patch)

close(event_fd) - automatically detaches eBPF program from it

eBPF programs can call in-kernel helper functions to:
- lookup/update/delete elements in maps
- fetch_ptr/u64/u32/u16/u8 values from unsafe address via probe_kernel_read(),
  so that eBPF program can walk any kernel data structures
- probe_memcmp - combination of probe_kernel_read() and memcmp()

Signed-off-by: Alexei Starovoitov <ast-uqk4Ao+rVK5Wk0Htik3J/w@public.gmane.org>
---
 include/linux/bpf.h             |    6 +-
 include/linux/ftrace_event.h    |   11 +++
 include/trace/bpf_trace.h       |   25 +++++++
 include/trace/ftrace.h          |   31 +++++++++
 include/uapi/linux/bpf.h        |    7 ++
 include/uapi/linux/perf_event.h |    1 +
 kernel/events/core.c            |   55 +++++++++++++++
 kernel/trace/Makefile           |    1 +
 kernel/trace/bpf_trace.c        |  145 +++++++++++++++++++++++++++++++++++++++
 kernel/trace/trace_syscalls.c   |   35 ++++++++++
 10 files changed, 316 insertions(+), 1 deletion(-)
 create mode 100644 include/trace/bpf_trace.h
 create mode 100644 kernel/trace/bpf_trace.c

diff --git a/include/linux/bpf.h b/include/linux/bpf.h
index bbfceb756452..a0f6f636ced0 100644
--- a/include/linux/bpf.h
+++ b/include/linux/bpf.h
@@ -130,10 +130,14 @@ struct bpf_prog_aux {
 
 #ifdef CONFIG_BPF_SYSCALL
 void bpf_prog_put(struct bpf_prog *prog);
+struct bpf_prog *bpf_prog_get(u32 ufd);
 #else
 static inline void bpf_prog_put(struct bpf_prog *prog) {}
+static inline struct bpf_prog *bpf_prog_get(u32 ufd)
+{
+	return ERR_PTR(-ENOENT);
+}
 #endif
-struct bpf_prog *bpf_prog_get(u32 ufd);
 /* verify correctness of eBPF program */
 int bpf_check(struct bpf_prog *fp, union bpf_attr *attr);
 
diff --git a/include/linux/ftrace_event.h b/include/linux/ftrace_event.h
index 0bebb5c348b8..479d0a4a42b3 100644
--- a/include/linux/ftrace_event.h
+++ b/include/linux/ftrace_event.h
@@ -13,6 +13,7 @@ struct trace_array;
 struct trace_buffer;
 struct tracer;
 struct dentry;
+struct bpf_prog;
 
 struct trace_print_flags {
 	unsigned long		mask;
@@ -299,6 +300,7 @@ struct ftrace_event_call {
 #ifdef CONFIG_PERF_EVENTS
 	int				perf_refcount;
 	struct hlist_head __percpu	*perf_events;
+	struct bpf_prog			*prog;
 
 	int	(*perf_perm)(struct ftrace_event_call *,
 			     struct perf_event *);
@@ -544,6 +546,15 @@ event_trigger_unlock_commit_regs(struct ftrace_event_file *file,
 		event_triggers_post_call(file, tt);
 }
 
+#ifdef CONFIG_BPF_SYSCALL
+unsigned int trace_call_bpf(struct bpf_prog *prog, void *ctx);
+#else
+static inline unsigned int trace_call_bpf(struct bpf_prog *prog, void *ctx)
+{
+	return 1;
+}
+#endif
+
 enum {
 	FILTER_OTHER = 0,
 	FILTER_STATIC_STRING,
diff --git a/include/trace/bpf_trace.h b/include/trace/bpf_trace.h
new file mode 100644
index 000000000000..4e64f61f484d
--- /dev/null
+++ b/include/trace/bpf_trace.h
@@ -0,0 +1,25 @@
+/* Copyright (c) 2011-2015 PLUMgrid, http://plumgrid.com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ */
+#ifndef _LINUX_KERNEL_BPF_TRACE_H
+#define _LINUX_KERNEL_BPF_TRACE_H
+
+/* For tracepoint filters argN fields match one to one to arguments
+ * passed to tracepoint events
+ *
+ * For syscall entry filters argN fields match syscall arguments
+ * For syscall exit filters arg1 is a return value
+ */
+struct bpf_context {
+	u64 arg1;
+	u64 arg2;
+	u64 arg3;
+	u64 arg4;
+	u64 arg5;
+	u64 arg6;
+};
+
+#endif /* _LINUX_KERNEL_BPF_TRACE_H */
diff --git a/include/trace/ftrace.h b/include/trace/ftrace.h
index 139b5067345b..4c275ce2dcf0 100644
--- a/include/trace/ftrace.h
+++ b/include/trace/ftrace.h
@@ -17,6 +17,7 @@
  */
 
 #include <linux/ftrace_event.h>
+#include <trace/bpf_trace.h>
 
 /*
  * DECLARE_EVENT_CLASS can be used to add a generic function
@@ -755,12 +756,32 @@ __attribute__((section("_ftrace_events"))) *__event_##call = &event_##call
 #undef __perf_task
 #define __perf_task(t)	(__task = (t))
 
+/* zero extend integer, pointer or aggregate type to u64 without warnings */
+#define __CAST_TO_U64(EXPR) ({ \
+	u64 ret = 0; \
+	typeof(EXPR) expr = EXPR; \
+	switch (sizeof(expr)) { \
+	case 8: ret = *(u64 *) &expr; break; \
+	case 4: ret = *(u32 *) &expr; break; \
+	case 2: ret = *(u16 *) &expr; break; \
+	case 1: ret = *(u8 *) &expr; break; \
+	} \
+	ret; })
+
+#define __BPF_CAST1(a,...) __CAST_TO_U64(a)
+#define __BPF_CAST2(a,...) __CAST_TO_U64(a), __BPF_CAST1(__VA_ARGS__)
+#define __BPF_CAST3(a,...) __CAST_TO_U64(a), __BPF_CAST2(__VA_ARGS__)
+#define __BPF_CAST4(a,...) __CAST_TO_U64(a), __BPF_CAST3(__VA_ARGS__)
+#define __BPF_CAST5(a,...) __CAST_TO_U64(a), __BPF_CAST4(__VA_ARGS__)
+#define __BPF_CAST6(a,...) __CAST_TO_U64(a), __BPF_CAST5(__VA_ARGS__)
+
 #undef DECLARE_EVENT_CLASS
 #define DECLARE_EVENT_CLASS(call, proto, args, tstruct, assign, print)	\
 static notrace void							\
 perf_trace_##call(void *__data, proto)					\
 {									\
 	struct ftrace_event_call *event_call = __data;			\
+	struct bpf_prog *prog = event_call->prog;			\
 	struct ftrace_data_offsets_##call __maybe_unused __data_offsets;\
 	struct ftrace_raw_##call *entry;				\
 	struct pt_regs __regs;						\
@@ -771,6 +792,16 @@ perf_trace_##call(void *__data, proto)					\
 	int __data_size;						\
 	int rctx;							\
 									\
+	if (prog) {							\
+		__maybe_unused const u64 z = 0;				\
+		struct bpf_context __ctx = ((struct bpf_context) {	\
+				__BPF_CAST6(args, z, z, z, z, z)	\
+			});						\
+									\
+		if (!trace_call_bpf(prog, &__ctx))			\
+			return;						\
+	}								\
+									\
 	__data_size = ftrace_get_offsets_##call(&__data_offsets, args); \
 									\
 	head = this_cpu_ptr(event_call->perf_events);			\
diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h
index 45da7ec7d274..d73d7d0abe6e 100644
--- a/include/uapi/linux/bpf.h
+++ b/include/uapi/linux/bpf.h
@@ -118,6 +118,7 @@ enum bpf_map_type {
 enum bpf_prog_type {
 	BPF_PROG_TYPE_UNSPEC,
 	BPF_PROG_TYPE_SOCKET_FILTER,
+	BPF_PROG_TYPE_TRACEPOINT,
 };
 
 /* flags for BPF_MAP_UPDATE_ELEM command */
@@ -162,6 +163,12 @@ enum bpf_func_id {
 	BPF_FUNC_map_lookup_elem, /* void *map_lookup_elem(&map, &key) */
 	BPF_FUNC_map_update_elem, /* int map_update_elem(&map, &key, &value, flags) */
 	BPF_FUNC_map_delete_elem, /* int map_delete_elem(&map, &key) */
+	BPF_FUNC_fetch_ptr,       /* void *bpf_fetch_ptr(void *unsafe_ptr) */
+	BPF_FUNC_fetch_u64,       /* u64 bpf_fetch_u64(void *unsafe_ptr) */
+	BPF_FUNC_fetch_u32,       /* u32 bpf_fetch_u32(void *unsafe_ptr) */
+	BPF_FUNC_fetch_u16,       /* u16 bpf_fetch_u16(void *unsafe_ptr) */
+	BPF_FUNC_fetch_u8,        /* u8 bpf_fetch_u8(void *unsafe_ptr) */
+	BPF_FUNC_probe_memcmp,    /* int bpf_probe_memcmp(unsafe_ptr, safe_ptr, size) */
 	__BPF_FUNC_MAX_ID,
 };
 
diff --git a/include/uapi/linux/perf_event.h b/include/uapi/linux/perf_event.h
index 9b79abbd1ab8..d7ba67234761 100644
--- a/include/uapi/linux/perf_event.h
+++ b/include/uapi/linux/perf_event.h
@@ -360,6 +360,7 @@ struct perf_event_attr {
 #define PERF_EVENT_IOC_SET_OUTPUT	_IO ('$', 5)
 #define PERF_EVENT_IOC_SET_FILTER	_IOW('$', 6, char *)
 #define PERF_EVENT_IOC_ID		_IOR('$', 7, __u64 *)
+#define PERF_EVENT_IOC_SET_BPF		_IOW('$', 8, __u32)
 
 enum perf_event_ioc_flags {
 	PERF_IOC_FLAG_GROUP		= 1U << 0,
diff --git a/kernel/events/core.c b/kernel/events/core.c
index 882f835a0d85..674a8ca17190 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -42,6 +42,8 @@
 #include <linux/module.h>
 #include <linux/mman.h>
 #include <linux/compat.h>
+#include <linux/bpf.h>
+#include <linux/filter.h>
 
 #include "internal.h"
 
@@ -3283,6 +3285,7 @@ errout:
 }
 
 static void perf_event_free_filter(struct perf_event *event);
+static void perf_event_free_bpf_prog(struct perf_event *event);
 
 static void free_event_rcu(struct rcu_head *head)
 {
@@ -3292,6 +3295,7 @@ static void free_event_rcu(struct rcu_head *head)
 	if (event->ns)
 		put_pid_ns(event->ns);
 	perf_event_free_filter(event);
+	perf_event_free_bpf_prog(event);
 	kfree(event);
 }
 
@@ -3795,6 +3799,7 @@ static inline int perf_fget_light(int fd, struct fd *p)
 static int perf_event_set_output(struct perf_event *event,
 				 struct perf_event *output_event);
 static int perf_event_set_filter(struct perf_event *event, void __user *arg);
+static int perf_event_set_bpf_prog(struct perf_event *event, u32 prog_fd);
 
 static long perf_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
 {
@@ -3849,6 +3854,9 @@ static long perf_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
 	case PERF_EVENT_IOC_SET_FILTER:
 		return perf_event_set_filter(event, (void __user *)arg);
 
+	case PERF_EVENT_IOC_SET_BPF:
+		return perf_event_set_bpf_prog(event, arg);
+
 	default:
 		return -ENOTTY;
 	}
@@ -6266,6 +6274,45 @@ static void perf_event_free_filter(struct perf_event *event)
 	ftrace_profile_free_filter(event);
 }
 
+static int perf_event_set_bpf_prog(struct perf_event *event, u32 prog_fd)
+{
+	struct bpf_prog *prog;
+
+	if (event->attr.type != PERF_TYPE_TRACEPOINT)
+		return -EINVAL;
+
+	if (event->tp_event->prog)
+		return -EEXIST;
+
+	prog = bpf_prog_get(prog_fd);
+	if (IS_ERR(prog))
+		return PTR_ERR(prog);
+
+	if (prog->aux->prog_type != BPF_PROG_TYPE_TRACEPOINT) {
+		/* valid fd, but invalid bpf program type */
+		bpf_prog_put(prog);
+		return -EINVAL;
+	}
+
+	event->tp_event->prog = prog;
+
+	return 0;
+}
+
+static void perf_event_free_bpf_prog(struct perf_event *event)
+{
+	struct bpf_prog *prog;
+
+	if (!event->tp_event)
+		return;
+
+	prog = event->tp_event->prog;
+	if (prog) {
+		event->tp_event->prog = NULL;
+		bpf_prog_put(prog);
+	}
+}
+
 #else
 
 static inline void perf_tp_register(void)
@@ -6281,6 +6328,14 @@ static void perf_event_free_filter(struct perf_event *event)
 {
 }
 
+static int perf_event_set_bpf_prog(struct perf_event *event, u32 prog_fd)
+{
+	return -ENOENT;
+}
+
+static void perf_event_free_bpf_prog(struct perf_event *event)
+{
+}
 #endif /* CONFIG_EVENT_TRACING */
 
 #ifdef CONFIG_HAVE_HW_BREAKPOINT
diff --git a/kernel/trace/Makefile b/kernel/trace/Makefile
index 979ccde26720..54ae225e5fc6 100644
--- a/kernel/trace/Makefile
+++ b/kernel/trace/Makefile
@@ -53,6 +53,7 @@ obj-$(CONFIG_EVENT_TRACING) += trace_event_perf.o
 endif
 obj-$(CONFIG_EVENT_TRACING) += trace_events_filter.o
 obj-$(CONFIG_EVENT_TRACING) += trace_events_trigger.o
+obj-$(CONFIG_BPF_SYSCALL) += bpf_trace.o
 obj-$(CONFIG_KPROBE_EVENT) += trace_kprobe.o
 obj-$(CONFIG_TRACEPOINTS) += power-traces.o
 ifeq ($(CONFIG_PM),y)
diff --git a/kernel/trace/bpf_trace.c b/kernel/trace/bpf_trace.c
new file mode 100644
index 000000000000..ec065e0a364e
--- /dev/null
+++ b/kernel/trace/bpf_trace.c
@@ -0,0 +1,145 @@
+/* Copyright (c) 2011-2015 PLUMgrid, http://plumgrid.com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ */
+#include <linux/kernel.h>
+#include <linux/types.h>
+#include <linux/slab.h>
+#include <linux/bpf.h>
+#include <linux/filter.h>
+#include <linux/uaccess.h>
+#include <trace/bpf_trace.h>
+#include "trace.h"
+
+unsigned int trace_call_bpf(struct bpf_prog *prog, void *ctx)
+{
+	unsigned int ret;
+
+	if (in_nmi()) /* not supported yet */
+		return 1;
+
+	rcu_read_lock();
+	ret = BPF_PROG_RUN(prog, ctx);
+	rcu_read_unlock();
+
+	return ret;
+}
+EXPORT_SYMBOL_GPL(trace_call_bpf);
+
+static u64 bpf_fetch_ptr(u64 r1, u64 r2, u64 r3, u64 r4, u64 r5)
+{
+	void *unsafe_ptr = (void *) (long) r1;
+	void *ptr = NULL;
+
+	probe_kernel_read(&ptr, unsafe_ptr, sizeof(ptr));
+	return (u64) (unsigned long) ptr;
+}
+
+#define FETCH(SIZE) \
+static u64 bpf_fetch_##SIZE(u64 r1, u64 r2, u64 r3, u64 r4, u64 r5)	\
+{									\
+	void *unsafe_ptr = (void *) (long) r1;				\
+	SIZE val = 0;							\
+									\
+	probe_kernel_read(&val, unsafe_ptr, sizeof(val));		\
+	return (u64) (SIZE) val;					\
+}
+FETCH(u64)
+FETCH(u32)
+FETCH(u16)
+FETCH(u8)
+#undef FETCH
+
+static u64 bpf_probe_memcmp(u64 r1, u64 r2, u64 r3, u64 r4, u64 r5)
+{
+	void *unsafe_ptr = (void *) (long) r1;
+	void *safe_ptr = (void *) (long) r2;
+	u32 size = (u32) r3;
+	char buf[64];
+	int err;
+
+	if (size < 64) {
+		err = probe_kernel_read(buf, unsafe_ptr, size);
+		if (err)
+			return err;
+		return memcmp(buf, safe_ptr, size);
+	}
+	return -1;
+}
+
+static struct bpf_func_proto tp_prog_funcs[] = {
+#define FETCH(SIZE)				\
+	[BPF_FUNC_fetch_##SIZE] = {		\
+		.func = bpf_fetch_##SIZE,	\
+		.gpl_only = true,		\
+		.ret_type = RET_INTEGER,	\
+	},
+	FETCH(ptr)
+	FETCH(u64)
+	FETCH(u32)
+	FETCH(u16)
+	FETCH(u8)
+#undef FETCH
+	[BPF_FUNC_probe_memcmp] = {
+		.func = bpf_probe_memcmp,
+		.gpl_only = false,
+		.ret_type = RET_INTEGER,
+		.arg1_type = ARG_ANYTHING,
+		.arg2_type = ARG_PTR_TO_STACK,
+		.arg3_type = ARG_CONST_STACK_SIZE,
+	},
+};
+
+static const struct bpf_func_proto *tp_prog_func_proto(enum bpf_func_id func_id)
+{
+	switch (func_id) {
+	case BPF_FUNC_map_lookup_elem:
+		return &bpf_map_lookup_elem_proto;
+	case BPF_FUNC_map_update_elem:
+		return &bpf_map_update_elem_proto;
+	case BPF_FUNC_map_delete_elem:
+		return &bpf_map_delete_elem_proto;
+	default:
+		if (func_id < 0 || func_id >= ARRAY_SIZE(tp_prog_funcs))
+			return NULL;
+		return &tp_prog_funcs[func_id];
+	}
+}
+
+/* check access to argN fields of 'struct bpf_context' from program */
+static bool tp_prog_is_valid_access(int off, int size,
+				    enum bpf_access_type type)
+{
+	/* check bounds */
+	if (off < 0 || off >= sizeof(struct bpf_context))
+		return false;
+
+	/* only read is allowed */
+	if (type != BPF_READ)
+		return false;
+
+	/* disallow misaligned access */
+	if (off % size != 0)
+		return false;
+
+	return true;
+}
+
+static struct bpf_verifier_ops tp_prog_ops = {
+	.get_func_proto = tp_prog_func_proto,
+	.is_valid_access = tp_prog_is_valid_access,
+};
+
+static struct bpf_prog_type_list tl = {
+	.ops = &tp_prog_ops,
+	.type = BPF_PROG_TYPE_TRACEPOINT,
+};
+
+static int __init register_tp_prog_ops(void)
+{
+	bpf_register_prog_type(&tl);
+	return 0;
+}
+late_initcall(register_tp_prog_ops);
diff --git a/kernel/trace/trace_syscalls.c b/kernel/trace/trace_syscalls.c
index c6ee36fcbf90..3487c41f4c0e 100644
--- a/kernel/trace/trace_syscalls.c
+++ b/kernel/trace/trace_syscalls.c
@@ -7,6 +7,7 @@
 #include <linux/ftrace.h>
 #include <linux/perf_event.h>
 #include <asm/syscall.h>
+#include <trace/bpf_trace.h>
 
 #include "trace_output.h"
 #include "trace.h"
@@ -545,11 +546,26 @@ static DECLARE_BITMAP(enabled_perf_exit_syscalls, NR_syscalls);
 static int sys_perf_refcount_enter;
 static int sys_perf_refcount_exit;
 
+static void populate_bpf_ctx(struct bpf_context *ctx, struct pt_regs *regs)
+{
+	struct task_struct *task = current;
+	unsigned long args[6];
+
+	syscall_get_arguments(task, regs, 0, 6, args);
+	ctx->arg1 = args[0];
+	ctx->arg2 = args[1];
+	ctx->arg3 = args[2];
+	ctx->arg4 = args[3];
+	ctx->arg5 = args[4];
+	ctx->arg6 = args[5];
+}
+
 static void perf_syscall_enter(void *ignore, struct pt_regs *regs, long id)
 {
 	struct syscall_metadata *sys_data;
 	struct syscall_trace_enter *rec;
 	struct hlist_head *head;
+	struct bpf_prog *prog;
 	int syscall_nr;
 	int rctx;
 	int size;
@@ -564,6 +580,15 @@ static void perf_syscall_enter(void *ignore, struct pt_regs *regs, long id)
 	if (!sys_data)
 		return;
 
+	prog = sys_data->enter_event->prog;
+	if (prog) {
+		struct bpf_context ctx;
+
+		populate_bpf_ctx(&ctx, regs);
+		if (!trace_call_bpf(prog, &ctx))
+			return;
+	}
+
 	head = this_cpu_ptr(sys_data->enter_event->perf_events);
 	if (hlist_empty(head))
 		return;
@@ -624,6 +649,7 @@ static void perf_syscall_exit(void *ignore, struct pt_regs *regs, long ret)
 	struct syscall_metadata *sys_data;
 	struct syscall_trace_exit *rec;
 	struct hlist_head *head;
+	struct bpf_prog *prog;
 	int syscall_nr;
 	int rctx;
 	int size;
@@ -638,6 +664,15 @@ static void perf_syscall_exit(void *ignore, struct pt_regs *regs, long ret)
 	if (!sys_data)
 		return;
 
+	prog = sys_data->exit_event->prog;
+	if (prog) {
+		struct bpf_context ctx = {};
+
+		ctx.arg1 = syscall_get_return_value(current, regs);
+		if (!trace_call_bpf(prog, &ctx))
+			return;
+	}
+
 	head = this_cpu_ptr(sys_data->exit_event->perf_events);
 	if (hlist_empty(head))
 		return;
-- 
1.7.9.5

^ permalink raw reply related


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