All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] net: Add support for handling queueing in hardware
@ 2011-07-13 13:52 Andy Fleming
  2013-03-22 14:11 ` David Miller
  2013-03-22 14:23 ` Eric Dumazet
  0 siblings, 2 replies; 21+ messages in thread
From: Andy Fleming @ 2011-07-13 13:52 UTC (permalink / raw)
  To: linux-kernel; +Cc: netdev

The QDisc code does a bunch of locking which is unnecessary if
you have hardware which handles all of the queueing. Add
support for this, and skip over all of the queueing code if
the feature is enabled on a given device, which breaks QDisc
support on dpaa_eth, and also coopts the FCOE feature bit.

Signed-off-by: Andy Fleming <afleming@freescale.com>
Signed-off-by: Ben Collins <ben.c@servergy.com>
Cc: netdev@vger.kernel.org
---
 include/linux/netdev_features.h | 2 ++
 net/core/dev.c                  | 6 ++++++
 2 files changed, 8 insertions(+)

diff --git a/include/linux/netdev_features.h b/include/linux/netdev_features.h
index 3dd3934..ffb4587 100644
--- a/include/linux/netdev_features.h
+++ b/include/linux/netdev_features.h
@@ -56,6 +56,7 @@ enum {
 	NETIF_F_LOOPBACK_BIT,		/* Enable loopback */
 	NETIF_F_RXFCS_BIT,		/* Append FCS to skb pkt data */
 	NETIF_F_RXALL_BIT,		/* Receive errored frames too */
+	NETIF_F_HW_QDISC_BIT,		/* Supports hardware Qdisc */
 
 	/*
 	 * Add your fresh new feature above and remember to update
@@ -80,6 +81,7 @@ enum {
 #define NETIF_F_GSO_ROBUST	__NETIF_F(GSO_ROBUST)
 #define NETIF_F_HIGHDMA		__NETIF_F(HIGHDMA)
 #define NETIF_F_HW_CSUM		__NETIF_F(HW_CSUM)
+#define NETIF_F_HW_QDISC	__NETIF_F(HW_QDISC)
 #define NETIF_F_HW_VLAN_FILTER	__NETIF_F(HW_VLAN_FILTER)
 #define NETIF_F_HW_VLAN_RX	__NETIF_F(HW_VLAN_RX)
 #define NETIF_F_HW_VLAN_TX	__NETIF_F(HW_VLAN_TX)
diff --git a/net/core/dev.c b/net/core/dev.c
index dffbef7..6818b18 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -2743,6 +2743,12 @@ int dev_queue_xmit(struct sk_buff *skb)
 
 	skb_update_prio(skb);
 
+	if (dev->features & NETIF_F_HW_QDISC) {
+		txq = netdev_pick_tx(dev, skb);
+		rc = dev_hard_start_xmit(skb, dev, txq);
+		goto out;
+	}
+
 	txq = netdev_pick_tx(dev, skb);
 	q = rcu_dereference_bh(txq->qdisc);
 
-- 
1.8.1.2


^ permalink raw reply related	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2013-04-01 14:34 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-07-13 13:52 [PATCH] net: Add support for handling queueing in hardware Andy Fleming
2013-03-22 14:11 ` David Miller
2013-03-22 14:31   ` Fleming Andy-AFLEMING
2013-03-22 14:33     ` David Miller
2013-03-22 14:43       ` Ben Collins
2013-03-22 15:17         ` David Miller
2013-03-22 15:39           ` Ben Collins
2013-03-22 15:41             ` David Miller
2013-03-22 15:53               ` Ben Collins
2013-03-22 15:59                 ` David Miller
2013-03-22 16:14                   ` Ben Collins
2013-03-22 16:16                     ` David Miller
2013-03-22 16:23                       ` Ben Collins
2013-03-22 22:08             ` Theodore Ts'o
2013-03-23 19:10               ` Guenter Roeck
2013-04-01 14:13               ` Mark Brown
2013-03-23 19:02         ` Guenter Roeck
2013-03-24 19:06           ` Guenter Roeck
2013-03-22 14:23 ` Eric Dumazet
2013-03-22 14:50   ` Ben Collins
2013-03-22 15:01     ` Eric Dumazet

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.