1. 16 10月, 2007 2 次提交
    • P
      [INET]: Collect frag queues management objects together · 7eb95156
      Pavel Emelyanov 提交于
      There are some objects that are common in all the places
      which are used to keep track of frag queues, they are:
      
       * hash table
       * LRU list
       * rw lock
       * rnd number for hash function
       * the number of queues
       * the amount of memory occupied by queues
       * secret timer
      
      Move all this stuff into one structure (struct inet_frags)
      to make it possible use them uniformly in the future. Like
      with the previous patch this mostly consists of hunks like
      
      -    write_lock(&ipfrag_lock);
      +    write_lock(&ip4_frags.lock);
      
      To address the issue with exporting the number of queues and
      the amount of memory occupied by queues outside the .c file
      they are declared in, I introduce a couple of helpers.
      Signed-off-by: NPavel Emelyanov <xemul@openvz.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7eb95156
    • P
      [INET]: Move common fields from frag_queues in one place. · 5ab11c98
      Pavel Emelyanov 提交于
      Introduce the struct inet_frag_queue in include/net/inet_frag.h
      file and place there all the common fields from three structs:
      
       * struct ipq in ipv4/ip_fragment.c
       * struct nf_ct_frag6_queue in nf_conntrack_reasm.c
       * struct frag_queue in ipv6/reassembly.c
      
      After this, replace these fields on appropriate structures with
      this structure instance and fix the users to use correct names
      i.e. hunks like
      
      -    atomic_dec(&fq->refcnt);
      +    atomic_dec(&fq->q.refcnt);
      
      (these occupy most of the patch)
      Signed-off-by: NPavel Emelyanov <xemul@openvz.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      5ab11c98