* [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, ¶ms);
--
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® 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
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox