mirror of
https://github.com/linuxkit/linuxkit.git
synced 2025-07-27 20:48:11 +00:00
Fixup kernel patch whitepace
Some of git's whitespace fixup option corrupts the patches by (at least) stripping trailing spaces (which are present for empty lines in context) and changing leading <space><tab> into just <tab>. `patch(1)` used by the build here seems to tolerate this, but `git am` and/or `git apply` do not. Fix this up by running git am and at each failure point (i.e. every patch) applying the relevant patch using `patch(1)` (which works because `git am` was unable to even partially apply the patches) before regenerating the whole lot with `git format-patch`. Signed-off-by: Ian Campbell <ian.campbell@docker.com>
This commit is contained in:
parent
93cdf15977
commit
605163eb1d
@ -1,4 +1,4 @@
|
|||||||
From 888876dd84da7cdcb7c2ce7568efb2a2adbc9031 Mon Sep 17 00:00:00 2001
|
From c05011868782b0fbad73702161492e953eacbcbf Mon Sep 17 00:00:00 2001
|
||||||
From: Ian Campbell <ian.campbell@docker.com>
|
From: Ian Campbell <ian.campbell@docker.com>
|
||||||
Date: Mon, 4 Apr 2016 14:50:10 +0100
|
Date: Mon, 4 Apr 2016 14:50:10 +0100
|
||||||
Subject: [PATCH 1/5] VSOCK: Only allow host network namespace to use AF_VSOCK.
|
Subject: [PATCH 1/5] VSOCK: Only allow host network namespace to use AF_VSOCK.
|
||||||
@ -17,13 +17,14 @@ index 8a398b3..0edc54c 100644
|
|||||||
+++ b/net/vmw_vsock/af_vsock.c
|
+++ b/net/vmw_vsock/af_vsock.c
|
||||||
@@ -1852,6 +1852,9 @@ static const struct proto_ops vsock_stream_ops = {
|
@@ -1852,6 +1852,9 @@ static const struct proto_ops vsock_stream_ops = {
|
||||||
static int vsock_create(struct net *net, struct socket *sock,
|
static int vsock_create(struct net *net, struct socket *sock,
|
||||||
int protocol, int kern)
|
int protocol, int kern)
|
||||||
{
|
{
|
||||||
+ if (!net_eq(net, &init_net))
|
+ if (!net_eq(net, &init_net))
|
||||||
+ return -EAFNOSUPPORT;
|
+ return -EAFNOSUPPORT;
|
||||||
+
|
+
|
||||||
if (!sock)
|
if (!sock)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
|
--
|
||||||
|
2.10.2
|
||||||
|
|
||||||
--
|
|
||||||
2.10.1
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
From 478faef05c2fd212054793b4f5fde3f7ad502e20 Mon Sep 17 00:00:00 2001
|
From 457218c0979bb7272eca5e3a6039161890d7dcb5 Mon Sep 17 00:00:00 2001
|
||||||
From: Dexuan Cui <decui@microsoft.com>
|
From: Dexuan Cui <decui@microsoft.com>
|
||||||
Date: Sat, 21 May 2016 16:55:50 +0800
|
Date: Sat, 21 May 2016 16:55:50 +0800
|
||||||
Subject: [PATCH 2/5] Drivers: hv: vmbus: fix the race when querying & updating
|
Subject: [PATCH 2/5] Drivers: hv: vmbus: fix the race when querying & updating
|
||||||
@ -32,12 +32,12 @@ index 56dd261..75343e0 100644
|
|||||||
--- a/drivers/hv/channel.c
|
--- a/drivers/hv/channel.c
|
||||||
+++ b/drivers/hv/channel.c
|
+++ b/drivers/hv/channel.c
|
||||||
@@ -592,6 +592,7 @@ static int vmbus_close_internal(struct vmbus_channel *channel)
|
@@ -592,6 +592,7 @@ static int vmbus_close_internal(struct vmbus_channel *channel)
|
||||||
|
|
||||||
out:
|
out:
|
||||||
tasklet_enable(tasklet);
|
tasklet_enable(tasklet);
|
||||||
+ tasklet_schedule(tasklet);
|
+ tasklet_schedule(tasklet);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
diff --git a/drivers/hv/channel_mgmt.c b/drivers/hv/channel_mgmt.c
|
diff --git a/drivers/hv/channel_mgmt.c b/drivers/hv/channel_mgmt.c
|
||||||
index b6c1211..8f4e6070 100644
|
index b6c1211..8f4e6070 100644
|
||||||
@ -45,7 +45,7 @@ index b6c1211..8f4e6070 100644
|
|||||||
+++ b/drivers/hv/channel_mgmt.c
|
+++ b/drivers/hv/channel_mgmt.c
|
||||||
@@ -21,6 +21,7 @@
|
@@ -21,6 +21,7 @@
|
||||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||||
|
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
+#include <linux/interrupt.h>
|
+#include <linux/interrupt.h>
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
@ -53,80 +53,81 @@ index b6c1211..8f4e6070 100644
|
|||||||
#include <linux/mm.h>
|
#include <linux/mm.h>
|
||||||
@@ -307,12 +308,13 @@ void hv_process_channel_removal(struct vmbus_channel *channel, u32 relid)
|
@@ -307,12 +308,13 @@ void hv_process_channel_removal(struct vmbus_channel *channel, u32 relid)
|
||||||
{
|
{
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
struct vmbus_channel *primary_channel;
|
struct vmbus_channel *primary_channel;
|
||||||
-
|
-
|
||||||
- vmbus_release_relid(relid);
|
- vmbus_release_relid(relid);
|
||||||
+ struct tasklet_struct *tasklet;
|
+ struct tasklet_struct *tasklet;
|
||||||
|
|
||||||
BUG_ON(!channel->rescind);
|
BUG_ON(!channel->rescind);
|
||||||
BUG_ON(!mutex_is_locked(&vmbus_connection.channel_mutex));
|
BUG_ON(!mutex_is_locked(&vmbus_connection.channel_mutex));
|
||||||
|
|
||||||
+ tasklet = hv_context.event_dpc[channel->target_cpu];
|
+ tasklet = hv_context.event_dpc[channel->target_cpu];
|
||||||
+ tasklet_disable(tasklet);
|
+ tasklet_disable(tasklet);
|
||||||
if (channel->target_cpu != get_cpu()) {
|
if (channel->target_cpu != get_cpu()) {
|
||||||
put_cpu();
|
put_cpu();
|
||||||
smp_call_function_single(channel->target_cpu,
|
smp_call_function_single(channel->target_cpu,
|
||||||
@@ -321,6 +323,8 @@ void hv_process_channel_removal(struct vmbus_channel *channel, u32 relid)
|
@@ -321,6 +323,8 @@ void hv_process_channel_removal(struct vmbus_channel *channel, u32 relid)
|
||||||
percpu_channel_deq(channel);
|
percpu_channel_deq(channel);
|
||||||
put_cpu();
|
put_cpu();
|
||||||
}
|
}
|
||||||
+ tasklet_enable(tasklet);
|
+ tasklet_enable(tasklet);
|
||||||
+ tasklet_schedule(tasklet);
|
+ tasklet_schedule(tasklet);
|
||||||
|
|
||||||
if (channel->primary_channel == NULL) {
|
if (channel->primary_channel == NULL) {
|
||||||
list_del(&channel->listentry);
|
list_del(&channel->listentry);
|
||||||
@@ -342,6 +346,8 @@ void hv_process_channel_removal(struct vmbus_channel *channel, u32 relid)
|
@@ -342,6 +346,8 @@ void hv_process_channel_removal(struct vmbus_channel *channel, u32 relid)
|
||||||
&primary_channel->alloced_cpus_in_node);
|
&primary_channel->alloced_cpus_in_node);
|
||||||
|
|
||||||
free_channel(channel);
|
free_channel(channel);
|
||||||
+
|
+
|
||||||
+ vmbus_release_relid(relid);
|
+ vmbus_release_relid(relid);
|
||||||
}
|
}
|
||||||
|
|
||||||
void vmbus_free_channels(void)
|
void vmbus_free_channels(void)
|
||||||
@@ -363,6 +369,7 @@ void vmbus_free_channels(void)
|
@@ -363,6 +369,7 @@ void vmbus_free_channels(void)
|
||||||
*/
|
*/
|
||||||
static void vmbus_process_offer(struct vmbus_channel *newchannel)
|
static void vmbus_process_offer(struct vmbus_channel *newchannel)
|
||||||
{
|
{
|
||||||
+ struct tasklet_struct *tasklet;
|
+ struct tasklet_struct *tasklet;
|
||||||
struct vmbus_channel *channel;
|
struct vmbus_channel *channel;
|
||||||
bool fnew = true;
|
bool fnew = true;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
@@ -409,6 +416,8 @@ static void vmbus_process_offer(struct vmbus_channel *newchannel)
|
@@ -409,6 +416,8 @@ static void vmbus_process_offer(struct vmbus_channel *newchannel)
|
||||||
|
|
||||||
init_vp_index(newchannel, dev_type);
|
init_vp_index(newchannel, dev_type);
|
||||||
|
|
||||||
+ tasklet = hv_context.event_dpc[newchannel->target_cpu];
|
+ tasklet = hv_context.event_dpc[newchannel->target_cpu];
|
||||||
+ tasklet_disable(tasklet);
|
+ tasklet_disable(tasklet);
|
||||||
if (newchannel->target_cpu != get_cpu()) {
|
if (newchannel->target_cpu != get_cpu()) {
|
||||||
put_cpu();
|
put_cpu();
|
||||||
smp_call_function_single(newchannel->target_cpu,
|
smp_call_function_single(newchannel->target_cpu,
|
||||||
@@ -418,6 +427,8 @@ static void vmbus_process_offer(struct vmbus_channel *newchannel)
|
@@ -418,6 +427,8 @@ static void vmbus_process_offer(struct vmbus_channel *newchannel)
|
||||||
percpu_channel_enq(newchannel);
|
percpu_channel_enq(newchannel);
|
||||||
put_cpu();
|
put_cpu();
|
||||||
}
|
}
|
||||||
+ tasklet_enable(tasklet);
|
+ tasklet_enable(tasklet);
|
||||||
+ tasklet_schedule(tasklet);
|
+ tasklet_schedule(tasklet);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This state is used to indicate a successful open
|
* This state is used to indicate a successful open
|
||||||
@@ -469,6 +480,7 @@ err_deq_chan:
|
@@ -469,6 +480,7 @@ err_deq_chan:
|
||||||
list_del(&newchannel->listentry);
|
list_del(&newchannel->listentry);
|
||||||
mutex_unlock(&vmbus_connection.channel_mutex);
|
mutex_unlock(&vmbus_connection.channel_mutex);
|
||||||
|
|
||||||
+ tasklet_disable(tasklet);
|
+ tasklet_disable(tasklet);
|
||||||
if (newchannel->target_cpu != get_cpu()) {
|
if (newchannel->target_cpu != get_cpu()) {
|
||||||
put_cpu();
|
put_cpu();
|
||||||
smp_call_function_single(newchannel->target_cpu,
|
smp_call_function_single(newchannel->target_cpu,
|
||||||
@@ -477,6 +489,8 @@ err_deq_chan:
|
@@ -477,6 +489,8 @@ err_deq_chan:
|
||||||
percpu_channel_deq(newchannel);
|
percpu_channel_deq(newchannel);
|
||||||
put_cpu();
|
put_cpu();
|
||||||
}
|
}
|
||||||
+ tasklet_enable(tasklet);
|
+ tasklet_enable(tasklet);
|
||||||
+ tasklet_schedule(tasklet);
|
+ tasklet_schedule(tasklet);
|
||||||
|
|
||||||
err_free_chan:
|
err_free_chan:
|
||||||
free_channel(newchannel);
|
free_channel(newchannel);
|
||||||
--
|
--
|
||||||
2.10.1
|
2.10.2
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
From ccd1d4920969d0dcba862dc98f9b4747a383bfe2 Mon Sep 17 00:00:00 2001
|
From f1b841ced482479a9ff9fb5dce29e47d563a1dba Mon Sep 17 00:00:00 2001
|
||||||
From: Dexuan Cui <decui@microsoft.com>
|
From: Dexuan Cui <decui@microsoft.com>
|
||||||
Date: Sat, 23 Jul 2016 01:35:51 +0000
|
Date: Sat, 23 Jul 2016 01:35:51 +0000
|
||||||
Subject: [PATCH 3/5] hv_sock: introduce Hyper-V Sockets
|
Subject: [PATCH 3/5] hv_sock: introduce Hyper-V Sockets
|
||||||
@ -30,12 +30,11 @@ Origin: https://patchwork.kernel.org/patch/9244467/
|
|||||||
include/linux/socket.h | 4 +-
|
include/linux/socket.h | 4 +-
|
||||||
include/net/af_hvsock.h | 78 +++
|
include/net/af_hvsock.h | 78 +++
|
||||||
include/uapi/linux/hyperv.h | 23 +
|
include/uapi/linux/hyperv.h | 23 +
|
||||||
net/Kconfig | 1 +
|
|
||||||
net/Makefile | 1 +
|
net/Makefile | 1 +
|
||||||
net/hv_sock/Kconfig | 10 +
|
net/hv_sock/Kconfig | 10 +
|
||||||
net/hv_sock/Makefile | 3 +
|
net/hv_sock/Makefile | 3 +
|
||||||
net/hv_sock/af_hvsock.c | 1507 +++++++++++++++++++++++++++++++++++++++++++
|
net/hv_sock/af_hvsock.c | 1507 +++++++++++++++++++++++++++++++++++++++++++
|
||||||
10 files changed, 1641 insertions(+), 1 deletion(-)
|
9 files changed, 1640 insertions(+), 1 deletion(-)
|
||||||
create mode 100644 include/net/af_hvsock.h
|
create mode 100644 include/net/af_hvsock.h
|
||||||
create mode 100644 net/hv_sock/Kconfig
|
create mode 100644 net/hv_sock/Kconfig
|
||||||
create mode 100644 net/hv_sock/Makefile
|
create mode 100644 net/hv_sock/Makefile
|
||||||
@ -54,15 +53,15 @@ index babaf82..6126545 100644
|
|||||||
+F: include/net/af_hvsock.h
|
+F: include/net/af_hvsock.h
|
||||||
F: tools/hv/
|
F: tools/hv/
|
||||||
F: Documentation/ABI/stable/sysfs-bus-vmbus
|
F: Documentation/ABI/stable/sysfs-bus-vmbus
|
||||||
|
|
||||||
diff --git a/include/linux/hyperv.h b/include/linux/hyperv.h
|
diff --git a/include/linux/hyperv.h b/include/linux/hyperv.h
|
||||||
index b10954a..50f8976 100644
|
index b10954a..50f8976 100644
|
||||||
--- a/include/linux/hyperv.h
|
--- a/include/linux/hyperv.h
|
||||||
+++ b/include/linux/hyperv.h
|
+++ b/include/linux/hyperv.h
|
||||||
@@ -1505,5 +1505,18 @@ static inline void commit_rd_index(struct vmbus_channel *channel)
|
@@ -1505,5 +1505,18 @@ static inline void commit_rd_index(struct vmbus_channel *channel)
|
||||||
vmbus_set_event(channel);
|
vmbus_set_event(channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
+struct vmpipe_proto_header {
|
+struct vmpipe_proto_header {
|
||||||
+ u32 pkt_type;
|
+ u32 pkt_type;
|
||||||
+ u32 data_size;
|
+ u32 data_size;
|
||||||
@ -73,7 +72,7 @@ index b10954a..50f8976 100644
|
|||||||
+
|
+
|
||||||
+/* See 'prev_indices' in hv_ringbuffer_read(), hv_ringbuffer_write() */
|
+/* See 'prev_indices' in hv_ringbuffer_read(), hv_ringbuffer_write() */
|
||||||
+#define PREV_INDICES_LEN (sizeof(u64))
|
+#define PREV_INDICES_LEN (sizeof(u64))
|
||||||
|
|
||||||
+#define HVSOCK_PKT_LEN(payload_len) (HVSOCK_HEADER_LEN + \
|
+#define HVSOCK_PKT_LEN(payload_len) (HVSOCK_HEADER_LEN + \
|
||||||
+ ALIGN((payload_len), 8) + \
|
+ ALIGN((payload_len), 8) + \
|
||||||
+ PREV_INDICES_LEN)
|
+ PREV_INDICES_LEN)
|
||||||
@ -87,10 +86,10 @@ index b5cc5a6..0b68b58 100644
|
|||||||
#define AF_KCM 41 /* Kernel Connection Multiplexor*/
|
#define AF_KCM 41 /* Kernel Connection Multiplexor*/
|
||||||
#define AF_QIPCRTR 42 /* Qualcomm IPC Router */
|
#define AF_QIPCRTR 42 /* Qualcomm IPC Router */
|
||||||
+#define AF_HYPERV 43 /* Hyper-V Sockets */
|
+#define AF_HYPERV 43 /* Hyper-V Sockets */
|
||||||
|
|
||||||
-#define AF_MAX 43 /* For now.. */
|
-#define AF_MAX 43 /* For now.. */
|
||||||
+#define AF_MAX 44 /* For now.. */
|
+#define AF_MAX 44 /* For now.. */
|
||||||
|
|
||||||
/* Protocol families, same as address families. */
|
/* Protocol families, same as address families. */
|
||||||
#define PF_UNSPEC AF_UNSPEC
|
#define PF_UNSPEC AF_UNSPEC
|
||||||
@@ -251,6 +252,7 @@ struct ucred {
|
@@ -251,6 +252,7 @@ struct ucred {
|
||||||
@ -99,7 +98,7 @@ index b5cc5a6..0b68b58 100644
|
|||||||
#define PF_QIPCRTR AF_QIPCRTR
|
#define PF_QIPCRTR AF_QIPCRTR
|
||||||
+#define PF_HYPERV AF_HYPERV
|
+#define PF_HYPERV AF_HYPERV
|
||||||
#define PF_MAX AF_MAX
|
#define PF_MAX AF_MAX
|
||||||
|
|
||||||
/* Maximum queue length specifiable by listen. */
|
/* Maximum queue length specifiable by listen. */
|
||||||
diff --git a/include/net/af_hvsock.h b/include/net/af_hvsock.h
|
diff --git a/include/net/af_hvsock.h b/include/net/af_hvsock.h
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
@ -191,16 +190,16 @@ index e347b24..eb3e44b 100644
|
|||||||
+++ b/include/uapi/linux/hyperv.h
|
+++ b/include/uapi/linux/hyperv.h
|
||||||
@@ -26,6 +26,7 @@
|
@@ -26,6 +26,7 @@
|
||||||
#define _UAPI_HYPERV_H
|
#define _UAPI_HYPERV_H
|
||||||
|
|
||||||
#include <linux/uuid.h>
|
#include <linux/uuid.h>
|
||||||
+#include <linux/socket.h>
|
+#include <linux/socket.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Framework version for util services.
|
* Framework version for util services.
|
||||||
@@ -396,4 +397,26 @@ struct hv_kvp_ip_msg {
|
@@ -396,4 +397,26 @@ struct hv_kvp_ip_msg {
|
||||||
struct hv_kvp_ipaddr_value kvp_ip_val;
|
struct hv_kvp_ipaddr_value kvp_ip_val;
|
||||||
} __attribute__((packed));
|
} __attribute__((packed));
|
||||||
|
|
||||||
+/* This is the address format of Hyper-V Sockets.
|
+/* This is the address format of Hyper-V Sockets.
|
||||||
+ * Note: here we just borrow the kernel's built-in type uuid_le. When
|
+ * Note: here we just borrow the kernel's built-in type uuid_le. When
|
||||||
+ * an application calls bind() or connect(), the 2 members of struct
|
+ * an application calls bind() or connect(), the 2 members of struct
|
||||||
@ -224,18 +223,6 @@ index e347b24..eb3e44b 100644
|
|||||||
+#define SHV_PROTO_RAW 1
|
+#define SHV_PROTO_RAW 1
|
||||||
+
|
+
|
||||||
#endif /* _UAPI_HYPERV_H */
|
#endif /* _UAPI_HYPERV_H */
|
||||||
diff --git a/net/Kconfig b/net/Kconfig
|
|
||||||
index c2cdbce..921e86f 100644
|
|
||||||
--- a/net/Kconfig
|
|
||||||
+++ b/net/Kconfig
|
|
||||||
@@ -231,6 +231,7 @@ source "net/dns_resolver/Kconfig"
|
|
||||||
source "net/batman-adv/Kconfig"
|
|
||||||
source "net/openvswitch/Kconfig"
|
|
||||||
source "net/vmw_vsock/Kconfig"
|
|
||||||
+source "net/hv_sock/Kconfig"
|
|
||||||
source "net/netlink/Kconfig"
|
|
||||||
source "net/mpls/Kconfig"
|
|
||||||
source "net/hsr/Kconfig"
|
|
||||||
diff --git a/net/Makefile b/net/Makefile
|
diff --git a/net/Makefile b/net/Makefile
|
||||||
index 9bd20bb..b4d4e9a 100644
|
index 9bd20bb..b4d4e9a 100644
|
||||||
--- a/net/Makefile
|
--- a/net/Makefile
|
||||||
@ -1786,5 +1773,6 @@ index 0000000..331d375
|
|||||||
+
|
+
|
||||||
+MODULE_DESCRIPTION("Hyper-V Sockets");
|
+MODULE_DESCRIPTION("Hyper-V Sockets");
|
||||||
+MODULE_LICENSE("Dual BSD/GPL");
|
+MODULE_LICENSE("Dual BSD/GPL");
|
||||||
--
|
--
|
||||||
2.10.1
|
2.10.2
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
From 59f4c8c2b14753db30aea235624a7d5212a0c715 Mon Sep 17 00:00:00 2001
|
From 39ad80464832bca79a5ae1a0a2de87641ca0be13 Mon Sep 17 00:00:00 2001
|
||||||
From: Rolf Neugebauer <rolf.neugebauer@gmail.com>
|
From: Rolf Neugebauer <rolf.neugebauer@gmail.com>
|
||||||
Date: Mon, 23 May 2016 18:55:45 +0100
|
Date: Mon, 23 May 2016 18:55:45 +0100
|
||||||
Subject: [PATCH 4/5] vmbus: Don't spam the logs with unknown GUIDs
|
Subject: [PATCH 4/5] vmbus: Don't spam the logs with unknown GUIDs
|
||||||
@ -18,12 +18,13 @@ index 8f4e6070..ef4a512 100644
|
|||||||
--- a/drivers/hv/channel_mgmt.c
|
--- a/drivers/hv/channel_mgmt.c
|
||||||
+++ b/drivers/hv/channel_mgmt.c
|
+++ b/drivers/hv/channel_mgmt.c
|
||||||
@@ -147,7 +147,6 @@ static u16 hv_get_dev_type(const uuid_le *guid)
|
@@ -147,7 +147,6 @@ static u16 hv_get_dev_type(const uuid_le *guid)
|
||||||
if (!uuid_le_cmp(*guid, vmbus_devs[i].guid))
|
if (!uuid_le_cmp(*guid, vmbus_devs[i].guid))
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
- pr_info("Unknown GUID: %pUl\n", guid);
|
- pr_info("Unknown GUID: %pUl\n", guid);
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.10.2
|
||||||
|
|
||||||
--
|
|
||||||
2.10.1
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
From 56b20d9d99f039745e3b9e9fe8c4243e90d13334 Mon Sep 17 00:00:00 2001
|
From 3bcb5d6eddbc61f460aa17d6f2a226e0a0a0ed09 Mon Sep 17 00:00:00 2001
|
||||||
From: Eric Dumazet <edumazet@google.com>
|
From: Eric Dumazet <edumazet@google.com>
|
||||||
Date: Mon, 14 Nov 2016 16:28:42 -0800
|
Date: Mon, 14 Nov 2016 16:28:42 -0800
|
||||||
Subject: [PATCH 5/5] gro_cells: mark napi struct as not busy poll candidates
|
Subject: [PATCH 5/5] gro_cells: mark napi struct as not busy poll candidates
|
||||||
@ -36,14 +36,15 @@ index d15214d..2a1abbf 100644
|
|||||||
--- a/include/net/gro_cells.h
|
--- a/include/net/gro_cells.h
|
||||||
+++ b/include/net/gro_cells.h
|
+++ b/include/net/gro_cells.h
|
||||||
@@ -68,6 +68,9 @@ static inline int gro_cells_init(struct gro_cells *gcells, struct net_device *de
|
@@ -68,6 +68,9 @@ static inline int gro_cells_init(struct gro_cells *gcells, struct net_device *de
|
||||||
struct gro_cell *cell = per_cpu_ptr(gcells->cells, i);
|
struct gro_cell *cell = per_cpu_ptr(gcells->cells, i);
|
||||||
|
|
||||||
__skb_queue_head_init(&cell->napi_skbs);
|
__skb_queue_head_init(&cell->napi_skbs);
|
||||||
+
|
+
|
||||||
+ set_bit(NAPI_STATE_NO_BUSY_POLL, &cell->napi.state);
|
+ set_bit(NAPI_STATE_NO_BUSY_POLL, &cell->napi.state);
|
||||||
+
|
+
|
||||||
netif_napi_add(dev, &cell->napi, gro_cell_poll, 64);
|
netif_napi_add(dev, &cell->napi, gro_cell_poll, 64);
|
||||||
napi_enable(&cell->napi);
|
napi_enable(&cell->napi);
|
||||||
}
|
}
|
||||||
--
|
--
|
||||||
2.10.1
|
2.10.2
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user