* [PATCH] netlink: add NETLINK_NO_ENOBUFS socket flag
@ 2009-03-23 9:33 Pablo Neira Ayuso
2009-03-23 11:58 ` Patrick McHardy
0 siblings, 1 reply; 10+ messages in thread
From: Pablo Neira Ayuso @ 2009-03-23 9:33 UTC (permalink / raw)
To: netdev; +Cc: davem, kaber
This patch adds the NETLINK_NO_ENOBUFS socket flag. This flag can
be used by unicast and broadcast listeners to avoid receiving
ENOBUFS errors.
Generally speaking, ENOBUFS errors are useful to notify two things
to the listener:
a) You may increase the receiver buffer size via setsockopt().
b) You have lost messages, you may be out of sync.
In some cases, ignoring ENOBUFS errors can be useful. For example:
a) nfnetlink_queue: this subsystem does not have any sort of resync
method and you can decide to ignore ENOBUFS once you have set a
given buffer size.
b) ctnetlink: you can use this together with the socket flag
NETLINK_BROADCAST_SEND_ERROR to stop getting ENOBUFS errors as
you do not need to resync (packets whose event are not delivered
are drop to provide reliable logging and state-synchronization).
Moreover, the use of NETLINK_NO_ENOBUFS also reduces a "go up, go down"
effect in terms of performance which is due to the netlink congestion
control when the listener cannot back off. The effect is the following:
1) throughput rate goes up and netlink messages are inserted in the
receiver buffer.
2) Then, netlink buffer fills and overruns (set on nlk->state bit 0).
3) While the listener empties the receiver buffer, netlink keeps
dropping messages. Thus, throughput goes dramatically down.
4) Then, once the listener has emptied the buffer (nlk->state
bit 0 is set off), goto step 1.
This effect is easier to trigger with netlink broadcast under heavy
load, and it is more noticeable when using a big receiver buffer.
You can find some results in [1] that show this problem.
[1] http://1984.lsi.us.es/linux/netlink/
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
---
include/linux/netlink.h | 1 +
net/netlink/af_netlink.c | 30 +++++++++++++++++++++++++++---
2 files changed, 28 insertions(+), 3 deletions(-)
diff --git a/include/linux/netlink.h b/include/linux/netlink.h
index 1e6bf99..5ba398e 100644
--- a/include/linux/netlink.h
+++ b/include/linux/netlink.h
@@ -104,6 +104,7 @@ struct nlmsgerr
#define NETLINK_DROP_MEMBERSHIP 2
#define NETLINK_PKTINFO 3
#define NETLINK_BROADCAST_ERROR 4
+#define NETLINK_NO_ENOBUFS 5
struct nl_pktinfo
{
diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c
index dc93836..1c76c8e 100644
--- a/net/netlink/af_netlink.c
+++ b/net/netlink/af_netlink.c
@@ -86,6 +86,7 @@ struct netlink_sock {
#define NETLINK_KERNEL_SOCKET 0x1
#define NETLINK_RECV_PKTINFO 0x2
#define NETLINK_BROADCAST_SEND_ERROR 0x4
+#define NETLINK_RECV_NO_ENOBUFS 0x8
static inline struct netlink_sock *nlk_sk(struct sock *sk)
{
@@ -717,9 +718,13 @@ static int netlink_getname(struct socket *sock, struct sockaddr *addr,
static void netlink_overrun(struct sock *sk)
{
- if (!test_and_set_bit(0, &nlk_sk(sk)->state)) {
- sk->sk_err = ENOBUFS;
- sk->sk_error_report(sk);
+ struct netlink_sock *nlk = nlk_sk(sk);
+
+ if (!(nlk->flags & NETLINK_RECV_NO_ENOBUFS)) {
+ if (!test_and_set_bit(0, &nlk_sk(sk)->state)) {
+ sk->sk_err = ENOBUFS;
+ sk->sk_error_report(sk);
+ }
}
}
@@ -1183,6 +1188,15 @@ static int netlink_setsockopt(struct socket *sock, int level, int optname,
nlk->flags &= ~NETLINK_BROADCAST_SEND_ERROR;
err = 0;
break;
+ case NETLINK_NO_ENOBUFS:
+ if (val) {
+ nlk->flags |= NETLINK_RECV_NO_ENOBUFS;
+ clear_bit(0, &nlk->state);
+ wake_up_interruptible(&nlk->wait);
+ } else
+ nlk->flags &= ~NETLINK_RECV_NO_ENOBUFS;
+ err = 0;
+ break;
default:
err = -ENOPROTOOPT;
}
@@ -1225,6 +1239,16 @@ static int netlink_getsockopt(struct socket *sock, int level, int optname,
return -EFAULT;
err = 0;
break;
+ case NETLINK_NO_ENOBUFS:
+ if (len < sizeof(int))
+ return -EINVAL;
+ len = sizeof(int);
+ val = nlk->flags & NETLINK_RECV_NO_ENOBUFS ? 1 : 0;
+ if (put_user(len, optlen) ||
+ put_user(val, optval))
+ return -EFAULT;
+ err = 0;
+ break;
default:
err = -ENOPROTOOPT;
}
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH] netlink: add NETLINK_NO_ENOBUFS socket flag
2009-03-23 9:33 [PATCH] netlink: add NETLINK_NO_ENOBUFS socket flag Pablo Neira Ayuso
@ 2009-03-23 11:58 ` Patrick McHardy
2009-03-23 12:11 ` Pablo Neira Ayuso
0 siblings, 1 reply; 10+ messages in thread
From: Patrick McHardy @ 2009-03-23 11:58 UTC (permalink / raw)
To: Pablo Neira Ayuso; +Cc: netdev, davem
Pablo Neira Ayuso wrote:
> This patch adds the NETLINK_NO_ENOBUFS socket flag. This flag can
> be used by unicast and broadcast listeners to avoid receiving
> ENOBUFS errors.
>
> Generally speaking, ENOBUFS errors are useful to notify two things
> to the listener:
>
> a) You may increase the receiver buffer size via setsockopt().
> b) You have lost messages, you may be out of sync.
>
> In some cases, ignoring ENOBUFS errors can be useful. For example:
>
> a) nfnetlink_queue: this subsystem does not have any sort of resync
> method and you can decide to ignore ENOBUFS once you have set a
> given buffer size.
>
> b) ctnetlink: you can use this together with the socket flag
> NETLINK_BROADCAST_SEND_ERROR to stop getting ENOBUFS errors as
> you do not need to resync (packets whose event are not delivered
> are drop to provide reliable logging and state-synchronization).
>
> Moreover, the use of NETLINK_NO_ENOBUFS also reduces a "go up, go down"
> effect in terms of performance which is due to the netlink congestion
> control when the listener cannot back off. The effect is the following:
>
> 1) throughput rate goes up and netlink messages are inserted in the
> receiver buffer.
> 2) Then, netlink buffer fills and overruns (set on nlk->state bit 0).
> 3) While the listener empties the receiver buffer, netlink keeps
> dropping messages. Thus, throughput goes dramatically down.
> 4) Then, once the listener has emptied the buffer (nlk->state
> bit 0 is set off), goto step 1.
I agree that not having netlink drop new messages after congestion
might be useful. Two suggestions though:
- NETLINK_NO_CONGESTION_CONTROL seems a bit more descriptive than
"NO_ENOBUFS"
- The ENOBUFS error itself is actually not the problem, but the
congestion handling. It still makes sense to notify userspace
of congestion. I'd suggest to deliver the error, but avoid setting
the congestion bit.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] netlink: add NETLINK_NO_ENOBUFS socket flag
2009-03-23 11:58 ` Patrick McHardy
@ 2009-03-23 12:11 ` Pablo Neira Ayuso
2009-03-23 12:14 ` Patrick McHardy
0 siblings, 1 reply; 10+ messages in thread
From: Pablo Neira Ayuso @ 2009-03-23 12:11 UTC (permalink / raw)
To: Patrick McHardy; +Cc: netdev, davem
Patrick McHardy wrote:
> Pablo Neira Ayuso wrote:
>> This patch adds the NETLINK_NO_ENOBUFS socket flag. This flag can
>> be used by unicast and broadcast listeners to avoid receiving
>> ENOBUFS errors.
>>
>> Generally speaking, ENOBUFS errors are useful to notify two things
>> to the listener:
>>
>> a) You may increase the receiver buffer size via setsockopt().
>> b) You have lost messages, you may be out of sync.
>>
>> In some cases, ignoring ENOBUFS errors can be useful. For example:
>>
>> a) nfnetlink_queue: this subsystem does not have any sort of resync
>> method and you can decide to ignore ENOBUFS once you have set a
>> given buffer size.
>>
>> b) ctnetlink: you can use this together with the socket flag
>> NETLINK_BROADCAST_SEND_ERROR to stop getting ENOBUFS errors as
>> you do not need to resync (packets whose event are not delivered
>> are drop to provide reliable logging and state-synchronization).
>>
>> Moreover, the use of NETLINK_NO_ENOBUFS also reduces a "go up, go down"
>> effect in terms of performance which is due to the netlink congestion
>> control when the listener cannot back off. The effect is the following:
>>
>> 1) throughput rate goes up and netlink messages are inserted in the
>> receiver buffer.
>> 2) Then, netlink buffer fills and overruns (set on nlk->state bit 0).
>> 3) While the listener empties the receiver buffer, netlink keeps
>> dropping messages. Thus, throughput goes dramatically down.
>> 4) Then, once the listener has emptied the buffer (nlk->state
>> bit 0 is set off), goto step 1.
>
> I agree that not having netlink drop new messages after congestion
> might be useful. Two suggestions though:
>
> - NETLINK_NO_CONGESTION_CONTROL seems a bit more descriptive than
> "NO_ENOBUFS"
>
> - The ENOBUFS error itself is actually not the problem, but the
> congestion handling. It still makes sense to notify userspace
> of congestion. I'd suggest to deliver the error, but avoid setting
> the congestion bit.
I thought about this choice but I see one problem with this. The ENOBUFS
error is attached to the congestion control. If we keep reporting
ENOBUFS errors to userspace with no congestion control, the listener may
keep receiving ENOBUFS indefinitely. In other words, the congestion
control seems to me like a way to avoid spamming ENOBUFS errors to
userspace.
--
"Los honestos son inadaptados sociales" -- Les Luthiers
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] netlink: add NETLINK_NO_ENOBUFS socket flag
2009-03-23 12:11 ` Pablo Neira Ayuso
@ 2009-03-23 12:14 ` Patrick McHardy
2009-03-23 12:25 ` Pablo Neira Ayuso
0 siblings, 1 reply; 10+ messages in thread
From: Patrick McHardy @ 2009-03-23 12:14 UTC (permalink / raw)
To: Pablo Neira Ayuso; +Cc: netdev, davem
Pablo Neira Ayuso wrote:
> Patrick McHardy wrote:
>> - NETLINK_NO_CONGESTION_CONTROL seems a bit more descriptive than
>> "NO_ENOBUFS"
>>
>> - The ENOBUFS error itself is actually not the problem, but the
>> congestion handling. It still makes sense to notify userspace
>> of congestion. I'd suggest to deliver the error, but avoid setting
>> the congestion bit.
>
> I thought about this choice but I see one problem with this. The ENOBUFS
> error is attached to the congestion control.
What do you mean by "attached to"? Congestion control is done by
setting and testing bit 0 of nlk->state.
> If we keep reporting
> ENOBUFS errors to userspace with no congestion control, the listener may
> keep receiving ENOBUFS indefinitely. In other words, the congestion
> control seems to me like a way to avoid spamming ENOBUFS errors to
> userspace.
The error will be cleared by the next call to recvmsg().
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] netlink: add NETLINK_NO_ENOBUFS socket flag
2009-03-23 12:14 ` Patrick McHardy
@ 2009-03-23 12:25 ` Pablo Neira Ayuso
2009-03-23 12:41 ` Patrick McHardy
0 siblings, 1 reply; 10+ messages in thread
From: Pablo Neira Ayuso @ 2009-03-23 12:25 UTC (permalink / raw)
To: Patrick McHardy; +Cc: netdev, davem
Patrick McHardy wrote:
> Pablo Neira Ayuso wrote:
>> Patrick McHardy wrote:
>>> - NETLINK_NO_CONGESTION_CONTROL seems a bit more descriptive than
>>> "NO_ENOBUFS"
>>>
>>> - The ENOBUFS error itself is actually not the problem, but the
>>> congestion handling. It still makes sense to notify userspace
>>> of congestion. I'd suggest to deliver the error, but avoid setting
>>> the congestion bit.
>>
>> I thought about this choice but I see one problem with this. The ENOBUFS
>> error is attached to the congestion control.
>
> What do you mean by "attached to"? Congestion control is done by
> setting and testing bit 0 of nlk->state.
Yes, but once we set that bit to 1, we stop sending ENOBUFS to
userspace. So I think that congestion also applies to error reporting,
with "attached to" I meant "related" :).
>> If we keep reporting
>> ENOBUFS errors to userspace with no congestion control, the listener may
>> keep receiving ENOBUFS indefinitely. In other words, the congestion
>> control seems to me like a way to avoid spamming ENOBUFS errors to
>> userspace.
>
> The error will be cleared by the next call to recvmsg().
Yes, but think about this scenario:
1) We hit ENOBUFS, you call recvmsg() you get the error, and error is
cleared.
2) You're going to call recvmsg() again but before doing so, we hit
ENOBUFS again. So you call recvmsg() and you get the error again.
I think that this may lead to indefinitely getting ENOBUFS without
retrieving data under very heavy load.
--
"Los honestos son inadaptados sociales" -- Les Luthiers
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] netlink: add NETLINK_NO_ENOBUFS socket flag
2009-03-23 12:25 ` Pablo Neira Ayuso
@ 2009-03-23 12:41 ` Patrick McHardy
2009-03-23 13:05 ` Pablo Neira Ayuso
0 siblings, 1 reply; 10+ messages in thread
From: Patrick McHardy @ 2009-03-23 12:41 UTC (permalink / raw)
To: Pablo Neira Ayuso; +Cc: netdev, davem
Pablo Neira Ayuso wrote:
> Patrick McHardy wrote:
>> Pablo Neira Ayuso wrote:
>>> Patrick McHardy wrote:
>>>> - NETLINK_NO_CONGESTION_CONTROL seems a bit more descriptive than
>>>> "NO_ENOBUFS"
>>>>
>>>> - The ENOBUFS error itself is actually not the problem, but the
>>>> congestion handling. It still makes sense to notify userspace
>>>> of congestion. I'd suggest to deliver the error, but avoid setting
>>>> the congestion bit.
>>> I thought about this choice but I see one problem with this. The ENOBUFS
>>> error is attached to the congestion control.
>> What do you mean by "attached to"? Congestion control is done by
>> setting and testing bit 0 of nlk->state.
>
> Yes, but once we set that bit to 1, we stop sending ENOBUFS to
> userspace. So I think that congestion also applies to error reporting,
> with "attached to" I meant "related" :).
That's correct, there can only be a single outstanding error at any
time.
>>> If we keep reporting
>>> ENOBUFS errors to userspace with no congestion control, the listener may
>>> keep receiving ENOBUFS indefinitely. In other words, the congestion
>>> control seems to me like a way to avoid spamming ENOBUFS errors to
>>> userspace.
>> The error will be cleared by the next call to recvmsg().
>
> Yes, but think about this scenario:
>
> 1) We hit ENOBUFS, you call recvmsg() you get the error, and error is
> cleared.
> 2) You're going to call recvmsg() again but before doing so, we hit
> ENOBUFS again. So you call recvmsg() and you get the error again.
>
> I think that this may lead to indefinitely getting ENOBUFS without
> retrieving data under very heavy load.
I'm not sure that this would be a bad thing under the circumstances
you describe. We drop packets, we notify userspace.
I agree though that my proposed way isn't ideal either, since we can't
queue errors, they will be delivered sporadically (not reflecting the
true amount of dropped messages) and without stopping to queue new
messages, it can't be determined at which "position" the error occured.
But I think some notification or other way to notice whats happening
is needed for userspace, otherwise it can neither report not handle
this in any way.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] netlink: add NETLINK_NO_ENOBUFS socket flag
2009-03-23 12:41 ` Patrick McHardy
@ 2009-03-23 13:05 ` Pablo Neira Ayuso
2009-03-23 13:09 ` Patrick McHardy
0 siblings, 1 reply; 10+ messages in thread
From: Pablo Neira Ayuso @ 2009-03-23 13:05 UTC (permalink / raw)
To: Patrick McHardy; +Cc: netdev, davem
Patrick McHardy wrote:
> But I think some notification or other way to notice whats happening
> is needed for userspace, otherwise it can neither report not handle
> this in any way.
Hm, I see. I think that we can increase sk_drop like in the UDP code
when the NETLINK_NO_ENOBUFS flag is set. We can display it in the
netlink /proc entry. Would you be OK with this?
--
"Los honestos son inadaptados sociales" -- Les Luthiers
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] netlink: add NETLINK_NO_ENOBUFS socket flag
2009-03-23 13:05 ` Pablo Neira Ayuso
@ 2009-03-23 13:09 ` Patrick McHardy
0 siblings, 0 replies; 10+ messages in thread
From: Patrick McHardy @ 2009-03-23 13:09 UTC (permalink / raw)
To: Pablo Neira Ayuso; +Cc: netdev, davem
Pablo Neira Ayuso wrote:
> Patrick McHardy wrote:
>> But I think some notification or other way to notice whats happening
>> is needed for userspace, otherwise it can neither report not handle
>> this in any way.
>
> Hm, I see. I think that we can increase sk_drop like in the UDP code
> when the NETLINK_NO_ENOBUFS flag is set. We can display it in the
> netlink /proc entry. Would you be OK with this?
Yes, something like that seems OK.
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH] netlink: add NETLINK_NO_ENOBUFS socket flag
@ 2009-03-23 14:18 Pablo Neira Ayuso
2009-03-24 23:38 ` David Miller
0 siblings, 1 reply; 10+ messages in thread
From: Pablo Neira Ayuso @ 2009-03-23 14:18 UTC (permalink / raw)
To: netdev; +Cc: davem, kaber
This patch adds the NETLINK_NO_ENOBUFS socket flag. This flag can
be used by unicast and broadcast listeners to avoid receiving
ENOBUFS errors.
Generally speaking, ENOBUFS errors are useful to notify two things
to the listener:
a) You may increase the receiver buffer size via setsockopt().
b) You have lost messages, you may be out of sync.
In some cases, ignoring ENOBUFS errors can be useful. For example:
a) nfnetlink_queue: this subsystem does not have any sort of resync
method and you can decide to ignore ENOBUFS once you have set a
given buffer size.
b) ctnetlink: you can use this together with the socket flag
NETLINK_BROADCAST_SEND_ERROR to stop getting ENOBUFS errors as
you do not need to resync (packets whose event are not delivered
are drop to provide reliable logging and state-synchronization).
Moreover, the use of NETLINK_NO_ENOBUFS also reduces a "go up, go down"
effect in terms of performance which is due to the netlink congestion
control when the listener cannot back off. The effect is the following:
1) throughput rate goes up and netlink messages are inserted in the
receiver buffer.
2) Then, netlink buffer fills and overruns (set on nlk->state bit 0).
3) While the listener empties the receiver buffer, netlink keeps
dropping messages. Thus, throughput goes dramatically down.
4) Then, once the listener has emptied the buffer (nlk->state
bit 0 is set off), goto step 1.
This effect is easy to trigger with netlink broadcast under heavy
load, and it is more noticeable when using a big receiver buffer.
You can find some results in [1] that show this problem.
[1] http://1984.lsi.us.es/linux/netlink/
This patch also includes the use of sk_drop to account the number of
netlink messages drop due to overrun. This value is shown in
/proc/net/netlink.
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
---
include/linux/netlink.h | 1 +
net/netlink/af_netlink.c | 38 ++++++++++++++++++++++++++++++++------
2 files changed, 33 insertions(+), 6 deletions(-)
diff --git a/include/linux/netlink.h b/include/linux/netlink.h
index 1e6bf99..5ba398e 100644
--- a/include/linux/netlink.h
+++ b/include/linux/netlink.h
@@ -104,6 +104,7 @@ struct nlmsgerr
#define NETLINK_DROP_MEMBERSHIP 2
#define NETLINK_PKTINFO 3
#define NETLINK_BROADCAST_ERROR 4
+#define NETLINK_NO_ENOBUFS 5
struct nl_pktinfo
{
diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c
index dc93836..f669a38 100644
--- a/net/netlink/af_netlink.c
+++ b/net/netlink/af_netlink.c
@@ -86,6 +86,7 @@ struct netlink_sock {
#define NETLINK_KERNEL_SOCKET 0x1
#define NETLINK_RECV_PKTINFO 0x2
#define NETLINK_BROADCAST_SEND_ERROR 0x4
+#define NETLINK_RECV_NO_ENOBUFS 0x8
static inline struct netlink_sock *nlk_sk(struct sock *sk)
{
@@ -717,10 +718,15 @@ static int netlink_getname(struct socket *sock, struct sockaddr *addr,
static void netlink_overrun(struct sock *sk)
{
- if (!test_and_set_bit(0, &nlk_sk(sk)->state)) {
- sk->sk_err = ENOBUFS;
- sk->sk_error_report(sk);
+ struct netlink_sock *nlk = nlk_sk(sk);
+
+ if (!(nlk->flags & NETLINK_RECV_NO_ENOBUFS)) {
+ if (!test_and_set_bit(0, &nlk_sk(sk)->state)) {
+ sk->sk_err = ENOBUFS;
+ sk->sk_error_report(sk);
+ }
}
+ atomic_inc(&sk->sk_drops);
}
static struct sock *netlink_getsockbypid(struct sock *ssk, u32 pid)
@@ -1183,6 +1189,15 @@ static int netlink_setsockopt(struct socket *sock, int level, int optname,
nlk->flags &= ~NETLINK_BROADCAST_SEND_ERROR;
err = 0;
break;
+ case NETLINK_NO_ENOBUFS:
+ if (val) {
+ nlk->flags |= NETLINK_RECV_NO_ENOBUFS;
+ clear_bit(0, &nlk->state);
+ wake_up_interruptible(&nlk->wait);
+ } else
+ nlk->flags &= ~NETLINK_RECV_NO_ENOBUFS;
+ err = 0;
+ break;
default:
err = -ENOPROTOOPT;
}
@@ -1225,6 +1240,16 @@ static int netlink_getsockopt(struct socket *sock, int level, int optname,
return -EFAULT;
err = 0;
break;
+ case NETLINK_NO_ENOBUFS:
+ if (len < sizeof(int))
+ return -EINVAL;
+ len = sizeof(int);
+ val = nlk->flags & NETLINK_RECV_NO_ENOBUFS ? 1 : 0;
+ if (put_user(len, optlen) ||
+ put_user(val, optval))
+ return -EFAULT;
+ err = 0;
+ break;
default:
err = -ENOPROTOOPT;
}
@@ -1881,12 +1906,12 @@ static int netlink_seq_show(struct seq_file *seq, void *v)
if (v == SEQ_START_TOKEN)
seq_puts(seq,
"sk Eth Pid Groups "
- "Rmem Wmem Dump Locks\n");
+ "Rmem Wmem Dump Locks Drops\n");
else {
struct sock *s = v;
struct netlink_sock *nlk = nlk_sk(s);
- seq_printf(seq, "%p %-3d %-6d %08x %-8d %-8d %p %d\n",
+ seq_printf(seq, "%p %-3d %-6d %08x %-8d %-8d %p %-8d %-8d\n",
s,
s->sk_protocol,
nlk->pid,
@@ -1894,7 +1919,8 @@ static int netlink_seq_show(struct seq_file *seq, void *v)
atomic_read(&s->sk_rmem_alloc),
atomic_read(&s->sk_wmem_alloc),
nlk->cb,
- atomic_read(&s->sk_refcnt)
+ atomic_read(&s->sk_refcnt),
+ atomic_read(&s->sk_drops)
);
}
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH] netlink: add NETLINK_NO_ENOBUFS socket flag
2009-03-23 14:18 Pablo Neira Ayuso
@ 2009-03-24 23:38 ` David Miller
0 siblings, 0 replies; 10+ messages in thread
From: David Miller @ 2009-03-24 23:38 UTC (permalink / raw)
To: pablo; +Cc: netdev, kaber
From: Pablo Neira Ayuso <pablo@netfilter.org>
Date: Mon, 23 Mar 2009 15:18:59 +0100
> This patch adds the NETLINK_NO_ENOBUFS socket flag. This flag can
> be used by unicast and broadcast listeners to avoid receiving
> ENOBUFS errors.
...
> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Applied, thanks Pablo.
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2009-03-24 23:38 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-03-23 9:33 [PATCH] netlink: add NETLINK_NO_ENOBUFS socket flag Pablo Neira Ayuso
2009-03-23 11:58 ` Patrick McHardy
2009-03-23 12:11 ` Pablo Neira Ayuso
2009-03-23 12:14 ` Patrick McHardy
2009-03-23 12:25 ` Pablo Neira Ayuso
2009-03-23 12:41 ` Patrick McHardy
2009-03-23 13:05 ` Pablo Neira Ayuso
2009-03-23 13:09 ` Patrick McHardy
-- strict thread matches above, loose matches on Subject: below --
2009-03-23 14:18 Pablo Neira Ayuso
2009-03-24 23:38 ` David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).