u8 lport;
        u16 vlan;
        struct l2t_entry *e;
-       int addr_len = neigh->tbl->key_len;
+       unsigned int addr_len = neigh->tbl->key_len;
        u32 *addr = (u32 *)neigh->primary_key;
        int ifidx = neigh->dev->ifindex;
        int hash = addr_hash(d, addr, addr_len, ifidx);
        struct l2t_entry *e;
        struct sk_buff_head *arpq = NULL;
        struct l2t_data *d = adap->l2t;
-       int addr_len = neigh->tbl->key_len;
+       unsigned int addr_len = neigh->tbl->key_len;
        u32 *addr = (u32 *) neigh->primary_key;
        int ifidx = neigh->dev->ifindex;
        int hash = addr_hash(d, addr, addr_len, ifidx);
 
                                     const void *pkey)
 {
        struct neighbour *n;
-       int key_len = tbl->key_len;
+       unsigned int key_len = tbl->key_len;
        u32 hash_val;
        struct neigh_hash_table *nht;
 
                                 struct net_device *dev, bool want_ref)
 {
        u32 hash_val;
-       int key_len = tbl->key_len;
+       unsigned int key_len = tbl->key_len;
        int error;
        struct neighbour *n1, *rc, *n = neigh_alloc(tbl, dev);
        struct neigh_hash_table *nht;
 }
 EXPORT_SYMBOL(__neigh_create);
 
-static u32 pneigh_hash(const void *pkey, int key_len)
+static u32 pneigh_hash(const void *pkey, unsigned int key_len)
 {
        u32 hash_val = *(u32 *)(pkey + key_len - 4);
        hash_val ^= (hash_val >> 16);
 static struct pneigh_entry *__pneigh_lookup_1(struct pneigh_entry *n,
                                              struct net *net,
                                              const void *pkey,
-                                             int key_len,
+                                             unsigned int key_len,
                                              struct net_device *dev)
 {
        while (n) {
 struct pneigh_entry *__pneigh_lookup(struct neigh_table *tbl,
                struct net *net, const void *pkey, struct net_device *dev)
 {
-       int key_len = tbl->key_len;
+       unsigned int key_len = tbl->key_len;
        u32 hash_val = pneigh_hash(pkey, key_len);
 
        return __pneigh_lookup_1(tbl->phash_buckets[hash_val],
                                    struct net_device *dev, int creat)
 {
        struct pneigh_entry *n;
-       int key_len = tbl->key_len;
+       unsigned int key_len = tbl->key_len;
        u32 hash_val = pneigh_hash(pkey, key_len);
 
        read_lock_bh(&tbl->lock);
                  struct net_device *dev)
 {
        struct pneigh_entry *n, **np;
-       int key_len = tbl->key_len;
+       unsigned int key_len = tbl->key_len;
        u32 hash_val = pneigh_hash(pkey, key_len);
 
        write_lock_bh(&tbl->lock);
        if (tbl == NULL)
                return -EAFNOSUPPORT;
 
-       if (nla_len(dst_attr) < tbl->key_len)
+       if (nla_len(dst_attr) < (int)tbl->key_len)
                goto out;
 
        if (ndm->ndm_flags & NTF_PROXY) {
        if (tbl == NULL)
                return -EAFNOSUPPORT;
 
-       if (nla_len(tb[NDA_DST]) < tbl->key_len)
+       if (nla_len(tb[NDA_DST]) < (int)tbl->key_len)
                goto out;
        dst = nla_data(tb[NDA_DST]);
        lladdr = tb[NDA_LLADDR] ? nla_data(tb[NDA_LLADDR]) : NULL;