entry = client->in_cache;
        while (entry != NULL) {
                if (entry->ctrl_info.in_dst_ip == dst_ip) {
-                       atomic_inc(&entry->use);
+                       refcount_inc(&entry->use);
                        read_unlock_bh(&client->ingress_lock);
                        return entry;
                }
        entry = client->in_cache;
        while (entry != NULL) {
                if ((entry->ctrl_info.in_dst_ip & mask) == (dst_ip & mask)) {
-                       atomic_inc(&entry->use);
+                       refcount_inc(&entry->use);
                        read_unlock_bh(&client->ingress_lock);
                        return entry;
                }
        entry = client->in_cache;
        while (entry != NULL) {
                if (entry->shortcut == vcc) {
-                       atomic_inc(&entry->use);
+                       refcount_inc(&entry->use);
                        read_unlock_bh(&client->ingress_lock);
                        return entry;
                }
 
        dprintk("adding an ingress entry, ip = %pI4\n", &dst_ip);
 
-       atomic_set(&entry->use, 1);
+       refcount_set(&entry->use, 1);
        dprintk("new_in_cache_entry: about to lock\n");
        write_lock_bh(&client->ingress_lock);
        entry->next = client->in_cache;
        entry->count = 1;
        entry->entry_state = INGRESS_INVALID;
        entry->ctrl_info.holding_time = HOLDING_TIME_DEFAULT;
-       atomic_inc(&entry->use);
+       refcount_inc(&entry->use);
 
        write_unlock_bh(&client->ingress_lock);
        dprintk("new_in_cache_entry: unlocked\n");
 
 static void in_cache_put(in_cache_entry *entry)
 {
-       if (atomic_dec_and_test(&entry->use)) {
+       if (refcount_dec_and_test(&entry->use)) {
                memset(entry, 0, sizeof(in_cache_entry));
                kfree(entry);
        }
 
 #include <linux/atm.h>
 #include <linux/atmdev.h>
 #include <linux/atmmpc.h>
+#include <linux/refcount.h>
 
 struct mpoa_client;
 
        struct   atm_vcc *shortcut;
        uint8_t  MPS_ctrl_ATM_addr[ATM_ESA_LEN];
        struct   in_ctrl_info ctrl_info;
-       atomic_t use;
+       refcount_t use;
 } in_cache_entry;
 
 struct in_cache_ops{