diff options
author | Gabor Juhos <juhosg@openwrt.org> | 2013-05-01 22:15:18 +0000 |
---|---|---|
committer | Gabor Juhos <juhosg@openwrt.org> | 2013-05-01 22:15:18 +0000 |
commit | 8a9fe26f201e996d4850cd3b3e770421bb4c4754 (patch) | |
tree | 000d22e0a0851ebbbb292c7ba9923f4a8415d011 /target/linux/mvebu/patches-3.8/004-net_mvneta_fix_driver_operations_smp.patch | |
parent | db02b0e4eeeec8cb707298bdea3422e90bd39dd6 (diff) | |
download | upstream-8a9fe26f201e996d4850cd3b3e770421bb4c4754.tar.gz upstream-8a9fe26f201e996d4850cd3b3e770421bb4c4754.tar.bz2 upstream-8a9fe26f201e996d4850cd3b3e770421bb4c4754.zip |
kernel: update linux 3.8 to 3.8.11
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
SVN-Revision: 36507
Diffstat (limited to 'target/linux/mvebu/patches-3.8/004-net_mvneta_fix_driver_operations_smp.patch')
-rw-r--r-- | target/linux/mvebu/patches-3.8/004-net_mvneta_fix_driver_operations_smp.patch | 71 |
1 files changed, 0 insertions, 71 deletions
diff --git a/target/linux/mvebu/patches-3.8/004-net_mvneta_fix_driver_operations_smp.patch b/target/linux/mvebu/patches-3.8/004-net_mvneta_fix_driver_operations_smp.patch deleted file mode 100644 index d1a8e42b98..0000000000 --- a/target/linux/mvebu/patches-3.8/004-net_mvneta_fix_driver_operations_smp.patch +++ /dev/null @@ -1,71 +0,0 @@ -From: Dmitri Epshtein <dima@marvell.com> - -In order for the driver to behave properly in a SMP context, the same -transmit queue should be used by the kernel in dev_queue_xmit() and in -the driver's mvneta_tx() function. To achieve that, the driver now -implements the ->ndo_select_txq() operation. - -For now, it always returns the same transmit queue, txq_def, until the -driver is expanded to properly take advantage of the multiqueue -capabilities of the hardware. - -Without this patch, the network driver crashes the kernel almost -immediately on Armada XP platforms, if the network load is at least a -little bit parallel (i.e several threads). - -[Thomas Petazzoni: reword commit message] -Signed-off-by: Dmitri Epshtein <dima@marvell.com> -Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> ---- -This is 3.8-rc material. ---- - drivers/net/ethernet/marvell/mvneta.c | 17 +++++++++++++++-- - 1 file changed, 15 insertions(+), 2 deletions(-) - ---- a/drivers/net/ethernet/marvell/mvneta.c -+++ b/drivers/net/ethernet/marvell/mvneta.c -@@ -1310,6 +1310,17 @@ static u32 mvneta_skb_tx_csum(struct mvn - return MVNETA_TX_L4_CSUM_NOT; - } - -+static u16 mvneta_tx_policy(struct mvneta_port *pp, struct sk_buff *skb) -+{ -+ return (u16)txq_def; -+} -+ -+static u16 mvneta_select_txq(struct net_device *dev, struct sk_buff *skb) -+{ -+ struct mvneta_port *pp = netdev_priv(dev); -+ return mvneta_tx_policy(pp, skb); -+} -+ - /* Returns rx queue pointer (find last set bit) according to causeRxTx - * value - */ -@@ -1476,7 +1487,8 @@ error: - static int mvneta_tx(struct sk_buff *skb, struct net_device *dev) - { - struct mvneta_port *pp = netdev_priv(dev); -- struct mvneta_tx_queue *txq = &pp->txqs[txq_def]; -+ u16 txq_id = mvneta_tx_policy(pp, skb); -+ struct mvneta_tx_queue *txq = &pp->txqs[txq_id]; - struct mvneta_tx_desc *tx_desc; - struct netdev_queue *nq; - int frags = 0; -@@ -1486,7 +1498,7 @@ static int mvneta_tx(struct sk_buff *skb - goto out; - - frags = skb_shinfo(skb)->nr_frags + 1; -- nq = netdev_get_tx_queue(dev, txq_def); -+ nq = netdev_get_tx_queue(dev, txq_id); - - /* Get a descriptor for the first part of the packet */ - tx_desc = mvneta_txq_next_desc_get(txq); -@@ -2550,6 +2562,7 @@ static const struct net_device_ops mvnet - .ndo_change_mtu = mvneta_change_mtu, - .ndo_tx_timeout = mvneta_tx_timeout, - .ndo_get_stats64 = mvneta_get_stats64, -+ .ndo_select_queue = mvneta_select_txq, - }; - - const struct ethtool_ops mvneta_eth_tool_ops = { |