Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e8cb7eb4 authored by Santiago Leon's avatar Santiago Leon Committed by David S. Miller
Browse files

ibmveth: Remove LLTX



The ibmveth adapter needs locking in the transmit routine to protect
the bounce_buffer but it sets LLTX and forgets to add any of its own
locking.

Just remove the deprecated LLTX option. Remove the stats lock in the process.

Signed-off-by: default avatarAnton Blanchard <anton@samba.org>
Signed-off-by: default avatarSantiago Leon <santil@linux.vnet.ibm.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent c033a6d1
Loading
Loading
Loading
Loading
+1 −6
Original line number Original line Diff line number Diff line
@@ -903,7 +903,6 @@ static netdev_tx_t ibmveth_start_xmit(struct sk_buff *skb,
	union ibmveth_buf_desc desc;
	union ibmveth_buf_desc desc;
	unsigned long lpar_rc;
	unsigned long lpar_rc;
	unsigned long correlator;
	unsigned long correlator;
	unsigned long flags;
	unsigned int retry_count;
	unsigned int retry_count;
	unsigned int tx_dropped = 0;
	unsigned int tx_dropped = 0;
	unsigned int tx_bytes = 0;
	unsigned int tx_bytes = 0;
@@ -965,20 +964,18 @@ static netdev_tx_t ibmveth_start_xmit(struct sk_buff *skb,
	} else {
	} else {
		tx_packets++;
		tx_packets++;
		tx_bytes += skb->len;
		tx_bytes += skb->len;
		netdev->trans_start = jiffies; /* NETIF_F_LLTX driver :( */
	}
	}


	if (!used_bounce)
	if (!used_bounce)
		dma_unmap_single(&adapter->vdev->dev, data_dma_addr,
		dma_unmap_single(&adapter->vdev->dev, data_dma_addr,
				 skb->len, DMA_TO_DEVICE);
				 skb->len, DMA_TO_DEVICE);


out:	spin_lock_irqsave(&adapter->stats_lock, flags);
out:
	netdev->stats.tx_dropped += tx_dropped;
	netdev->stats.tx_dropped += tx_dropped;
	netdev->stats.tx_bytes += tx_bytes;
	netdev->stats.tx_bytes += tx_bytes;
	netdev->stats.tx_packets += tx_packets;
	netdev->stats.tx_packets += tx_packets;
	adapter->tx_send_failed += tx_send_failed;
	adapter->tx_send_failed += tx_send_failed;
	adapter->tx_map_failed += tx_map_failed;
	adapter->tx_map_failed += tx_map_failed;
	spin_unlock_irqrestore(&adapter->stats_lock, flags);


	dev_kfree_skb(skb);
	dev_kfree_skb(skb);
	return NETDEV_TX_OK;
	return NETDEV_TX_OK;
@@ -1290,8 +1287,6 @@ static int __devinit ibmveth_probe(struct vio_dev *dev, const struct vio_device_
	netdev->netdev_ops = &ibmveth_netdev_ops;
	netdev->netdev_ops = &ibmveth_netdev_ops;
	netdev->ethtool_ops = &netdev_ethtool_ops;
	netdev->ethtool_ops = &netdev_ethtool_ops;
	SET_NETDEV_DEV(netdev, &dev->dev);
	SET_NETDEV_DEV(netdev, &dev->dev);
 	netdev->features |= NETIF_F_LLTX;
	spin_lock_init(&adapter->stats_lock);


	memcpy(netdev->dev_addr, &adapter->mac_addr, netdev->addr_len);
	memcpy(netdev->dev_addr, &adapter->mac_addr, netdev->addr_len);


+0 −1
Original line number Original line Diff line number Diff line
@@ -158,7 +158,6 @@ struct ibmveth_adapter {
    u64 rx_no_buffer;
    u64 rx_no_buffer;
    u64 tx_map_failed;
    u64 tx_map_failed;
    u64 tx_send_failed;
    u64 tx_send_failed;
    spinlock_t stats_lock;
};
};


struct ibmveth_buf_desc_fields {
struct ibmveth_buf_desc_fields {