2013-03-04 07:38:07

by Cong Wang

[permalink] [raw]
Subject: Re: [RFC PATCH 0/5] net: low latency Ethernet device polling

On 02/28/2013 01:55 AM, Eliezer Tamir wrote:
>
> Open issues:
> 1. Find a way to avoid the need to change the sk and skb structs.
> One big disadvantage of how we do this right now is that when a device is
> removed, it's hard to prevent it from getting polled by a socket
> which holds a stale reference.
>
> 2. How do we decide which sockets are eligible to do busy polling?
> Do we add a socket option to control this?
> How do we provide sane defaults while allowing flexibility and performance?
>
> 3. Andi Kleen and HPA pointed out that using get_cycles() is not portable.
>
> 4. How and where do we call ndo_ll_poll from the socket code?
> One good place seems to be wherever the kernel puts the process to sleep,
> waiting for more data, but this makes doing something intelligent about
> poll (the system call) hard. From the perspective of how ndo_ll_poll
> itself is implemented this does not seem to matter.
>
> 5. I would like to hear suggestions on naming conventions and where
> to put the code that for now I have put in include/net/ll_poll.h
>


A dumb question: is bypassing tcpdump/netfilters/qdisc etc. what we
always want? Isn't this a security issue?

Thanks!


2013-03-04 08:20:08

by Eliezer Tamir

[permalink] [raw]
Subject: Re: [RFC PATCH 0/5] net: low latency Ethernet device polling


On 04/03/2013 09:37, Cong Wang wrote:
> On 02/28/2013 01:55 AM, Eliezer Tamir wrote:
>>
>> Open issues:
>> 1. Find a way to avoid the need to change the sk and skb structs.
>> One big disadvantage of how we do this right now is that when a device is
>> removed, it's hard to prevent it from getting polled by a socket
>> which holds a stale reference.
>>
>> 2. How do we decide which sockets are eligible to do busy polling?
>> Do we add a socket option to control this?
>> How do we provide sane defaults while allowing flexibility and
>> performance?
>>
>> 3. Andi Kleen and HPA pointed out that using get_cycles() is not
>> portable.
>>
>> 4. How and where do we call ndo_ll_poll from the socket code?
>> One good place seems to be wherever the kernel puts the process to sleep,
>> waiting for more data, but this makes doing something intelligent about
>> poll (the system call) hard. From the perspective of how ndo_ll_poll
>> itself is implemented this does not seem to matter.
>>
>> 5. I would like to hear suggestions on naming conventions and where
>> to put the code that for now I have put in include/net/ll_poll.h
>>
>
>
> A dumb question: is bypassing tcpdump/netfilters/qdisc etc. what we
> always want? Isn't this a security issue?

We are not bypassing any of the regular stack checks/hooks, we call the
normal netif_rx_skb().

Thanks,
Eliezer

2013-03-04 08:46:53

by Eliezer Tamir

[permalink] [raw]
Subject: Re: [RFC PATCH 0/5] net: low latency Ethernet device polling


>>>
>>
>>
>> A dumb question: is bypassing tcpdump/netfilters/qdisc etc. what we
>> always want? Isn't this a security issue?
>
> We are not bypassing any of the regular stack checks/hooks, we call the
> normal netif_rx_skb().
correction, netif_receive_skb()