Update LICENSE.
add CLICK_COLD #define for rarely used functions

Signed-off-by: Cliff Frey <cliff@meraki.com>
Mark many initialization-related functions as COLD

This was done by running
    sed -i -r -e 's/\b(configure\(.*\));/\1 CLICK_COLD;/' `find elements/ -name '*.hh'`
    sed -i -r -e 's/\b(initialize\(.*\));/\1 CLICK_COLD;/' `find elements/ -name '*.hh'`
    sed -i -r -e 's/\b(add_handlers\(.*\));/\1 CLICK_COLD;/' `find elements/ -name '*.hh'`
    sed -i -r -e 's/\b(cleanup\(.*\));/\1 CLICK_COLD;/' `find elements/ -name '*.hh'`
    sed -i -r -e 's/\b(read_param\(.*\));/\1 CLICK_COLD;/' `find elements/ -name '*.hh'`
    sed -i -r -e 's/\b(write_param\(.*\));/\1 CLICK_COLD;/' `find elements/ -name '*.hh'`
    sed -i -r -e 's/^( *[A-Z][a-zA-Z]+\(\));/\1 CLICK_COLD;/' `find elements/ -name '*.hh'`
    sed -i -r -e 's/^( *~[A-Z][a-zA-Z]+\(\));/\1 CLICK_COLD;/' `find elements/ -name '*.hh'`
    sed -i -r -e 's/\b([a-z_]*(write|read)_handler\(.*\));/\1 CLICK_COLD;/' `find elements/ -name '*.hh'`
and then manually fixing up directiplookup.hh

On some workloads at Meraki, we have seen bad performance caused by
instruction TLB misses.  This change drastically reduces the number of
instruction TLB misses on those workloads, leading to ~30% faster
performance (as measured on a powerpc 44x machine).

Signed-off-by: Cliff Frey <cliff@meraki.com>
test: add a simple performance test

I added this hoping for it to show that the CLICK_COLD change made a
noticable performance different on x86.  However, I could not get it to.
It may be that I need more unique click elements in order to put the
instruction TLB under more pressure.

Signed-off-by: Cliff Frey <cliff@meraki.com>
Fix Args::read_or_set.

Signed-off-by: Eddie Kohler <ekohler@gmail.com>
Fix Args::read_or_set the right way.

And add a test.
Linuxmodule: Fixincludes works for Linux 3.5.

- Double asmlinkage considered stupid
- Give up on fixing notrace
- G++, why?
Don't lock the TX queue of a device in newer Linux kernels.

This bug was revealed by commit 5b88803. Regardless of the
NETIF_F_LLTX flag, we should not lock the TX queue of the device
ourselves with newer kernels, since we call the dev_queue_xmit()
function that locks the queue if needed.
Improve compilability on Linux 3.5.
Proclikefs: Make it work on 3.5.

And make it not work any more on <2.4.10.

Signed-off-by: Eddie Kohler <ekohler@gmail.com>
Uninitialized timestamp variable fix
ethernet: add functionality for storing enet addrs in anno area

This roughly correspond to the get/set/store ipaddress elements.

Signed-off-by: Cliff Frey <cliff@meraki.com>
linuxmodule/todevce: don't attempt to defer packet after dev_queue_xmit

After dev_queue_xmit, the packet has been consumed regardless of ret. If ret
were not zero, _q = p despite this fact and it will be Packet::kill'd by
ToDevice::cleanup.  We could skb_clone but that seems wasteful; instead,
drop.

We could also skb_get and then consume_skb on success except that there are
some network drivers (e.g. ppp_generic) that assume the skb it unshared and
will BUG otherwise.
{Get,Store}EtherAddress: Clean up warnings.
Linuxmodule proclikefs: Use mutexes instead of spinlocks.

Mutexes are friendlier to kernels that use CONFIG_PREEMPT and
CONFIG_LOCKDEP.

Original versions of this and related commits to come were provided by
Kevin Paul Herbert at Meraki.

Signed-off-by: Eddie Kohler <ekohler@gmail.com>
Signed-off-by: Kevin Paul Herbert <kph@meraki.net>
Linuxmodule clickfs: Synchronize using mutexes, not spinlocks.

This allows handlers to be able to sleep, and is generally friendlier
as code can take spinlocks when holding a mutex, but not the other way
around. This also makes Click friendlier to kernels which use
CONFIG_PREEMPT and CONFIG_LOCKDEP.

A version of Kevin's commit.

Signed-off-by: Kevin Paul Herbert <kph@meraki.net>
Signed-off-by: Eddie Kohler <ekohler@gmail.com>
Maybe someone actually needs <asm/system.h>

which I preemptively removed in be5aaf113.
Huh, fix awk syntax.
Internal: Use click_ino methods for inode number analysis.

Not macros.

Signed-off-by: Eddie Kohler <ekohler@gmail.com>
Linuxmodule clickfs: Revalidate directory entries.

The clickfs-01.testie test failed sporadically. Investigation showed
that, at least on recent Linuxes (3.5), /click dcache entries for
previous configuration generations were sticking around and polluting
the cache. Should we call d_genocide for each superblock? Unclear; but
it does work if we add a true d_revalidate callback and revalidate the
dentry on use. This in turn requires updates to proclikefs, or a
handler file held open across module unload causes a crash.

I'm sure these updates to clickfs/proclikefs break prior linuxes, we
will wait to hear from users.

Signed-off-by: Eddie Kohler <ekohler@gmail.com>