u32                     rnd;
        int                     qsize;
 
-       unsigned int            (*hashfn)(struct inet_frag_queue *);
-       bool                    (*match)(struct inet_frag_queue *q, void *arg);
+       unsigned int            (*hashfn)(const struct inet_frag_queue *);
+       bool                    (*match)(const struct inet_frag_queue *q,
+                                        const void *arg);
        void                    (*constructor)(struct inet_frag_queue *q,
-                                               void *arg);
+                                              const void *arg);
        void                    (*destructor)(struct inet_frag_queue *);
        void                    (*skb_free)(struct sk_buff *);
        void                    (*frag_expire)(unsigned long data);
        percpu_counter_init(&nf->mem, 0);
 }
 
-static inline int sum_frag_mem_limit(struct netns_frags *nf)
+static inline unsigned int sum_frag_mem_limit(struct netns_frags *nf)
 {
-       int res;
+       unsigned int res;
 
        local_bh_disable();
        res = percpu_counter_sum_positive(&nf->mem);
 
        u8 ecn;
 };
 
-void ip6_frag_init(struct inet_frag_queue *q, void *a);
-bool ip6_frag_match(struct inet_frag_queue *q, void *a);
+void ip6_frag_init(struct inet_frag_queue *q, const void *a);
+bool ip6_frag_match(const struct inet_frag_queue *q, const void *a);
 
 /*
  *     Equivalent of ipv4 struct ip
 
        return c & (INETFRAGS_HASHSZ - 1);
 }
 
-static unsigned int lowpan_hashfn(struct inet_frag_queue *q)
+static unsigned int lowpan_hashfn(const struct inet_frag_queue *q)
 {
-       struct lowpan_frag_queue *fq;
+       const struct lowpan_frag_queue *fq;
 
        fq = container_of(q, struct lowpan_frag_queue, q);
        return lowpan_hash_frag(fq->tag, fq->d_size, &fq->saddr, &fq->daddr);
 }
 
-static bool lowpan_frag_match(struct inet_frag_queue *q, void *a)
+static bool lowpan_frag_match(const struct inet_frag_queue *q, const void *a)
 {
-       struct lowpan_frag_queue *fq;
-       struct lowpan_create_arg *arg = a;
+       const struct lowpan_frag_queue *fq;
+       const struct lowpan_create_arg *arg = a;
 
        fq = container_of(q, struct lowpan_frag_queue, q);
        return  fq->tag == arg->tag && fq->d_size == arg->d_size &&
                ieee802154_addr_equal(&fq->daddr, arg->dst);
 }
 
-static void lowpan_frag_init(struct inet_frag_queue *q, void *a)
+static void lowpan_frag_init(struct inet_frag_queue *q, const void *a)
 {
+       const struct lowpan_create_arg *arg = a;
        struct lowpan_frag_queue *fq;
-       struct lowpan_create_arg *arg = a;
 
        fq = container_of(q, struct lowpan_frag_queue, q);
 
 
                            ip4_frags.rnd) & (INETFRAGS_HASHSZ - 1);
 }
 
-static unsigned int ip4_hashfn(struct inet_frag_queue *q)
+static unsigned int ip4_hashfn(const struct inet_frag_queue *q)
 {
-       struct ipq *ipq;
+       const struct ipq *ipq;
 
        ipq = container_of(q, struct ipq, q);
        return ipqhashfn(ipq->id, ipq->saddr, ipq->daddr, ipq->protocol);
 }
 
-static bool ip4_frag_match(struct inet_frag_queue *q, void *a)
+static bool ip4_frag_match(const struct inet_frag_queue *q, const void *a)
 {
-       struct ipq *qp;
-       struct ip4_create_arg *arg = a;
+       const struct ipq *qp;
+       const struct ip4_create_arg *arg = a;
 
        qp = container_of(q, struct ipq, q);
        return  qp->id == arg->iph->id &&
                qp->user == arg->user;
 }
 
-static void ip4_frag_init(struct inet_frag_queue *q, void *a)
+static void ip4_frag_init(struct inet_frag_queue *q, const void *a)
 {
        struct ipq *qp = container_of(q, struct ipq, q);
        struct netns_ipv4 *ipv4 = container_of(q->net, struct netns_ipv4,
                                               frags);
        struct net *net = container_of(ipv4, struct net, ipv4);
 
-       struct ip4_create_arg *arg = a;
+       const struct ip4_create_arg *arg = a;
 
        qp->protocol = arg->iph->protocol;
        qp->id = arg->iph->id;
 
 }
 
 
-static unsigned int nf_hashfn(struct inet_frag_queue *q)
+static unsigned int nf_hashfn(const struct inet_frag_queue *q)
 {
        const struct frag_queue *nq;
 
 
        return c & (INETFRAGS_HASHSZ - 1);
 }
 
-static unsigned int ip6_hashfn(struct inet_frag_queue *q)
+static unsigned int ip6_hashfn(const struct inet_frag_queue *q)
 {
-       struct frag_queue *fq;
+       const struct frag_queue *fq;
 
        fq = container_of(q, struct frag_queue, q);
        return inet6_hash_frag(fq->id, &fq->saddr, &fq->daddr);
 }
 
-bool ip6_frag_match(struct inet_frag_queue *q, void *a)
+bool ip6_frag_match(const struct inet_frag_queue *q, const void *a)
 {
-       struct frag_queue *fq;
-       struct ip6_create_arg *arg = a;
+       const struct frag_queue *fq;
+       const struct ip6_create_arg *arg = a;
 
        fq = container_of(q, struct frag_queue, q);
        return  fq->id == arg->id &&
 }
 EXPORT_SYMBOL(ip6_frag_match);
 
-void ip6_frag_init(struct inet_frag_queue *q, void *a)
+void ip6_frag_init(struct inet_frag_queue *q, const void *a)
 {
        struct frag_queue *fq = container_of(q, struct frag_queue, q);
-       struct ip6_create_arg *arg = a;
+       const struct ip6_create_arg *arg = a;
 
        fq->id = arg->id;
        fq->user = arg->user;