From patchwork Tue Nov 25 11:29:41 2008 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jarek Poplawski X-Patchwork-Id: 10619 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by ozlabs.org (Postfix) with ESMTP id 6B445DDDEF for ; Tue, 25 Nov 2008 22:29:53 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752249AbYKYL3t (ORCPT ); Tue, 25 Nov 2008 06:29:49 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752046AbYKYL3s (ORCPT ); Tue, 25 Nov 2008 06:29:48 -0500 Received: from nf-out-0910.google.com ([64.233.182.191]:3456 "EHLO nf-out-0910.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750963AbYKYL3s (ORCPT ); Tue, 25 Nov 2008 06:29:48 -0500 Received: by nf-out-0910.google.com with SMTP id d3so1287670nfc.21 for ; Tue, 25 Nov 2008 03:29:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:date:from:to:cc:subject :message-id:mime-version:content-type:content-disposition:user-agent; bh=TgeRmuRy9egCxKGGBJvpMlhOQq30S7JAS5GW/jhqyNE=; b=Z+o9KZUqhVP/+y+D2YHXVBmo9VjCQ2FkIjduvgtfQ0YFrJNO3etT5w6qKqO+dBlz0I yBvQ6V+7yxSEifbqNWkkiFjzrtHDyZWwVZQb6Y2gCsaBSi9RiKYmh4VHM9uyU97sMXff 44iTTcaYEgUAuhx1/ibHRCEYBi5YpbNWXmhEY= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=date:from:to:cc:subject:message-id:mime-version:content-type :content-disposition:user-agent; b=s8XwmxJzB6y2IxumcJNTUWx/zYfXTltrybHykrkQyhziWvI9cv9HLKkXKyo0ahUDyr K3iJAZUSOA6bmlIAyhu52LujEkAlrI1K2QYcUltXw+LUGtFgUNTwuHLRPo1q9pITisG6 YgIDt/Hd2S1JG/393XLXmQKX+oqt1h2JhBZLY= Received: by 10.210.23.3 with SMTP id 3mr1756323ebw.139.1227612586198; Tue, 25 Nov 2008 03:29:46 -0800 (PST) Received: from ff.dom.local (bv170.internetdsl.tpnet.pl [80.53.205.170]) by mx.google.com with ESMTPS id d2sm78448nfc.20.2008.11.25.03.29.44 (version=SSLv3 cipher=RC4-MD5); Tue, 25 Nov 2008 03:29:45 -0800 (PST) Date: Tue, 25 Nov 2008 11:29:41 +0000 From: Jarek Poplawski To: David Miller Cc: Herbert Xu , netdev@vger.kernel.org Subject: [PATCH] pkt_sched: sch_api: Remove qdisc_list_lock Message-ID: <20081125112941.GA8136@ff.dom.local> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.5.18 (2008-05-17) Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org After implementing qdisc->ops->peek() there is no more calling qdisc_tree_decrease_qlen() without rtnl_lock(), so qdisc_list_lock added by commit: f6e0b239a2657ea8cb67f0d83d0bfdbfd19a481b "pkt_sched: Fix qdisc list locking" can be removed. Signed-off-by: Jarek Poplawski --- net/sched/sch_api.c | 25 ++++--------------------- 1 files changed, 4 insertions(+), 21 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c index 1ef25e6..3fcfd4e 100644 --- a/net/sched/sch_api.c +++ b/net/sched/sch_api.c @@ -204,28 +204,16 @@ struct Qdisc *qdisc_match_from_root(struct Qdisc *root, u32 handle) return NULL; } -/* - * This lock is needed until some qdiscs stop calling qdisc_tree_decrease_qlen() - * without rtnl_lock(); currently hfsc_dequeue(), netem_dequeue(), tbf_dequeue() - */ -static DEFINE_SPINLOCK(qdisc_list_lock); - static void qdisc_list_add(struct Qdisc *q) { - if ((q->parent != TC_H_ROOT) && !(q->flags & TCQ_F_INGRESS)) { - spin_lock_bh(&qdisc_list_lock); + if ((q->parent != TC_H_ROOT) && !(q->flags & TCQ_F_INGRESS)) list_add_tail(&q->list, &qdisc_root_sleeping(q)->list); - spin_unlock_bh(&qdisc_list_lock); - } } void qdisc_list_del(struct Qdisc *q) { - if ((q->parent != TC_H_ROOT) && !(q->flags & TCQ_F_INGRESS)) { - spin_lock_bh(&qdisc_list_lock); + if ((q->parent != TC_H_ROOT) && !(q->flags & TCQ_F_INGRESS)) list_del(&q->list); - spin_unlock_bh(&qdisc_list_lock); - } } EXPORT_SYMBOL(qdisc_list_del); @@ -234,22 +222,17 @@ struct Qdisc *qdisc_lookup(struct net_device *dev, u32 handle) unsigned int i; struct Qdisc *q; - spin_lock_bh(&qdisc_list_lock); - for (i = 0; i < dev->num_tx_queues; i++) { struct netdev_queue *txq = netdev_get_tx_queue(dev, i); struct Qdisc *txq_root = txq->qdisc_sleeping; q = qdisc_match_from_root(txq_root, handle); if (q) - goto unlock; + goto out; } q = qdisc_match_from_root(dev->rx_queue.qdisc_sleeping, handle); - -unlock: - spin_unlock_bh(&qdisc_list_lock); - +out: return q; }