Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=e48b9b2fb383879a5d758d526b5eb8de4509f467
Commit:     e48b9b2fb383879a5d758d526b5eb8de4509f467
Parent:     f9c639905018967e57ea24b07e82de9bcd76339f
Author:     Patrick McHardy <[EMAIL PROTECTED]>
AuthorDate: Wed Dec 5 01:28:10 2007 -0800
Committer:  David S. Miller <[EMAIL PROTECTED]>
CommitDate: Mon Jan 28 14:56:17 2008 -0800

    [NETFILTER]: nfnetlink_queue: avoid unnecessary atomic operation
    
    The sequence counter doesn't need to be an atomic_t, just move the increment
    inside the locked section.
    
    Signed-off-by: Patrick McHardy <[EMAIL PROTECTED]>
    Signed-off-by: David S. Miller <[EMAIL PROTECTED]>
---
 net/netfilter/nfnetlink_queue.c |    9 ++++-----
 1 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/net/netfilter/nfnetlink_queue.c b/net/netfilter/nfnetlink_queue.c
index d9ce394..bd18de7 100644
--- a/net/netfilter/nfnetlink_queue.c
+++ b/net/netfilter/nfnetlink_queue.c
@@ -56,7 +56,7 @@ struct nfqnl_instance {
        unsigned int queue_dropped;
        unsigned int queue_user_dropped;
 
-       atomic_t id_sequence;                   /* 'sequence' of pkt ids */
+       unsigned int id_sequence;               /* 'sequence' of pkt ids */
 
        u_int16_t queue_num;                    /* number of this queue */
        u_int8_t copy_mode;
@@ -139,7 +139,6 @@ instance_create(u_int16_t queue_num, int pid)
        inst->queue_maxlen = NFQNL_QMAX_DEFAULT;
        inst->copy_range = 0xfffff;
        inst->copy_mode = NFQNL_COPY_NONE;
-       atomic_set(&inst->id_sequence, 0);
        /* needs to be two, since we _put() after creation */
        atomic_set(&inst->use, 2);
        spin_lock_init(&inst->lock);
@@ -340,6 +339,8 @@ nfqnl_build_packet_message(struct nfqnl_instance *queue,
                return NULL;
        }
 
+       entry->id = queue->id_sequence++;
+
        spin_unlock_bh(&queue->lock);
 
        skb = alloc_skb(size, GFP_ATOMIC);
@@ -496,8 +497,6 @@ nfqnl_enqueue_packet(struct nf_queue_entry *entry, unsigned 
int queuenum)
                goto err_out_put;
        }
 
-       entry->id = atomic_inc_return(&queue->id_sequence);
-
        nskb = nfqnl_build_packet_message(queue, entry, &status);
        if (nskb == NULL)
                goto err_out_put;
@@ -948,7 +947,7 @@ static int seq_show(struct seq_file *s, void *v)
                          inst->peer_pid, inst->queue_total,
                          inst->copy_mode, inst->copy_range,
                          inst->queue_dropped, inst->queue_user_dropped,
-                         atomic_read(&inst->id_sequence),
+                         inst->id_sequence,
                          atomic_read(&inst->use));
 }
 
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to