Skip to content

Commit

Permalink
flowcache: make flow_cache_hash_size() return "unsigned int"
Browse files Browse the repository at this point in the history
Hash size can't negative so "unsigned int" is logically correct.

Propagate "unsigned int" to loop counters.

Space savings:

	add/remove: 0/0 grow/shrink: 2/2 up/down: 6/-18 (-12)
	function                                     old     new   delta
	flow_cache_flush_tasklet                     362     365      +3
	__flow_cache_shrink                          333     336      +3
	flow_cache_cpu_up_prep                       178     171      -7
	flow_cache_lookup                           1159    1148     -11

Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Alexey Dobriyan authored and David S. Miller committed Apr 4, 2017
1 parent 5a17d9e commit f31cc7e
Showing 1 changed file with 8 additions and 6 deletions.
14 changes: 8 additions & 6 deletions net/core/flow.c
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ struct flow_flush_info {

static struct kmem_cache *flow_cachep __read_mostly;

#define flow_cache_hash_size(cache) (1 << (cache)->hash_shift)
#define flow_cache_hash_size(cache) (1U << (cache)->hash_shift)
#define FLOW_HASH_RND_PERIOD (10 * 60 * HZ)

static void flow_cache_new_hashrnd(unsigned long arg)
Expand Down Expand Up @@ -119,9 +119,10 @@ static void __flow_cache_shrink(struct flow_cache *fc,
struct flow_cache_entry *fle;
struct hlist_node *tmp;
LIST_HEAD(gc_list);
int i, deleted = 0;
int deleted = 0;
struct netns_xfrm *xfrm = container_of(fc, struct netns_xfrm,
flow_cache_global);
unsigned int i;

for (i = 0; i < flow_cache_hash_size(fc); i++) {
int saved = 0;
Expand Down Expand Up @@ -295,9 +296,10 @@ static void flow_cache_flush_tasklet(unsigned long data)
struct flow_cache_entry *fle;
struct hlist_node *tmp;
LIST_HEAD(gc_list);
int i, deleted = 0;
int deleted = 0;
struct netns_xfrm *xfrm = container_of(fc, struct netns_xfrm,
flow_cache_global);
unsigned int i;

fcp = this_cpu_ptr(fc->percpu);
for (i = 0; i < flow_cache_hash_size(fc); i++) {
Expand Down Expand Up @@ -327,7 +329,7 @@ static void flow_cache_flush_tasklet(unsigned long data)
static int flow_cache_percpu_empty(struct flow_cache *fc, int cpu)
{
struct flow_cache_percpu *fcp;
int i;
unsigned int i;

fcp = per_cpu_ptr(fc->percpu, cpu);
for (i = 0; i < flow_cache_hash_size(fc); i++)
Expand Down Expand Up @@ -402,12 +404,12 @@ void flow_cache_flush_deferred(struct net *net)
static int flow_cache_cpu_prepare(struct flow_cache *fc, int cpu)
{
struct flow_cache_percpu *fcp = per_cpu_ptr(fc->percpu, cpu);
size_t sz = sizeof(struct hlist_head) * flow_cache_hash_size(fc);
unsigned int sz = sizeof(struct hlist_head) * flow_cache_hash_size(fc);

if (!fcp->hash_table) {
fcp->hash_table = kzalloc_node(sz, GFP_KERNEL, cpu_to_node(cpu));
if (!fcp->hash_table) {
pr_err("NET: failed to allocate flow cache sz %zu\n", sz);
pr_err("NET: failed to allocate flow cache sz %u\n", sz);
return -ENOMEM;
}
fcp->hash_rnd_recalc = 1;
Expand Down

0 comments on commit f31cc7e

Please sign in to comment.