flowcache: make flow_key_size() return "unsigned int"
authorAlexey Dobriyan <adobriyan@gmail.com>
Sun, 2 Apr 2017 21:51:50 +0000 (00:51 +0300)
committerDavid S. Miller <davem@davemloft.net>
Tue, 4 Apr 2017 02:04:48 +0000 (19:04 -0700)
Flow keys aren't 4GB+ numbers so 64-bit arithmetic is excessive.

Space savings (I'm not sure what CSWTCH is):

add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-48 (-48)
function                                     old     new   delta
flow_cache_lookup                           1163    1159      -4
CSWTCH                                     75997   75953     -44

Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/flow.h
net/core/flow.c

index 6984f19..bae198b 100644 (file)
@@ -202,7 +202,7 @@ static inline struct flowi *flowidn_to_flowi(struct flowidn *fldn)
 
 typedef unsigned long flow_compare_t;
 
-static inline size_t flow_key_size(u16 family)
+static inline unsigned int flow_key_size(u16 family)
 {
        switch (family) {
        case AF_INET:
index f765c11..98f977e 100644 (file)
@@ -161,7 +161,7 @@ static void flow_new_hash_rnd(struct flow_cache *fc,
 static u32 flow_hash_code(struct flow_cache *fc,
                          struct flow_cache_percpu *fcp,
                          const struct flowi *key,
-                         size_t keysize)
+                         unsigned int keysize)
 {
        const u32 *k = (const u32 *) key;
        const u32 length = keysize * sizeof(flow_compare_t) / sizeof(u32);
@@ -174,7 +174,7 @@ static u32 flow_hash_code(struct flow_cache *fc,
  * important assumptions that we can here, such as alignment.
  */
 static int flow_key_compare(const struct flowi *key1, const struct flowi *key2,
-                           size_t keysize)
+                           unsigned int keysize)
 {
        const flow_compare_t *k1, *k1_lim, *k2;
 
@@ -199,7 +199,7 @@ flow_cache_lookup(struct net *net, const struct flowi *key, u16 family, u8 dir,
        struct flow_cache_percpu *fcp;
        struct flow_cache_entry *fle, *tfle;
        struct flow_cache_object *flo;
-       size_t keysize;
+       unsigned int keysize;
        unsigned int hash;
 
        local_bh_disable();