From: ebiederm@xmission•com (Eric W. Biederman)
To: David Miller <davem@davemloft•net>
Cc: stephen@networkplumber•org, eric.dumazet@gmail•com,
netdev@vger•kernel.org, xiyou.wangcong@gmail•com,
mpm@selenic•com, satyam.sharma@gmail•com
Subject: [PATCH 09/10] netpoll: Move all receive processing under CONFIG_NETPOLL_TRAP
Date: Fri, 14 Mar 2014 20:50:58 -0700 [thread overview]
Message-ID: <87r464nmql.fsf_-_@xmission.com> (raw)
In-Reply-To: <877g7wqg8e.fsf_-_@xmission.com> (Eric W. Biederman's message of "Fri, 14 Mar 2014 20:43:13 -0700")
Make rx_skb_hook, and rx in struct netpoll depend on
CONFIG_NETPOLL_TRAP Make rx_lock, rx_np, and neigh_tx in struct
netpoll_info depend on CONFIG_NETPOLL_TRAP
Make the functions netpoll_rx_on, netpoll_rx, and netpoll_receive_skb
no-ops when CONFIG_NETPOLL_TRAP is not set.
Only build netpoll_neigh_reply, checksum_udp service_neigh_queue,
pkt_is_ns, and __netpoll_rx when CONFIG_NETPOLL_TRAP is defined.
Add helper functions netpoll_trap_setup, netpoll_trap_setup_info,
netpoll_trap_cleanup, and netpoll_trap_cleanup_info that initialize
and cleanup the struct netpoll and struct netpoll_info receive
specific fields when CONFIG_NETPOLL_TRAP is enabled and do nothing
otherwise.
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission•com>
---
include/linux/netpoll.h | 73 +++++++++++++++++++++++-------------------
net/core/netpoll.c | 81 +++++++++++++++++++++++++++++++++++++----------
2 files changed, 104 insertions(+), 50 deletions(-)
diff --git a/include/linux/netpoll.h b/include/linux/netpoll.h
index ab9aaaff8d04..a0632af88d8b 100644
--- a/include/linux/netpoll.h
+++ b/include/linux/netpoll.h
@@ -24,32 +24,38 @@ struct netpoll {
struct net_device *dev;
char dev_name[IFNAMSIZ];
const char *name;
- void (*rx_skb_hook)(struct netpoll *np, int source, struct sk_buff *skb,
- int offset, int len);
union inet_addr local_ip, remote_ip;
bool ipv6;
u16 local_port, remote_port;
u8 remote_mac[ETH_ALEN];
- struct list_head rx; /* rx_np list element */
struct work_struct cleanup_work;
+
+#ifdef CONFIG_NETPOLL_TRAP
+ void (*rx_skb_hook)(struct netpoll *np, int source, struct sk_buff *skb,
+ int offset, int len);
+ struct list_head rx; /* rx_np list element */
+#endif
};
struct netpoll_info {
atomic_t refcnt;
- spinlock_t rx_lock;
struct semaphore dev_lock;
- struct list_head rx_np; /* netpolls that registered an rx_skb_hook */
- struct sk_buff_head neigh_tx; /* list of neigh requests to reply to */
struct sk_buff_head txq;
struct delayed_work tx_work;
struct netpoll *netpoll;
struct rcu_head rcu;
+
+#ifdef CONFIG_NETPOLL_TRAP
+ spinlock_t rx_lock;
+ struct list_head rx_np; /* netpolls that registered an rx_skb_hook */
+ struct sk_buff_head neigh_tx; /* list of neigh requests to reply to */
+#endif
};
#ifdef CONFIG_NETPOLL
@@ -68,7 +74,6 @@ int netpoll_setup(struct netpoll *np);
void __netpoll_cleanup(struct netpoll *np);
void __netpoll_free_async(struct netpoll *np);
void netpoll_cleanup(struct netpoll *np);
-int __netpoll_rx(struct sk_buff *skb, struct netpoll_info *npinfo);
void netpoll_send_skb_on_dev(struct netpoll *np, struct sk_buff *skb,
struct net_device *dev);
static inline void netpoll_send_skb(struct netpoll *np, struct sk_buff *skb)
@@ -82,25 +87,12 @@ static inline void netpoll_send_skb(struct netpoll *np, struct sk_buff *skb)
#ifdef CONFIG_NETPOLL_TRAP
int netpoll_trap(void);
void netpoll_set_trap(int trap);
+int __netpoll_rx(struct sk_buff *skb, struct netpoll_info *npinfo);
static inline bool netpoll_rx_processing(struct netpoll_info *npinfo)
{
return !list_empty(&npinfo->rx_np);
}
-#else
-static inline int netpoll_trap(void)
-{
- return 0;
-}
-static inline void netpoll_set_trap(int trap)
-{
-}
-static inline bool netpoll_rx_processing(struct netpoll_info *npinfo)
-{
- return false;
-}
-#endif
-#ifdef CONFIG_NETPOLL
static inline bool netpoll_rx_on(struct sk_buff *skb)
{
struct netpoll_info *npinfo = rcu_dereference_bh(skb->dev->npinfo);
@@ -138,6 +130,33 @@ static inline int netpoll_receive_skb(struct sk_buff *skb)
return 0;
}
+#else
+static inline int netpoll_trap(void)
+{
+ return 0;
+}
+static inline void netpoll_set_trap(int trap)
+{
+}
+static inline bool netpoll_rx_processing(struct netpoll_info *npinfo)
+{
+ return false;
+}
+static inline bool netpoll_rx(struct sk_buff *skb)
+{
+ return false;
+}
+static inline bool netpoll_rx_on(struct sk_buff *skb)
+{
+ return false;
+}
+static inline int netpoll_receive_skb(struct sk_buff *skb)
+{
+ return 0;
+}
+#endif
+
+#ifdef CONFIG_NETPOLL
static inline void *netpoll_poll_lock(struct napi_struct *napi)
{
struct net_device *dev = napi->dev;
@@ -166,18 +185,6 @@ static inline bool netpoll_tx_running(struct net_device *dev)
}
#else
-static inline bool netpoll_rx(struct sk_buff *skb)
-{
- return false;
-}
-static inline bool netpoll_rx_on(struct sk_buff *skb)
-{
- return false;
-}
-static inline int netpoll_receive_skb(struct sk_buff *skb)
-{
- return 0;
-}
static inline void *netpoll_poll_lock(struct napi_struct *napi)
{
return NULL;
diff --git a/net/core/netpoll.c b/net/core/netpoll.c
index b69bb3f1ba3f..adb5768be5a5 100644
--- a/net/core/netpoll.c
+++ b/net/core/netpoll.c
@@ -48,6 +48,7 @@ static struct sk_buff_head skb_pool;
#ifdef CONFIG_NETPOLL_TRAP
static atomic_t trapped;
+static void netpoll_neigh_reply(struct sk_buff *skb, struct netpoll_info *npinfo);
#endif
DEFINE_STATIC_SRCU(netpoll_srcu);
@@ -61,7 +62,6 @@ DEFINE_STATIC_SRCU(netpoll_srcu);
MAX_UDP_CHUNK)
static void zap_completion_queue(void);
-static void netpoll_neigh_reply(struct sk_buff *skb, struct netpoll_info *npinfo);
static void netpoll_async_cleanup(struct work_struct *work);
static unsigned int carrier_timeout = 4;
@@ -109,6 +109,7 @@ static void queue_process(struct work_struct *work)
}
}
+#ifdef CONFIG_NETPOLL_TRAP
static __sum16 checksum_udp(struct sk_buff *skb, struct udphdr *uh,
unsigned short ulen, __be32 saddr, __be32 daddr)
{
@@ -127,6 +128,7 @@ static __sum16 checksum_udp(struct sk_buff *skb, struct udphdr *uh,
return __skb_checksum_complete(skb);
}
+#endif /* CONFIG_NETPOLL_TRAP */
/*
* Check whether delayed processing was scheduled for our NIC. If so,
@@ -179,6 +181,7 @@ static void poll_napi(struct net_device *dev, int budget)
}
}
+#ifdef CONFIG_NETPOLL_TRAP
static void service_neigh_queue(struct net_device *dev,
struct netpoll_info *npi)
{
@@ -197,6 +200,12 @@ static void service_neigh_queue(struct net_device *dev,
while ((skb = skb_dequeue(&npi->neigh_tx)))
netpoll_neigh_reply(skb, npi);
}
+#else /* !CONFIG_NETPOLL_TRAP */
+static inline void service_neigh_queue(struct net_device *dev,
+ struct netpoll_info *npi)
+{
+}
+#endif /* CONFIG_NETPOLL_TRAP */
static void netpoll_poll_dev(struct net_device *dev)
{
@@ -522,6 +531,7 @@ void netpoll_send_udp(struct netpoll *np, const char *msg, int len)
}
EXPORT_SYMBOL(netpoll_send_udp);
+#ifdef CONFIG_NETPOLL_TRAP
static void netpoll_neigh_reply(struct sk_buff *skb, struct netpoll_info *npinfo)
{
int size, type = ARPOP_REPLY;
@@ -900,6 +910,55 @@ out:
return 0;
}
+static void netpoll_trap_setup_info(struct netpoll_info *npinfo)
+{
+ INIT_LIST_HEAD(&npinfo->rx_np);
+ spin_lock_init(&npinfo->rx_lock);
+ skb_queue_head_init(&npinfo->neigh_tx);
+}
+
+static void netpoll_trap_cleanup_info(struct netpoll_info *npinfo)
+{
+ skb_queue_purge(&npinfo->neigh_tx);
+}
+
+static void netpoll_trap_setup(struct netpoll *np, struct netpoll_info *npinfo)
+{
+ unsigned long flags;
+ if (np->rx_skb_hook) {
+ spin_lock_irqsave(&npinfo->rx_lock, flags);
+ list_add_tail(&np->rx, &npinfo->rx_np);
+ spin_unlock_irqrestore(&npinfo->rx_lock, flags);
+ }
+}
+
+static void netpoll_trap_cleanup(struct netpoll *np, struct netpoll_info *npinfo)
+{
+ unsigned long flags;
+ if (!list_empty(&npinfo->rx_np)) {
+ spin_lock_irqsave(&npinfo->rx_lock, flags);
+ list_del(&np->rx);
+ spin_unlock_irqrestore(&npinfo->rx_lock, flags);
+ }
+}
+
+#else /* !CONFIG_NETPOLL_TRAP */
+static inline void netpoll_trap_setup_info(struct netpoll_info *npinfo)
+{
+}
+static inline void netpoll_trap_cleanup_info(struct netpoll_info *npinfo)
+{
+}
+static inline
+void netpoll_trap_setup(struct netpoll *np, struct netpoll_info *npinfo)
+{
+}
+static inline
+void netpoll_trap_cleanup(struct netpoll *np, struct netpoll_info *npinfo)
+{
+}
+#endif /* CONFIG_NETPOLL_TRAP */
+
void netpoll_print_options(struct netpoll *np)
{
np_info(np, "local port %d\n", np->local_port);
@@ -1023,7 +1082,6 @@ int __netpoll_setup(struct netpoll *np, struct net_device *ndev, gfp_t gfp)
{
struct netpoll_info *npinfo;
const struct net_device_ops *ops;
- unsigned long flags;
int err;
np->dev = ndev;
@@ -1045,11 +1103,9 @@ int __netpoll_setup(struct netpoll *np, struct net_device *ndev, gfp_t gfp)
goto out;
}
- INIT_LIST_HEAD(&npinfo->rx_np);
+ netpoll_trap_setup_info(npinfo);
- spin_lock_init(&npinfo->rx_lock);
sema_init(&npinfo->dev_lock, 1);
- skb_queue_head_init(&npinfo->neigh_tx);
skb_queue_head_init(&npinfo->txq);
INIT_DELAYED_WORK(&npinfo->tx_work, queue_process);
@@ -1068,11 +1124,7 @@ int __netpoll_setup(struct netpoll *np, struct net_device *ndev, gfp_t gfp)
npinfo->netpoll = np;
- if (np->rx_skb_hook) {
- spin_lock_irqsave(&npinfo->rx_lock, flags);
- list_add_tail(&np->rx, &npinfo->rx_np);
- spin_unlock_irqrestore(&npinfo->rx_lock, flags);
- }
+ netpoll_trap_setup(np, npinfo);
/* last thing to do is link it to the net device structure */
rcu_assign_pointer(ndev->npinfo, npinfo);
@@ -1222,7 +1274,7 @@ static void rcu_cleanup_netpoll_info(struct rcu_head *rcu_head)
struct netpoll_info *npinfo =
container_of(rcu_head, struct netpoll_info, rcu);
- skb_queue_purge(&npinfo->neigh_tx);
+ netpoll_trap_cleanup_info(npinfo);
skb_queue_purge(&npinfo->txq);
/* we can't call cancel_delayed_work_sync here, as we are in softirq */
@@ -1238,7 +1290,6 @@ static void rcu_cleanup_netpoll_info(struct rcu_head *rcu_head)
void __netpoll_cleanup(struct netpoll *np)
{
struct netpoll_info *npinfo;
- unsigned long flags;
/* rtnl_dereference would be preferable here but
* rcu_cleanup_netpoll path can put us in here safely without
@@ -1248,11 +1299,7 @@ void __netpoll_cleanup(struct netpoll *np)
if (!npinfo)
return;
- if (!list_empty(&npinfo->rx_np)) {
- spin_lock_irqsave(&npinfo->rx_lock, flags);
- list_del(&np->rx);
- spin_unlock_irqrestore(&npinfo->rx_lock, flags);
- }
+ netpoll_trap_cleanup(np, npinfo);
synchronize_srcu(&netpoll_srcu);
--
1.7.5.4
next prev parent reply other threads:[~2014-03-15 3:51 UTC|newest]
Thread overview: 288+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-03 20:40 [PATCH] netpoll: Don't call driver methods from interrupt context Eric W. Biederman
2014-03-04 4:23 ` Cong Wang
2014-03-04 10:29 ` Eric W. Biederman
2014-03-04 21:09 ` David Miller
2014-03-04 21:08 ` David Miller
2014-03-05 0:03 ` Eric W. Biederman
2014-03-05 0:26 ` David Miller
2014-03-05 19:24 ` Eric W. Biederman
2014-03-07 19:30 ` David Miller
2014-03-08 5:13 ` Eric W. Biederman
2014-03-05 19:14 ` Eric W. Biederman
2014-03-11 3:16 ` [PATCH next-next 0/11] Using dev_kfree_skb_any for functions called in multiple contexts Eric W. Biederman
2014-03-11 3:18 ` [PATCH 01/11] bonding: Call dev_kfree_skby_any instead of kfree_skb Eric W. Biederman
2014-03-11 3:44 ` Eric Dumazet
2014-03-11 4:00 ` Eric W. Biederman
2014-03-11 4:56 ` Eric Dumazet
2014-03-11 4:42 ` David Miller
2014-03-11 5:02 ` Eric Dumazet
2014-03-11 8:43 ` [RFC PATCH 0/2] remove netpoll rx support Eric W. Biederman
2014-03-11 8:44 ` [RFC PATCH 1/2] netpoll: Remove dead netpoll_rx code Eric W. Biederman
2014-03-11 12:29 ` Eric Dumazet
2014-03-11 15:23 ` Stephen Hemminger
2014-03-11 15:34 ` Hannes Frederic Sowa
2014-03-11 20:48 ` Eric W. Biederman
2014-03-12 18:31 ` Cong Wang
2014-03-13 19:23 ` David Miller
2014-03-13 20:46 ` Eric W. Biederman
2014-03-15 1:30 ` [PATCH 0/9] netpoll: Cleanup received packet processing Eric W. Biederman
2014-03-15 1:31 ` [PATCH 1/9] netpoll: Pass budget into poll_napi Eric W. Biederman
2014-03-15 1:32 ` [PATCH 2/9] netpoll: Visit all napi handlers in poll_napi Eric W. Biederman
2014-03-15 1:33 ` [PATCH 3/9] netpoll: Warn if more packets are processed than are budgeted Eric W. Biederman
2014-03-15 1:33 ` [PATCH 4/9] netpoll: Add netpoll_rx_processing Eric W. Biederman
2014-03-15 1:34 ` [PATCH 5/9] netpoll: Don't drop all received packets Eric W. Biederman
2014-03-15 1:35 ` [PATCH 6/9] netpoll: Move netpoll_trap under CONFIG_NETPOLL_TRAP Eric W. Biederman
2014-03-15 1:36 ` [PATCH 7/9] netpoll: Consolidate neigh_tx processing in service_neigh_queue Eric W. Biederman
2014-03-15 1:37 ` [PATCH 8/9] netpoll: Move all receive processing under CONFIG_NETPOLL_TRAP Eric W. Biederman
2014-03-15 1:39 ` [PATCH 9/9] netpoll: Remove dead packet receive code (CONFIG_NETPOLL_TRAP) Eric W. Biederman
2014-03-15 2:59 ` [PATCH 0/9] netpoll: Cleanup received packet processing David Miller
2014-03-15 3:39 ` Eric W. Biederman
2014-03-15 3:43 ` [PATCH 00/10] " Eric W. Biederman
2014-03-15 3:44 ` [PATCH 01/10] netpoll: move setting of NETPOLL_RX_DROP into netpoll_poll_dev Eric W. Biederman
2014-03-15 3:45 ` [PATCH 02/10] netpoll: Pass budget into poll_napi Eric W. Biederman
2014-03-15 3:45 ` [PATCH 03/10] netpoll: Visit all napi handlers in poll_napi Eric W. Biederman
2014-03-15 3:47 ` [PATCH 04/10] netpoll: Warn if more packets are processed than are budgeted Eric W. Biederman
2014-03-15 3:47 ` [PATCH 05/10] netpoll: Add netpoll_rx_processing Eric W. Biederman
2014-03-15 3:48 ` [PATCH 06/10] netpoll: Don't drop all received packets Eric W. Biederman
2014-03-15 3:49 ` [PATCH 07/10] netpoll: Move netpoll_trap under CONFIG_NETPOLL_TRAP Eric W. Biederman
2014-03-15 3:50 ` [PATCH 08/10] netpoll: Consolidate neigh_tx processing in service_neigh_queue Eric W. Biederman
2014-03-15 3:50 ` Eric W. Biederman [this message]
2014-03-15 3:51 ` [PATCH 10/10] netpoll: Remove dead packet receive code (CONFIG_NETPOLL_TRAP) Eric W. Biederman
2014-03-17 19:49 ` [PATCH 00/10] netpoll: Cleanup received packet processing David Miller
2014-03-18 6:22 ` [PATCH 0/6] netpoll: Cleanups and fixes Eric W. Biederman
2014-03-18 6:24 ` [PATCH 1/6] netpoll: Remove gfp parameter from __netpoll_setup Eric W. Biederman
2014-03-18 6:24 ` [PATCH 2/6] netpoll: Only call ndo_start_xmit from a single place Eric W. Biederman
2014-03-18 6:25 ` [PATCH 3/6] netpoll: Don't allow on devices that perform their own xmit locking Eric W. Biederman
2014-03-18 18:26 ` Cong Wang
2014-03-18 18:38 ` David Miller
2014-03-18 6:26 ` [PATCH 4/6] netpoll: Move rx enable/disable into __dev_close_many Eric W. Biederman
2014-03-18 6:27 ` [PATCH 5/6] netpoll: Rename netpoll_rx_enable/disable to netpoll_poll_disable/enable Eric W. Biederman
2014-03-18 6:27 ` [PATCH 6/6] net: Free skbs from irqs when possible Eric W. Biederman
2014-03-18 9:32 ` David Laight
2014-03-18 13:22 ` Eric Dumazet
2014-03-18 17:51 ` Eric W. Biederman
2014-03-18 13:30 ` Ben Hutchings
2014-03-18 14:24 ` Bjørn Mork
2014-03-18 15:23 ` Eric Dumazet
2014-03-18 15:41 ` Bjørn Mork
2014-03-18 15:52 ` David Laight
2014-03-28 1:14 ` [PATCH 0/3] netpoll: Freeing skbs in hard irq context Eric W. Biederman
2014-03-28 1:15 ` [PATCH 1/3] net: Add a test to see if a skb is freeable in " Eric W. Biederman
2014-03-29 22:09 ` David Miller
2014-04-01 8:03 ` Eric W. Biederman
2014-04-01 16:15 ` David Miller
2014-03-28 1:20 ` [PATCH 2/3] netpoll: Use skb_irq_freeable to make zap_completion_queue safe Eric W. Biederman
2014-03-28 13:17 ` Sergei Shtylyov
2014-04-01 19:19 ` [PATCH v2 0/2] " Eric W. Biederman
2014-04-01 19:20 ` [PATCH v2 1/2] net: Add a test to see if a skb is freeable in irq context Eric W. Biederman
2014-04-01 19:49 ` Eric Dumazet
2014-04-01 19:21 ` [PATCH v2 2/2] netpoll: Use skb_irq_freeable to make zap_completion_queue safe Eric W. Biederman
2014-04-01 21:54 ` [PATCH v2 0/2] " David Miller
2014-03-28 1:23 ` [PATCH 3/3] net: Warn when a skb is freed inappropriately in hard irq context Eric W. Biederman
2014-03-18 17:53 ` [PATCH 6/6] net: Free skbs from irqs when possible Eric W. Biederman
2014-03-18 15:23 ` Stephen Hemminger
2014-03-18 17:47 ` Eric W. Biederman
2014-03-18 18:37 ` David Miller
2014-03-27 23:02 ` Eric W. Biederman
2014-03-27 22:35 ` [PATCH v2 0/6] netpoll: Cleanups and fixes Eric W. Biederman
2014-03-27 22:36 ` [PATCH v2 1/6] netpoll: Remove gfp parameter from __netpoll_setup Eric W. Biederman
2014-03-27 22:37 ` [PATCH v2 2/6] netpoll: Only call ndo_start_xmit from a single place Eric W. Biederman
2014-03-27 22:38 ` [PATCH v2 3/6] netpoll: Move rx enable/disable into __dev_close_many Eric W. Biederman
2014-03-27 22:39 ` [PATCH v2 4/6] netpoll: Rename netpoll_rx_enable/disable to netpoll_poll_disable/enable Eric W. Biederman
2014-03-27 22:41 ` [PATCH v2 5/6] netpoll: Remove strong unnecessary assumptions about skbs Eric W. Biederman
2014-03-27 22:42 ` [PATCH v2 6/6] netpoll: Respect NETIF_F_LLTX Eric W. Biederman
2014-03-29 22:01 ` [PATCH v2 0/6] netpoll: Cleanups and fixes David Miller
2014-03-11 8:45 ` [RFC PATCH 2/2] netpoll: Don't poll for received packets Eric W. Biederman
2014-03-11 12:44 ` Eric Dumazet
2014-03-12 18:39 ` Cong Wang
2014-03-13 20:48 ` Eric W. Biederman
2014-03-11 12:24 ` [RFC PATCH 0/2] remove netpoll rx support Eric Dumazet
2014-03-11 16:49 ` David Miller
2014-03-11 19:48 ` Eric W. Biederman
2014-03-11 20:09 ` David Miller
2014-03-11 21:13 ` [PATCH next-next 0/10] Using dev_kfree_skb_any for functions called in multiple contexts Eric W. Biederman
2014-03-11 21:14 ` [PATCH net-next 01/10] 8139cp: Call dev_kfree_skby_any instead of kfree_skb Eric W. Biederman
2014-03-11 21:15 ` [PATCH net-next 02/10] 8139too: Call dev_kfree_skby_any instead of dev_kfree_skb Eric W. Biederman
2014-03-12 2:06 ` Eric Dumazet
2014-03-12 21:24 ` Francois Romieu
2014-03-12 22:01 ` Eric Dumazet
2014-03-13 21:08 ` Eric W. Biederman
2014-03-14 4:26 ` [PATCH net-next] net: Replace u64_stats_fetch_begin_bh to u64_stats_fetch_begin_irq Eric W. Biederman
2014-03-15 2:41 ` David Miller
2014-03-11 21:16 ` [PATCH net-next 03/10] r8169: Call dev_kfree_skby_any instead of dev_kfree_skb Eric W. Biederman
2014-03-12 2:02 ` Eric Dumazet
2014-03-11 21:16 ` [PATCH net-next 04/10] bonding: Call dev_kfree_skby_any instead of kfree_skb Eric W. Biederman
2014-03-11 21:17 ` [PATCH net-next 05/10] bnx2: Call dev_kfree_skby_any instead of dev_kfree_skb Eric W. Biederman
2014-03-11 21:18 ` [PATCH net-next 06/10] tg3: " Eric W. Biederman
2014-03-11 21:18 ` [PATCH net-next 07/10] ixgb: " Eric W. Biederman
2014-03-11 21:19 ` [PATCH net-next 08/10] mlx4: " Eric W. Biederman
2014-03-11 21:19 ` [PATCH net-next 09/10] benet: Call dev_kfree_skby_any instead of kfree_skb Eric W. Biederman
2014-03-11 21:20 ` [PATCH net-next 10/10] gianfar: Carefully free skbs in functions called by netpoll Eric W. Biederman
2014-03-12 2:54 ` [PATCH next-next 0/10] Using dev_kfree_skb_any for functions called in multiple contexts Eric Dumazet
2014-03-12 20:22 ` David Miller
2014-03-25 5:58 ` [net-next 00/54][pull request] Using dev_kfree/consume_skb_any " Eric W. Biederman
2014-03-25 6:04 ` [PATCH 01/54] uml/net_kern: Call dev_consume_skb_any instead of dev_kfree_skb Eric W. Biederman
2014-03-25 6:04 ` [PATCH 02/54] 3c509: " Eric W. Biederman
2014-03-25 13:03 ` Eric Dumazet
2014-03-25 6:04 ` [PATCH 03/54] 3c59x: " Eric W. Biederman
2014-03-25 13:04 ` Eric Dumazet
2014-03-25 6:04 ` [PATCH 04/54] 8390: " Eric W. Biederman
2014-03-25 13:06 ` Eric Dumazet
2014-03-25 6:04 ` [PATCH 05/54] bfin_mac: " Eric W. Biederman
2014-03-25 13:10 ` Eric Dumazet
2014-03-25 6:04 ` [PATCH 06/54] sun4i-emac: " Eric W. Biederman
2014-03-25 13:11 ` Eric Dumazet
2014-03-25 6:04 ` [PATCH 07/54] am79c961a: " Eric W. Biederman
2014-03-25 13:13 ` Eric Dumazet
2014-03-25 6:04 ` [PATCH 08/54] lance: " Eric W. Biederman
2014-03-25 13:14 ` Eric Dumazet
2014-03-25 6:04 ` [PATCH 09/54] pcnet32: Call dev_kfree_skb_any " Eric W. Biederman
2014-03-25 13:15 ` Eric Dumazet
2014-03-25 6:04 ` [PATCH 10/54] alx: " Eric W. Biederman
2014-03-25 13:16 ` Eric Dumazet
2014-03-25 6:04 ` [PATCH 11/54] atl1c: Call dev_kfree/consume_skb_any " Eric W. Biederman
2014-03-25 13:18 ` Eric Dumazet
2014-03-25 6:04 ` [PATCH 12/54] bnad: Call dev_kfree_skb_any " Eric W. Biederman
2014-03-25 13:19 ` Eric Dumazet
2014-03-25 6:04 ` [PATCH 13/54] macb: Call dev_kfree_skb_any instead of kfree_skb Eric W. Biederman
2014-03-25 13:21 ` Eric Dumazet
2014-03-25 6:05 ` [PATCH 14/54] xgmac: Call dev_kfree/consume_skb_any instead of dev_kfree_skb Eric W. Biederman
2014-03-25 15:16 ` Eric Dumazet
2014-03-25 6:05 ` [PATCH 15/54] cxgb3: Call dev_kfree/consume_skb_any instead of [dev_]kfree_skb Eric W. Biederman
2014-03-25 15:18 ` Eric Dumazet
2014-03-25 6:05 ` [PATCH 16/54] cxgb4: " Eric W. Biederman
2014-03-25 15:19 ` Eric Dumazet
2014-03-25 6:05 ` [PATCH 17/54] cxfb4vf: " Eric W. Biederman
2014-03-25 15:22 ` Eric Dumazet
2014-03-25 6:05 ` [PATCH 18/54] cs89x0: Call dev_consume_skb_any instead of dev_kfree_skb Eric W. Biederman
2014-03-25 15:23 ` Eric Dumazet
2014-03-25 6:05 ` [PATCH 19/54] enic: Call dev_kfree_skb_any " Eric W. Biederman
2014-03-25 15:24 ` Eric Dumazet
2014-03-25 6:05 ` [PATCH 20/54] dm9000: Call dev_consume_skb_any " Eric W. Biederman
2014-03-25 15:26 ` Eric Dumazet
2014-03-25 6:05 ` [PATCH 21/54] dmfe: Call dev_kfree/consume_skb_any " Eric W. Biederman
2014-03-25 15:28 ` Eric Dumazet
2014-03-25 6:05 ` [PATCH 22/54] uli526x: " Eric W. Biederman
2014-03-25 15:29 ` Eric Dumazet
2014-03-25 6:05 ` [PATCH 23/54] sundance: Call dev_kfree_skb_any " Eric W. Biederman
2014-03-25 15:29 ` Eric Dumazet
2014-03-25 6:05 ` [PATCH 24/54] fec: Call dev_kfree_skb_any instead of kfree_skb Eric W. Biederman
2014-03-25 15:30 ` Eric Dumazet
2014-03-25 6:05 ` [PATCH 25/54] ucc_geth: Call dev_consume_skb_any instead of dev_kfree_skb Eric W. Biederman
2014-03-25 15:30 ` Eric Dumazet
2014-03-25 6:05 ` [PATCH 26/54] i825xx: Call dev_kfree_skb_any " Eric W. Biederman
2014-03-25 15:31 ` Eric Dumazet
2014-03-25 6:05 ` [PATCH 27/54] ehea: Call dev_consume_skb_any " Eric W. Biederman
2014-03-25 15:39 ` Eric Dumazet
2014-03-25 15:39 ` Eric Dumazet
2014-03-25 6:05 ` [PATCH 28/54] ibmveth: " Eric W. Biederman
2014-03-25 6:05 ` [PATCH 29/54] jme: Call dev_kfree_skb_any " Eric W. Biederman
2014-03-25 15:45 ` Eric Dumazet
2014-03-25 6:05 ` [PATCH 30/54] mv643xx_eth: " Eric W. Biederman
2014-03-25 15:46 ` Eric Dumazet
2014-03-25 6:05 ` [PATCH 31/54] skge: Call dev_kfree/consume_skb_any " Eric W. Biederman
2014-03-25 15:47 ` Eric Dumazet
2014-03-25 6:05 ` [PATCH 32/54] sky2: Call dev_kfree_skb_any " Eric W. Biederman
2014-03-25 16:23 ` Eric Dumazet
2014-03-25 6:05 ` [PATCH 33/54] ksz884x: Call dev_consume_skb_any " Eric W. Biederman
2014-03-25 16:23 ` Eric Dumazet
2014-03-25 6:05 ` [PATCH 34/54] s2io: Call dev_kfree_skb_any " Eric W. Biederman
2014-03-25 16:25 ` Eric Dumazet
2014-03-25 6:05 ` [PATCH 35/54] vxge: " Eric W. Biederman
2014-03-25 16:26 ` Eric Dumazet
2014-03-25 6:05 ` [PATCH 36/54] forcedeth: Call dev_kfree_skb_any instead of kfree_skb Eric W. Biederman
2014-03-25 16:27 ` Eric Dumazet
2014-03-25 6:05 ` [PATCH 37/54] sc92031: Call dev_consume_skb_any instead of dev_kfree_skb Eric W. Biederman
2014-03-25 20:39 ` Eric Dumazet
2014-03-25 6:05 ` [PATCH 38/54] sis900: Call dev_kfree_skb_any " Eric W. Biederman
2014-03-25 20:39 ` Eric Dumazet
2014-03-25 6:05 ` [PATCH 39/54] smc911x: " Eric W. Biederman
2014-03-25 20:40 ` Eric Dumazet
2014-03-25 6:05 ` [PATCH 40/54] smc91x: Call dev_kfree/consume_skb_any " Eric W. Biederman
2014-03-25 20:40 ` Eric Dumazet
2014-03-25 6:05 ` [PATCH 41/54] smsc911x: Call dev_consume_skb_any " Eric W. Biederman
2014-03-25 20:41 ` Eric Dumazet
2014-03-25 6:05 ` [PATCH 42/54] stmmac: " Eric W. Biederman
2014-03-25 20:42 ` Eric Dumazet
2014-03-25 6:05 ` [PATCH 43/54] sungem: " Eric W. Biederman
2014-03-25 20:42 ` Eric Dumazet
2014-03-25 6:05 ` [PATCH 44/54] tilepro: Call dev_consume_skb_any instead of kfree_skb Eric W. Biederman
2014-03-25 20:43 ` Eric Dumazet
2014-03-25 6:05 ` [PATCH 45/54] spider_net: Call dev_consume_skb_any instead of dev_kfree_skb Eric W. Biederman
2014-03-25 20:44 ` Eric Dumazet
2014-03-25 6:05 ` [PATCH 46/54] via-rhine: Call dev_kfree/consume_skb_any " Eric W. Biederman
2014-03-25 20:44 ` Eric Dumazet
2014-03-25 6:05 ` [PATCH 47/54] via-velocity: Call dev_kfree_skb_any instead of kfree_skb Eric W. Biederman
2014-03-25 20:45 ` Eric Dumazet
2014-03-25 6:05 ` [PATCH 48/54] xilinx_emaclite: Call dev_consume_skb_any instead of dev_kfree_skb Eric W. Biederman
2014-03-25 20:46 ` Eric Dumazet
2014-03-25 6:05 ` [PATCH 49/54] vmxnet3: Call dev_kfree_skb_any " Eric W. Biederman
2014-03-25 20:46 ` Eric Dumazet
2014-03-25 6:05 ` [PATCH 50/54] xen-netfront: " Eric W. Biederman
2014-03-25 20:46 ` Eric Dumazet
2014-03-25 6:05 ` [PATCH 51/54] wlags49_h2: Call dev_kfree/consume_skb_any " Eric W. Biederman
2014-03-25 20:47 ` Eric Dumazet
2014-03-25 6:05 ` [PATCH 52/54] staging/octeon-ethernet: " Eric W. Biederman
2014-03-25 20:47 ` Eric Dumazet
2014-03-25 6:05 ` [PATCH 53/54] virtio_net: Call dev_kfree_skb_any " Eric W. Biederman
2014-03-25 20:48 ` Eric Dumazet
2014-03-25 6:05 ` [PATCH 54/54] if_vlan: Call dev_kfree_skb_any instead of kfree_skb Eric W. Biederman
2014-03-25 20:48 ` Eric Dumazet
2014-03-25 13:01 ` [PATCH 01/54] uml/net_kern: Call dev_consume_skb_any instead of dev_kfree_skb Eric Dumazet
2014-03-25 18:05 ` Eric W. Biederman
2014-03-26 9:49 ` David Laight
2014-03-25 20:49 ` [net-next 00/54][pull request] Using dev_kfree/consume_skb_any for functions called in multiple contexts Eric Dumazet
2014-03-25 22:54 ` David Miller
2014-03-11 21:30 ` [PATCH net-next 0/2] Don't receive packets when the napi budget == 0 Eric W. Biederman
2014-03-11 21:31 ` [PATCH net-next 1/2] bnx2: " Eric W. Biederman
2014-03-12 5:07 ` Eric Dumazet
2014-03-11 21:31 ` [PATCH net-next 2/2] 8139cp: " Eric W. Biederman
2014-03-12 5:08 ` Eric Dumazet
2014-03-13 19:19 ` [PATCH net-next 0/2] " David Miller
2014-03-15 0:56 ` [PATCH net-next 0/16] " Eric W. Biederman
2014-03-15 0:57 ` [PATCH net-next 01/16] bnx2x: " Eric W. Biederman
2014-03-15 0:59 ` [PATCH net-next 02/16] i40e: " Eric W. Biederman
2014-03-15 1:00 ` [PATCH net-next 03/16] igb: " Eric W. Biederman
2014-03-15 1:00 ` [PATCH net-next 04/16] ixgbe: " Eric W. Biederman
2014-03-15 1:01 ` [PATCH net-next 05/16] amd8111e: " Eric W. Biederman
2014-03-15 1:02 ` [PATCH net-next 06/16] enic: " Eric W. Biederman
2014-03-15 1:03 ` [PATCH net-next 07/16] fs_enet: " Eric W. Biederman
2014-03-15 1:03 ` [PATCH net-next 08/16] ibmveth: " Eric W. Biederman
2014-03-15 1:05 ` [PATCH net-next 09/16] sky2: " Eric W. Biederman
2014-03-15 1:34 ` Stephen Hemminger
2014-03-15 1:05 ` [PATCH net-next 10/16] mlx4: " Eric W. Biederman
2014-03-15 1:06 ` [PATCH net-next 11/16] s2io: " Eric W. Biederman
2014-03-15 1:08 ` [PATCH net-next 12/16] tilegx: " Eric W. Biederman
2014-03-15 1:09 ` [PATCH net-next 13/16] tilepro: " Eric W. Biederman
2014-03-15 1:10 ` [PATCH net-next-test 14/16] tc35815: " Eric W. Biederman
2014-03-15 1:10 ` [PATCH net-next 15/16] vxge: " Eric W. Biederman
2014-03-15 1:11 ` [PATCH net-next 16/16] sfc: " Eric W. Biederman
2014-03-15 15:23 ` Ben Hutchings
2014-03-15 16:29 ` David Miller
2014-03-15 17:23 ` Ben Hutchings
2014-03-15 18:54 ` Eric Dumazet
2014-03-15 19:25 ` Eric W. Biederman
2014-03-15 20:01 ` mlx4 netpoll and rx/tx weirdness Eric W. Biederman
2014-03-16 16:17 ` Eric Dumazet
2014-03-17 21:22 ` David Miller
2014-03-17 21:40 ` Eric Dumazet
2014-03-15 2:54 ` [PATCH net-next 0/16] Don't receive packets when the napi budget == 0 David Miller
2014-03-11 21:33 ` [PATCH net-next] bcm63xx_enet: Stop pretending to support netpoll Eric W. Biederman
2014-03-13 19:26 ` David Miller
2014-03-13 19:42 ` Florian Fainelli
2014-03-13 19:58 ` David Miller
2014-03-11 16:39 ` [PATCH 01/11] bonding: Call dev_kfree_skby_any instead of kfree_skb David Miller
2014-03-11 5:31 ` Eric W. Biederman
2014-03-11 3:18 ` [PATCH 02/11] bnx2: Call dev_kfree_skby_any instead of dev_kfree_skb Eric W. Biederman
2014-03-11 3:47 ` Eric Dumazet
2014-03-11 4:10 ` Eric W. Biederman
2014-03-11 4:43 ` David Miller
2014-03-11 3:19 ` [PATCH 03/11] bnx2x: " Eric W. Biederman
2014-03-11 3:19 ` [PATCH 04/11] tg3: " Eric W. Biederman
2014-03-11 3:20 ` [PATCH 05/11] bcm63xx_enet: " Eric W. Biederman
2014-03-11 3:21 ` [PATCH 06/11] e1000: " Eric W. Biederman
2014-03-11 3:22 ` [PATCH 07/11] igbvf: " Eric W. Biederman
2014-03-11 3:22 ` [PATCH 08/11] ixgb: " Eric W. Biederman
2014-03-11 3:23 ` [PATCH 09/11] mlx4: " Eric W. Biederman
2014-03-11 3:23 ` [PATCH 10/11] benet: Call dev_kfree_skby_any instead of kfree_skb Eric W. Biederman
2014-03-11 3:24 ` [PATCH 11/11] gianfar: Carefully free skbs in functions called by netpoll Eric W. Biederman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87r464nmql.fsf_-_@xmission.com \
--to=ebiederm@xmission$(echo .)com \
--cc=davem@davemloft$(echo .)net \
--cc=eric.dumazet@gmail$(echo .)com \
--cc=mpm@selenic$(echo .)com \
--cc=netdev@vger$(echo .)kernel.org \
--cc=satyam.sharma@gmail$(echo .)com \
--cc=stephen@networkplumber$(echo .)org \
--cc=xiyou.wangcong@gmail$(echo .)com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox