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

Commit d5b9049d authored by Michael Reiss's avatar Michael Reiss Committed by Jeff Garzik
Browse files

ucc_geth: Implement Transmit on Demand support



Transmit on Demand: Fix spelling in config option, and make it actually enable TOD.

Signed-off-by: default avatarMichael Reiss <michael.f.reiss@freescale.com>
Signed-off-by: default avatarMichael Barkowski <michael.barkowski@freescale.com>
Signed-off-by: default avatarKim Phillips <kim.phillips@freescale.com>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent 7563907e
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -210,6 +210,9 @@ int ucc_fast_init(struct ucc_fast_info * uf_info, struct ucc_fast_private ** ucc
	uf_regs = uccf->uf_regs;
	uccf->p_ucce = (u32 *) & (uf_regs->ucce);
	uccf->p_uccm = (u32 *) & (uf_regs->uccm);
#ifdef CONFIG_UGETH_TX_ON_DEMAND
	uccf->p_utodr = (u16 *) & (uf_regs->utodr);
#endif
#ifdef STATISTICS
	uccf->tx_frames = 0;
	uccf->rx_frames = 0;
+2 −2
Original line number Diff line number Diff line
@@ -2292,8 +2292,8 @@ config UGETH_FILTERING
	bool "Mac address filtering support"
	depends on UCC_GETH

config UGETH_TX_ON_DEMOND
	bool "Transmit on Demond support"
config UGETH_TX_ON_DEMAND
	bool "Transmit on Demand support"
	depends on UCC_GETH

config MV643XX_ETH
+7 −8
Original line number Diff line number Diff line
@@ -1626,14 +1626,6 @@ static int init_phy(struct net_device *dev)
}


#ifdef CONFIG_UGETH_TX_ON_DEMOND
static int ugeth_transmit_on_demand(struct ucc_geth_private *ugeth)
{
	struct ucc_fastransmit_on_demand(ugeth->uccf);

	return 0;
}
#endif

static int ugeth_graceful_stop_tx(struct ucc_geth_private *ugeth)
{
@@ -3343,6 +3335,9 @@ static void ucc_geth_timeout(struct net_device *dev)
static int ucc_geth_start_xmit(struct sk_buff *skb, struct net_device *dev)
{
	struct ucc_geth_private *ugeth = netdev_priv(dev);
#ifdef CONFIG_UGETH_TX_ON_DEMAND
	struct ucc_fast_private *uccf;
#endif
	u8 *bd;			/* BD pointer */
	u32 bd_status;
	u8 txQ = 0;
@@ -3401,6 +3396,10 @@ static int ucc_geth_start_xmit(struct sk_buff *skb, struct net_device *dev)
		out_be16(ugeth->p_cpucount[txQ], ugeth->cpucount[txQ]);
	}

#ifdef CONFIG_UGETH_TX_ON_DEMAND
	uccf = ugeth->uccf;
	out_be16(uccf->p_utodr, UCC_FAST_TOD);
#endif
	spin_unlock_irq(&ugeth->lock);

	return 0;
+3 −0
Original line number Diff line number Diff line
@@ -159,6 +159,9 @@ struct ucc_fast_private {
	struct ucc_fast *uf_regs;	/* a pointer to memory map of UCC regs. */
	u32 *p_ucce;		/* a pointer to the event register in memory. */
	u32 *p_uccm;		/* a pointer to the mask register in memory. */
#ifdef CONFIG_UGETH_TX_ON_DEMAND
	u16 *p_utodr;		/* pointer to the transmit on demand register */
#endif
	int enabled_tx;		/* Whether channel is enabled for Tx (ENT) */
	int enabled_rx;		/* Whether channel is enabled for Rx (ENR) */
	int stopped_tx;		/* Whether channel has been stopped for Tx