Merge branch 'flow_keys_digest'
authorDavid S. Miller <davem@davemloft.net>
Mon, 4 May 2015 04:09:09 +0000 (00:09 -0400)
committerDavid S. Miller <davem@davemloft.net>
Mon, 4 May 2015 04:09:09 +0000 (00:09 -0400)
commit7c9a2eeac9b9caafb806e624fd2b75d30ecaee64
tree6a96e0a238759aa880c17b3efbe2ba616eaad86e
parent6a21165480a066a27c1f1dbd32aec581c612ba23
parent2e99403d28c182aa7ffb2d4ef34472df4873a4dd
Merge branch 'flow_keys_digest'

Tom Herbert says:

====================
net: Eliminate calls to flow_dissector and introduce flow_keys_digest

In this patch set we add skb_get_hash_perturb which gets the skbuff
hash for a packet and perturbs it using a provided key and jhash1.
This function is used in serveral qdiscs and eliminates many calls
to flow_dissector and jhash3 to get a perturbed hash for a packet.

To handle the sch_choke issue (passes flow_keys in skbuff cb) we
add flow_keys_digest which is a digest of a flow constructed
from a flow_keys structure.

This is the second version of these patches I posted a while ago,
and is prerequisite work to increasing the size of the flow_keys
structure and hashing over it (full IPv6 address, flow label, VLAN ID,
etc.).

Version 2:

- Add keyval parameter to __flow_hash_from_keys which allows caller to
  set the initval for jhash
- Perturb always does flow dissection and creates hash based on
  input perturb value which acts as the keyval to __flow_hash_from_keys
- Added a _flow_keys_digest_data which is used in make_flow_keys_digest.
  This fills out the digest by populating individual fields instead
  of copying the whole structure.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>