lkml.org 
[lkml]   [2005]   [Jun]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 7/12] iseries_veth: Remove redundant message stack lock
    The iseries_veth driver keeps a stack of messages for each connection
    and a lock to protect the stack. However there is also a per-connection lock
    which makes the message stack redundant.

    Remove the message stack lock and document the fact that callers of the
    stack-manipulation functions must hold the connection's lock.


    ---

    drivers/net/iseries_veth.c | 12 +++---------
    1 files changed, 3 insertions(+), 9 deletions(-)

    Index: veth-dev/drivers/net/iseries_veth.c
    ===================================================================
    --- veth-dev.orig/drivers/net/iseries_veth.c
    +++ veth-dev/drivers/net/iseries_veth.c
    @@ -143,7 +143,6 @@ struct veth_lpar_connection {
    struct VethCapData remote_caps;
    u32 ack_timeout;

    - spinlock_t msg_stack_lock;
    struct veth_msg *msg_stack_head;
    };

    @@ -190,27 +189,23 @@ static void veth_timed_ack(unsigned long
    #define veth_debug(fmt, args...) do {} while (0)
    #endif

    +/* You must hold the connection's lock when you call this function. */
    static inline void veth_stack_push(struct veth_lpar_connection *cnx,
    struct veth_msg *msg)
    {
    - unsigned long flags;
    -
    - spin_lock_irqsave(&cnx->msg_stack_lock, flags);
    msg->next = cnx->msg_stack_head;
    cnx->msg_stack_head = msg;
    - spin_unlock_irqrestore(&cnx->msg_stack_lock, flags);
    }

    +/* You must hold the connection's lock when you call this function. */
    static inline struct veth_msg *veth_stack_pop(struct veth_lpar_connection *cnx)
    {
    - unsigned long flags;
    struct veth_msg *msg;

    - spin_lock_irqsave(&cnx->msg_stack_lock, flags);
    msg = cnx->msg_stack_head;
    if (msg)
    cnx->msg_stack_head = cnx->msg_stack_head->next;
    - spin_unlock_irqrestore(&cnx->msg_stack_lock, flags);
    +
    return msg;
    }

    @@ -643,7 +638,6 @@ static int veth_init_connection(u8 rlp)

    cnx->msgs = msgs;
    memset(msgs, 0, VETH_NUMBUFFERS * sizeof(struct veth_msg));
    - spin_lock_init(&cnx->msg_stack_lock);

    for (i = 0; i < VETH_NUMBUFFERS; i++) {
    msgs[i].token = i;
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2005-06-30 12:49    [W:0.044 / U:0.244 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site