Lines Matching defs:fc

55 	struct flow_cache *fc = (void *) arg;
59 per_cpu_ptr(fc->percpu, i)->hash_rnd_recalc = 1;
61 fc->rnd_timer.expires = jiffies + FLOW_HASH_RND_PERIOD;
62 add_timer(&fc->rnd_timer);
112 static void __flow_cache_shrink(struct flow_cache *fc,
120 struct netns_xfrm *xfrm = container_of(fc, struct netns_xfrm,
123 for (i = 0; i < flow_cache_hash_size(fc); i++) {
142 static void flow_cache_shrink(struct flow_cache *fc,
145 int shrink_to = fc->low_watermark / flow_cache_hash_size(fc);
147 __flow_cache_shrink(fc, fcp, shrink_to);
150 static void flow_new_hash_rnd(struct flow_cache *fc,
155 __flow_cache_shrink(fc, fcp, 0);
158 static u32 flow_hash_code(struct flow_cache *fc,
167 & (flow_cache_hash_size(fc) - 1);
195 struct flow_cache *fc = &net->xfrm.flow_cache_global;
203 fcp = this_cpu_ptr(fc->percpu);
218 flow_new_hash_rnd(fc, fcp);
220 hash = flow_hash_code(fc, fcp, key, keysize);
232 if (fcp->hash_count > fc->high_watermark)
233 flow_cache_shrink(fc, fcp);
284 struct flow_cache *fc = info->cache;
290 struct netns_xfrm *xfrm = container_of(fc, struct netns_xfrm,
293 fcp = this_cpu_ptr(fc->percpu);
294 for (i = 0; i < flow_cache_hash_size(fc); i++) {
318 static int flow_cache_percpu_empty(struct flow_cache *fc, int cpu)
323 fcp = per_cpu_ptr(fc->percpu, cpu);
324 for (i = 0; i < flow_cache_hash_size(fc); i++)
393 static int flow_cache_cpu_prepare(struct flow_cache *fc, int cpu)
395 struct flow_cache_percpu *fcp = per_cpu_ptr(fc->percpu, cpu);
396 size_t sz = sizeof(struct hlist_head) * flow_cache_hash_size(fc);
415 struct flow_cache *fc = container_of(nfb, struct flow_cache,
418 struct flow_cache_percpu *fcp = per_cpu_ptr(fc->percpu, cpu);
423 res = flow_cache_cpu_prepare(fc, cpu);
429 __flow_cache_shrink(fc, fcp, 0);
438 struct flow_cache *fc = &net->xfrm.flow_cache_global;
450 fc->hash_shift = 10;
451 fc->low_watermark = 2 * flow_cache_hash_size(fc);
452 fc->high_watermark = 4 * flow_cache_hash_size(fc);
454 fc->percpu = alloc_percpu(struct flow_cache_percpu);
455 if (!fc->percpu)
461 if (flow_cache_cpu_prepare(fc, i))
464 fc->hotcpu_notifier = (struct notifier_block){
467 __register_hotcpu_notifier(&fc->hotcpu_notifier);
471 setup_timer(&fc->rnd_timer, flow_cache_new_hashrnd,
472 (unsigned long) fc);
473 fc->rnd_timer.expires = jiffies + FLOW_HASH_RND_PERIOD;
474 add_timer(&fc->rnd_timer);
480 struct flow_cache_percpu *fcp = per_cpu_ptr(fc->percpu, i);
487 free_percpu(fc->percpu);
488 fc->percpu = NULL;
497 struct flow_cache *fc = &net->xfrm.flow_cache_global;
499 del_timer_sync(&fc->rnd_timer);
500 unregister_hotcpu_notifier(&fc->hotcpu_notifier);
503 struct flow_cache_percpu *fcp = per_cpu_ptr(fc->percpu, i);
508 free_percpu(fc->percpu);
509 fc->percpu = NULL;