Pktgen receive hook in dev.c?
Subsystems (2)
I am curious if there is any interest in adding a hook in the netif_receive_skb method to allow receiving (and consuming) pktgen packets. This gives the ability to get some good packet receive & latency stats using pktgen.
I asked this a year or so ago and was told no, but since then the netpoll and TC_NCLS hooks have been added.... so maybe hooks are OK again?
The hook would look something like:
#if defined(CONFIG_NET_PKTGEN) || defined(CONFIG_NET_PKTGEN_MODULE)
if ((skb->dev->priv_flags & IFF_PKTGEN_RCV) &&
(handle_pktgen_rcv(skb) >= 0)) {
/* Pktgen may consume the packet, no need to send
* to further protocols.
*/
goto out;
}#endif
type = skb->protocol;
list_for_each_entry_rcu(ptype, &ptype_base[ntohs(type)&15], list) {....
Take it easy,
Ben
Signature · 2 lines
Ben Greear <[email protected]> Candela Technologies Inc http://www.candelatech.com
Quoted 7 lines · Ben Greear
I am curious if there is any interest in adding a hook in the
netif_receive_skbmethod to allow receiving (and consuming) pktgen packets. This gives the ability to get some good packet receive & latency stats using pktgen.I asked this a year or so ago and was told no, but since then the netpoll and
TC_NCLShooks have been added.... so maybe hooks are OK again?
Write an action. It should be trivial to consume pktgen. Infact if all you wanted was to count, use the gact action.
cheers,
jamal
Quoted 6 lines · jamal
Quoted 4 lines · Ben Greear
I am curious if there is any interest in adding a hook in the
netif_receive_skbmethod to allow receiving (and consuming) pktgen packets. This gives the ability to get some good packet receive & latency stats using pktgen.
Quoted 7 lines
Quoted 3 lines
I asked this a year or so ago and was told no, but since then the netpoll and
TC_NCLShooks have been added.... so maybe hooks are OK again?Write an action. It should be trivial to consume pktgen. Infact if all you wanted was to count, use the gact action.
I want a lot more than count, including timestamp, sequence number, etc.
In order to know it's a pktgen packet, I check for a magic value at the beginning of the UDP header. Since this could potentially collide with some 'real' packet, I also check a flag to see if the net_device has a particular flag set indicating it is actively accepting pktgen packets...
I assume this means I'd need a custom match function in the kernel. Is there an example of how to do something like this using your framework?
Thanks,
Ben
Quoted 4 lines
cheers,
jamal
Signature · 2 lines
Ben Greear <[email protected]> Candela Technologies Inc http://www.candelatech.com
Quoted 7 lines · Ben Greear
Quoted 2 lines · jamal
Write an action. It should be trivial to consume pktgen. Infact if all you wanted was to count, use the gact action.
I want a lot more than count, including timestamp, sequence number, etc.
Sure you can do all that good stuff in your own action.
Quoted 2 lines
In order to know it's a pktgen packet, I check for a magic value at the beginning of the UDP header.
Use the u32 classifier like so:
on dev eth0, if you see some magic signature on udp described as ... then action my pktgen action.
Quoted 1 line
Since this could potentially collide with some 'real' packet,
The classifier allows you to discriminate
Quoted 3 lines
I also check a flag to see if the
net_devicehas a particular flag set indicating it is actively accepting pktgen packets...
Thats not needed. You should be able to attach a u32 classifier to any device of your choice.
Quoted 1 line
I assume this means I'd need a custom match function in the kernel.
Refer to above - i dont think you do need to put any flag in a device.
Quoted 2 lines
Is there
an example of how to do something like this using your framework?
I explained a few things to you last time you showed up and tried to put hooks. Start there then ask questions. Its pretty simple.
cheers,
jamal