return NF_DROP;
                }
 
-               /* increase counter */
-               (*(counter_base + i)).pcnt++;
-               (*(counter_base + i)).bcnt += skb->len;
+               ADD_COUNTER(*(counter_base + i), 1, skb->len);
 
                /* these should only watch: not modify, nor tell us
                 * what to do with the packet
                if (cpu == 0)
                        continue;
                counter_base = COUNTER_BASE(oldcounters, nentries, cpu);
-               for (i = 0; i < nentries; i++) {
-                       counters[i].pcnt += counter_base[i].pcnt;
-                       counters[i].bcnt += counter_base[i].bcnt;
-               }
+               for (i = 0; i < nentries; i++)
+                       ADD_COUNTER(counters[i], counter_base[i].pcnt,
+                                   counter_base[i].bcnt);
        }
 }
 
        write_lock_bh(&t->lock);
 
        /* we add to the counters of the first cpu */
-       for (i = 0; i < num_counters; i++) {
-               t->private->counters[i].pcnt += tmp[i].pcnt;
-               t->private->counters[i].bcnt += tmp[i].bcnt;
-       }
+       for (i = 0; i < num_counters; i++)
+               ADD_COUNTER(t->private->counters[i], tmp[i].pcnt, tmp[i].bcnt);
 
        write_unlock_bh(&t->lock);
        ret = 0;