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

Commit cfc88b07 authored by Jeff Garzik's avatar Jeff Garzik
Browse files

Merge branch 'upstream-fixes'

parents cca4aa83 6651a5c3
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -313,7 +313,7 @@ static struct platform_device mpsc1_device = {
};
#endif

#ifdef CONFIG_MV643XX_ETH
#if defined(CONFIG_MV643XX_ETH) || defined(CONFIG_MV643XX_ETH_MODULE)
static struct resource mv64x60_eth_shared_resources[] = {
	[0] = {
		.name	= "ethernet shared base",
@@ -456,7 +456,7 @@ static struct platform_device *mv64x60_pd_devs[] __initdata = {
	&mpsc0_device,
	&mpsc1_device,
#endif
#ifdef CONFIG_MV643XX_ETH
#if defined(CONFIG_MV643XX_ETH) || defined(CONFIG_MV643XX_ETH_MODULE)
	&mv64x60_eth_shared_device,
#endif
#ifdef CONFIG_MV643XX_ETH_0
+47 −61
Original line number Diff line number Diff line
@@ -444,6 +444,7 @@ static int mv643xx_eth_receive_queue(struct net_device *dev)
			netif_rx(skb);
#endif
		}
		dev->last_rx = jiffies;
	}

	return received_packets;
@@ -1054,7 +1055,6 @@ static inline unsigned int has_tiny_unaligned_frags(struct sk_buff *skb)
		fragp = &skb_shinfo(skb)->frags[frag];
		if (fragp->size <= 8 && fragp->page_offset & 0x7)
			return 1;

	}
	return 0;
}
@@ -2617,7 +2617,6 @@ static ETH_FUNC_RET_STATUS eth_port_send(struct mv643xx_private *mp,
	struct eth_tx_desc *current_descriptor;
	struct eth_tx_desc *first_descriptor;
	u32 command;
	unsigned long flags;

	/* Do not process Tx ring in case of Tx ring resource error */
	if (mp->tx_resource_err)
@@ -2634,8 +2633,6 @@ static ETH_FUNC_RET_STATUS eth_port_send(struct mv643xx_private *mp,
		return ETH_ERROR;
	}

	spin_lock_irqsave(&mp->lock, flags);

	mp->tx_ring_skbs++;
	BUG_ON(mp->tx_ring_skbs > mp->tx_ring_size);

@@ -2685,15 +2682,11 @@ static ETH_FUNC_RET_STATUS eth_port_send(struct mv643xx_private *mp,
		mp->tx_resource_err = 1;
		mp->tx_curr_desc_q = tx_first_desc;

		spin_unlock_irqrestore(&mp->lock, flags);

		return ETH_QUEUE_LAST_RESOURCE;
	}

	mp->tx_curr_desc_q = tx_next_desc;

	spin_unlock_irqrestore(&mp->lock, flags);

	return ETH_OK;
}
#else
@@ -2704,14 +2697,11 @@ static ETH_FUNC_RET_STATUS eth_port_send(struct mv643xx_private *mp,
	int tx_desc_used;
	struct eth_tx_desc *current_descriptor;
	unsigned int command_status;
	unsigned long flags;

	/* Do not process Tx ring in case of Tx ring resource error */
	if (mp->tx_resource_err)
		return ETH_QUEUE_FULL;

	spin_lock_irqsave(&mp->lock, flags);

	mp->tx_ring_skbs++;
	BUG_ON(mp->tx_ring_skbs > mp->tx_ring_size);

@@ -2742,12 +2732,9 @@ static ETH_FUNC_RET_STATUS eth_port_send(struct mv643xx_private *mp,
	/* Check for ring index overlap in the Tx desc ring */
	if (tx_desc_curr == tx_desc_used) {
		mp->tx_resource_err = 1;

		spin_unlock_irqrestore(&mp->lock, flags);
		return ETH_QUEUE_LAST_RESOURCE;
	}

	spin_unlock_irqrestore(&mp->lock, flags);
	return ETH_OK;
}
#endif
@@ -2898,8 +2885,10 @@ static ETH_FUNC_RET_STATUS eth_port_receive(struct mv643xx_private *mp,
	p_pkt_info->return_info = mp->rx_skb[rx_curr_desc];
	p_pkt_info->l4i_chk = p_rx_desc->buf_size;

	/* Clean the return info field to indicate that the packet has been */
	/* moved to the upper layers					    */
	/*
	 * Clean the return info field to indicate that the
	 * packet has been moved to the upper layers
	 */
	mp->rx_skb[rx_curr_desc] = NULL;

	/* Update current index in data structure */
@@ -3131,8 +3120,7 @@ mv643xx_get_settings(struct net_device *netdev, struct ethtool_cmd *ecmd)
	return 0;
}

static void
mv643xx_get_drvinfo(struct net_device *netdev,
static void mv643xx_get_drvinfo(struct net_device *netdev,
				struct ethtool_drvinfo *drvinfo)
{
	strncpy(drvinfo->driver,  mv643xx_driver_name, 32);
@@ -3142,14 +3130,12 @@ mv643xx_get_drvinfo(struct net_device *netdev,
	drvinfo->n_stats = MV643XX_STATS_LEN;
}

static int 
mv643xx_get_stats_count(struct net_device *netdev)
static int mv643xx_get_stats_count(struct net_device *netdev)
{
	return MV643XX_STATS_LEN;
}

static void 
mv643xx_get_ethtool_stats(struct net_device *netdev, 
static void mv643xx_get_ethtool_stats(struct net_device *netdev,
				struct ethtool_stats *stats, uint64_t *data)
{
	struct mv643xx_private *mp = netdev->priv;
@@ -3164,8 +3150,8 @@ mv643xx_get_ethtool_stats(struct net_device *netdev,
	}
}

static void 
mv643xx_get_strings(struct net_device *netdev, uint32_t stringset, uint8_t *data)
static void mv643xx_get_strings(struct net_device *netdev, uint32_t stringset,
				uint8_t *data)
{
	int i;