summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2014-06-04 21:03:45 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2014-06-04 21:03:45 +0200
commita3dfea9af8d31d27b0d9957965d1056912041321 (patch)
tree3b25fbb33a1f74d69ba7fa5b350bf406cdb1596d /drivers
parent6331e58a2c99009587eeb2252d0c6ac9de882c1c (diff)
parent15b0abce264be775aa63dc0de9c74d39529baf84 (diff)
downloadbarebox-a3dfea9af8d31d27b0d9957965d1056912041321.tar.gz
barebox-a3dfea9af8d31d27b0d9957965d1056912041321.tar.xz
Merge branch 'for-next/net'
Conflicts: drivers/net/dm9k.c
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/Kconfig1
-rw-r--r--drivers/net/altera_tse.c2
-rw-r--r--drivers/net/ar231x.c2
-rw-r--r--drivers/net/arc_emac.c30
-rw-r--r--drivers/net/at91_ether.c2
-rw-r--r--drivers/net/cpsw.c73
-rw-r--r--drivers/net/cs8900.c2
-rw-r--r--drivers/net/davinci_emac.c2
-rw-r--r--drivers/net/designware.c2
-rw-r--r--drivers/net/dm9k.c2
-rw-r--r--drivers/net/ep93xx.c2
-rw-r--r--drivers/net/ethoc.c59
-rw-r--r--drivers/net/fec_imx.c2
-rw-r--r--drivers/net/fec_mpc5200.c2
-rw-r--r--drivers/net/gianfar.c2
-rw-r--r--drivers/net/ks8851_mll.c2
-rw-r--r--drivers/net/macb.c4
-rw-r--r--drivers/net/netx_eth.c2
-rw-r--r--drivers/net/orion-gbe.c2
-rw-r--r--drivers/net/phy/phy.c2
-rw-r--r--drivers/net/smc91111.c2
-rw-r--r--drivers/net/smc911x.c2
-rw-r--r--drivers/net/tap.c2
-rw-r--r--drivers/net/usb/asix.c2
-rw-r--r--drivers/net/usb/smsc95xx.c4
-rw-r--r--drivers/net/usb/usbnet.c2
-rw-r--r--drivers/net/xgmac.c2
27 files changed, 131 insertions, 82 deletions
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
index 057abd2bca..7a0d5e107b 100644
--- a/drivers/net/Kconfig
+++ b/drivers/net/Kconfig
@@ -80,6 +80,7 @@ config DRIVER_NET_EP93XX
config DRIVER_NET_ETHOC
bool "OpenCores ethernet MAC driver"
+ select PHYLIB
help
This option enables support for the OpenCores 10/100 Mbps
Ethernet MAC core.
diff --git a/drivers/net/altera_tse.c b/drivers/net/altera_tse.c
index 6978e2a2ea..4bbf59558c 100644
--- a/drivers/net/altera_tse.c
+++ b/drivers/net/altera_tse.c
@@ -402,7 +402,7 @@ static int tse_eth_rx(struct eth_device *edev)
ALT_SGDMA_DESCRIPTOR_STATUS_TERMINATED_BY_EOP_MSK) {
packet_length = rx_desc->actual_bytes_transferred;
- net_receive(NetRxPackets[0], packet_length);
+ net_receive(edev, NetRxPackets[0], packet_length);
/* Clear Run */
rx_sgdma->control = (rx_sgdma->control & (~ALT_SGDMA_CONTROL_RUN_MSK));
diff --git a/drivers/net/ar231x.c b/drivers/net/ar231x.c
index 515de17b10..572008a831 100644
--- a/drivers/net/ar231x.c
+++ b/drivers/net/ar231x.c
@@ -217,7 +217,7 @@ static int ar231x_eth_recv(struct eth_device *edev)
u16 length =
((status >> DMA_RX_LEN_SHIFT) & 0x3fff)
- CRC_LEN;
- net_receive((void *)rxdsc->buffer_ptr, length);
+ net_receive(edev, (void *)rxdsc->buffer_ptr, length);
}
/* Clean descriptor. now it is owned by DMA. */
priv->next_rxdsc = (struct ar231x_descr *)rxdsc->next_dsc_ptr;
diff --git a/drivers/net/arc_emac.c b/drivers/net/arc_emac.c
index 1f1e889199..8b74ea5704 100644
--- a/drivers/net/arc_emac.c
+++ b/drivers/net/arc_emac.c
@@ -17,6 +17,7 @@
*/
#include <asm/mmu.h>
+#include <clock.h>
#include <common.h>
#include <net.h>
#include <io.h>
@@ -209,9 +210,6 @@ static int arc_emac_open(struct eth_device *edev)
arc_reg_set(priv, R_RX_RING, (unsigned int)priv->rxbd);
arc_reg_set(priv, R_TX_RING, (unsigned int)priv->txbd);
- /* Enable interrupts */
- arc_reg_set(priv, R_ENABLE, RXINT_MASK | ERR_MASK);
-
/* Set CONTROL */
arc_reg_set(priv, R_CTRL,
(RX_BD_NUM << 24) | /* RX BD table length */
@@ -304,7 +302,7 @@ static int arc_emac_recv(struct eth_device *edev)
dma_inv_range((unsigned long)rxbd->data,
(unsigned long)rxbd->data + pktlen);
- net_receive((unsigned char *)rxbd->data, pktlen);
+ net_receive(edev, (unsigned char *)rxbd->data, pktlen);
rxbd->info = cpu_to_le32(FOR_EMAC | PKTSIZE);
}
@@ -316,9 +314,6 @@ static void arc_emac_halt(struct eth_device *edev)
{
struct arc_emac_priv *priv = edev->priv;
- /* Disable interrupts */
- arc_reg_clr(priv, R_ENABLE, RXINT_MASK | ERR_MASK);
-
/* Disable EMAC */
arc_reg_clr(priv, R_CTRL, EN_MASK);
}
@@ -342,26 +337,18 @@ static int arc_emac_set_ethaddr(struct eth_device *edev, unsigned char *mac)
return 0;
}
-/* Number of seconds we wait for "MDIO complete" flag to appear */
-#define ARC_MDIO_COMPLETE_POLL_COUNT 1
-
static int arc_mdio_complete_wait(struct arc_emac_priv *priv)
{
- unsigned int i;
-
- for (i = 0; i < ARC_MDIO_COMPLETE_POLL_COUNT * 40; i++) {
- unsigned int status = arc_reg_get(priv, R_STATUS);
+ uint64_t start = get_time_ns();
- status &= MDIO_MASK;
-
- if (status) {
+ while (!is_timeout(start, 1000 * MSECOND)) {
+ if (arc_reg_get(priv, R_STATUS) & MDIO_MASK) {
/* Reset "MDIO complete" flag */
- arc_reg_set(priv, R_STATUS, status);
+ arc_reg_set(priv, R_STATUS, MDIO_MASK);
return 0;
}
-
- mdelay(25);
}
+
return -ETIMEDOUT;
}
@@ -447,6 +434,9 @@ static int arc_emac_probe(struct device_d *dev)
/* Set poll rate so that it polls every 1 ms */
arc_reg_set(priv, R_POLLRATE, clock_frequency / 1000000);
+ /* Disable interrupts */
+ arc_reg_set(priv, R_ENABLE, 0);
+
mdiobus_register(miibus);
eth_register(edev);
diff --git a/drivers/net/at91_ether.c b/drivers/net/at91_ether.c
index bf2f957a36..e09ea83f68 100644
--- a/drivers/net/at91_ether.c
+++ b/drivers/net/at91_ether.c
@@ -224,7 +224,7 @@ static int at91_ether_rx(struct eth_device *edev)
size = rbfp->size & RBF_SIZE;
- net_receive((unsigned char *)(rbfp->addr & RBF_ADDR), size);
+ net_receive(edev, (unsigned char *)(rbfp->addr & RBF_ADDR), size);
rbfp->addr &= ~RBF_OWNER;
if (rbfp->addr & RBF_WRAP)
diff --git a/drivers/net/cpsw.c b/drivers/net/cpsw.c
index ec3263d4aa..ccae5376c3 100644
--- a/drivers/net/cpsw.c
+++ b/drivers/net/cpsw.c
@@ -178,11 +178,11 @@ struct cpsw_slave {
struct cpsw_slave_regs *regs;
struct cpsw_sliver_regs *sliver;
int slave_num;
- u32 mac_control;
int phy_id;
phy_interface_t phy_if;
struct eth_device edev;
struct cpsw_priv *cpsw;
+ struct device_d dev;
};
struct cpdma_desc {
@@ -540,9 +540,8 @@ static inline void soft_reset(struct cpsw_priv *priv, void *reg)
static int cpsw_get_hwaddr(struct eth_device *edev, unsigned char *mac)
{
struct cpsw_slave *slave = edev->priv;
- struct cpsw_priv *priv = slave->cpsw;
- dev_dbg(priv->dev, "* %s\n", __func__);
+ dev_dbg(&slave->dev, "* %s\n", __func__);
return -1;
}
@@ -552,7 +551,7 @@ static int cpsw_set_hwaddr(struct eth_device *edev, unsigned char *mac)
struct cpsw_slave *slave = edev->priv;
struct cpsw_priv *priv = slave->cpsw;
- dev_dbg(priv->dev, "* %s\n", __func__);
+ dev_dbg(&slave->dev, "* %s\n", __func__);
memcpy(&priv->mac_addr, mac, sizeof(priv->mac_addr));
@@ -568,14 +567,11 @@ static void cpsw_slave_update_link(struct cpsw_slave *slave,
struct phy_device *phydev = slave->edev.phydev;
u32 mac_control = 0;
- dev_dbg(priv->dev, "* %s\n", __func__);
+ dev_dbg(&slave->dev, "* %s\n", __func__);
if (!phydev)
return;
- if (slave->slave_num)
- return;
-
if (phydev->link) {
*link = 1;
mac_control = BIT(5); /* MIIEN */
@@ -590,26 +586,22 @@ static void cpsw_slave_update_link(struct cpsw_slave *slave,
mac_control |= BIT(0); /* FULLDUPLEXEN */
}
- if (mac_control == slave->mac_control)
- return;
-
if (mac_control) {
- dev_dbg(priv->dev, "link up on port %d, speed %d, %s duplex\n",
- slave->slave_num, phydev->speed,
+ dev_dbg(&slave->dev, "link up, speed %d, %s duplex\n",
+ phydev->speed,
(phydev->duplex == DUPLEX_FULL) ? "full" : "half");
} else {
- dev_dbg(priv->dev, "link down on port %d\n", slave->slave_num);
+ dev_dbg(&slave->dev, "link down\n");
}
writel(mac_control, &slave->sliver->mac_control);
- slave->mac_control = mac_control;
}
static int cpsw_update_link(struct cpsw_slave *slave, struct cpsw_priv *priv)
{
int link = 0;
- dev_dbg(priv->dev, "* %s\n", __func__);
+ dev_dbg(&slave->dev, "* %s\n", __func__);
cpsw_slave_update_link(slave, priv, &link);
@@ -621,7 +613,7 @@ static void cpsw_adjust_link(struct eth_device *edev)
struct cpsw_slave *slave = edev->priv;
struct cpsw_priv *priv = slave->cpsw;
- dev_dbg(priv->dev, "* %s\n", __func__);
+ dev_dbg(&slave->dev, "* %s\n", __func__);
cpsw_update_link(slave, priv);
}
@@ -638,7 +630,7 @@ static void cpsw_slave_init(struct cpsw_slave *slave, struct cpsw_priv *priv)
{
u32 slave_port;
- dev_dbg(priv->dev, "* %s\n", __func__);
+ dev_dbg(&slave->dev, "* %s\n", __func__);
soft_reset(priv, &slave->sliver->soft_reset);
@@ -649,8 +641,6 @@ static void cpsw_slave_init(struct cpsw_slave *slave, struct cpsw_priv *priv)
/* setup max packet size, and mac address */
writel(PKT_MAX, &slave->sliver->rx_maxlen);
- slave->mac_control = 0; /* no link yet */
-
/* enable forwarding */
slave_port = cpsw_get_slave_port(priv, slave->slave_num);
cpsw_ale_port_state(priv, slave_port, ALE_PORT_STATE_FORWARD);
@@ -769,7 +759,7 @@ static int cpsw_open(struct eth_device *edev)
struct cpsw_priv *priv = slave->cpsw;
int i, ret;
- dev_dbg(priv->dev, "* %s\n", __func__);
+ dev_dbg(&slave->dev, "* %s\n", __func__);
ret = phy_device_connect(edev, &priv->miibus, slave->phy_id,
cpsw_adjust_link, 0, slave->phy_if);
@@ -801,8 +791,8 @@ static int cpsw_open(struct eth_device *edev)
ALE_SECURE);
cpsw_ale_add_mcast(priv, ethbdaddr, 1 << priv->host_port);
- cpsw_slave_init(&priv->slaves[0], priv);
- cpsw_update_link(&priv->slaves[0], priv);
+ cpsw_slave_init(slave, priv);
+ cpsw_update_link(slave, priv);
/* init descriptor pool */
for (i = 0; i < NUM_DESCS; i++) {
@@ -842,7 +832,7 @@ static int cpsw_open(struct eth_device *edev)
ret = cpdma_submit(priv, &priv->rx_chan, NetRxPackets[i],
PKTSIZE);
if (ret < 0) {
- dev_err(priv->dev, "error %d submitting rx desc\n", ret);
+ dev_err(&slave->dev, "error %d submitting rx desc\n", ret);
break;
}
}
@@ -855,6 +845,8 @@ static void cpsw_halt(struct eth_device *edev)
struct cpsw_slave *slave = edev->priv;
struct cpsw_priv *priv = slave->cpsw;
+ dev_dbg(priv->dev, "* %s slave %d\n", __func__, slave->slave_num);
+
writel(0, priv->dma_regs + CPDMA_TXCONTROL);
writel(0, priv->dma_regs + CPDMA_RXCONTROL);
@@ -872,12 +864,12 @@ static int cpsw_send(struct eth_device *edev, void *packet, int length)
void *buffer;
int ret, len;
- dev_dbg(priv->dev, "* %s\n", __func__);
+ dev_dbg(&slave->dev, "* %s slave %d\n", __func__, slave->slave_num);
/* first reap completed packets */
while (cpdma_process(priv, &priv->tx_chan, &buffer, &len) >= 0);
- dev_dbg(priv->dev, "%s: %i bytes @ 0x%p\n", __func__, length, packet);
+ dev_dbg(&slave->dev, "%s: %i bytes @ 0x%p\n", __func__, length, packet);
dma_flush_range((ulong) packet, (ulong)packet + length);
@@ -895,7 +887,7 @@ static int cpsw_recv(struct eth_device *edev)
while (cpdma_process(priv, &priv->rx_chan, &buffer, &len) >= 0) {
dma_inv_range((ulong)buffer, (ulong)buffer + len);
- net_receive(buffer, len);
+ net_receive(edev, buffer, len);
cpdma_submit(priv, &priv->rx_chan, buffer, PKTSIZE);
}
@@ -916,8 +908,17 @@ static int cpsw_slave_setup(struct cpsw_slave *slave, int slave_num,
{
void *regs = priv->regs;
struct eth_device *edev = &slave->edev;
+ struct device_d *dev = &slave->dev;
+ int ret;
+
+ sprintf(dev->name, "cpsw-slave");
+ dev->id = slave->slave_num;
+ dev->parent = priv->dev;
+ ret = register_device(dev);
+ if (ret)
+ return ret;
- dev_dbg(priv->dev, "* %s\n", __func__);
+ dev_dbg(&slave->dev, "* %s\n", __func__);
slave->slave_num = slave_num;
slave->regs = regs + priv->slave_ofs + priv->slave_size * slave_num;
@@ -932,7 +933,7 @@ static int cpsw_slave_setup(struct cpsw_slave *slave, int slave_num,
edev->recv = cpsw_recv;
edev->get_ethaddr = cpsw_get_hwaddr;
edev->set_ethaddr = cpsw_set_hwaddr;
- edev->parent = priv->dev;
+ edev->parent = dev;
return eth_register(edev);
}
@@ -1077,6 +1078,7 @@ static int cpsw_probe_dt(struct cpsw_priv *priv)
if (ret)
return ret;
+ slave->dev.device_node = child;
slave->phy_id = phy_id[1];
slave->phy_if = of_get_phy_mode(child);
slave->slave_num = i;
@@ -1091,9 +1093,6 @@ static int cpsw_probe_dt(struct cpsw_priv *priv)
cpsw_gmii_sel_am335x(slave);
}
- /* Only one slave supported by this driver */
- priv->num_slaves = 1;
-
return 0;
}
@@ -1105,7 +1104,7 @@ int cpsw_probe(struct device_d *dev)
uint64_t start;
uint32_t phy_mask;
struct cpsw_data *cpsw_data;
- int ret;
+ int i, ret;
dev_dbg(dev, "* %s\n", __func__);
@@ -1197,9 +1196,11 @@ int cpsw_probe(struct device_d *dev)
mdiobus_register(&priv->miibus);
- ret = cpsw_slave_setup(&priv->slaves[0], 0, priv);
- if (ret)
- goto out;
+ for (i = 0; i < priv->num_slaves; i++) {
+ ret = cpsw_slave_setup(&priv->slaves[i], i, priv);
+ if (ret)
+ goto out;
+ }
return 0;
out:
diff --git a/drivers/net/cs8900.c b/drivers/net/cs8900.c
index aa9d9a0798..dccb808f95 100644
--- a/drivers/net/cs8900.c
+++ b/drivers/net/cs8900.c
@@ -309,7 +309,7 @@ static int cs8900_recv(struct eth_device *dev)
if (len & 1) {
*addr++ = readw(priv->regs + CS8900_RTDATA0);
}
- net_receive(NetRxPackets[0], len);
+ net_receive(dev, NetRxPackets[0], len);
return len;
}
diff --git a/drivers/net/davinci_emac.c b/drivers/net/davinci_emac.c
index 7848f50b9b..ce367a3656 100644
--- a/drivers/net/davinci_emac.c
+++ b/drivers/net/davinci_emac.c
@@ -462,7 +462,7 @@ static int davinci_emac_recv(struct eth_device *edev)
dev_dbg(priv->dev, "| emac_recv got packet (length %i)\n", len);
dma_inv_range((ulong)pkt,
(ulong)readl(rx_curr_desc + EMAC_DESC_BUFFER) + len);
- net_receive(pkt, len);
+ net_receive(edev, pkt, len);
ret = len;
}
diff --git a/drivers/net/designware.c b/drivers/net/designware.c
index e706f54b31..ac2eca5aed 100644
--- a/drivers/net/designware.c
+++ b/drivers/net/designware.c
@@ -356,7 +356,7 @@ static int dwc_ether_rx(struct eth_device *dev)
dma_inv_range((unsigned long)desc_p->dmamac_addr,
(unsigned long)desc_p->dmamac_addr + length);
- net_receive(desc_p->dmamac_addr, length);
+ net_receive(dev, desc_p->dmamac_addr, length);
desc_p->txrx_status |= DESC_RXSTS_OWNBYDMA;
diff --git a/drivers/net/dm9k.c b/drivers/net/dm9k.c
index 7c706e515b..3a4c6aacdc 100644
--- a/drivers/net/dm9k.c
+++ b/drivers/net/dm9k.c
@@ -634,7 +634,7 @@ static int dm9k_eth_rx(struct eth_device *edev)
dev_dbg(dev, "Receiving packet\n");
dm9k_rd(priv->buswidth, priv->iodata, priv->pckt, rx_len);
dev_dbg(dev, "passing %u bytes packet to upper layer\n", rx_len);
- net_receive(priv->pckt, rx_len);
+ net_receive(edev, priv->pckt, rx_len);
return 0;
} else {
dev_dbg(dev, "Discarding packet\n");
diff --git a/drivers/net/ep93xx.c b/drivers/net/ep93xx.c
index 1ecef13394..4b73abff37 100644
--- a/drivers/net/ep93xx.c
+++ b/drivers/net/ep93xx.c
@@ -344,7 +344,7 @@ static int ep93xx_eth_rcv_packet(struct eth_device *edev)
* used when we pass the data off to the protocol
* layer via net_receive().
*/
- net_receive((uchar *)priv->rx_dq.current->word1,
+ net_receive(edev, (uchar *)priv->rx_dq.current->word1,
RX_STATUS_FRAME_LEN(priv->rx_sq.current));
pr_debug("reporting %d bytes...\n",
RX_STATUS_FRAME_LEN(priv->rx_sq.current));
diff --git a/drivers/net/ethoc.c b/drivers/net/ethoc.c
index b00087578f..679e1e552a 100644
--- a/drivers/net/ethoc.c
+++ b/drivers/net/ethoc.c
@@ -178,6 +178,8 @@ struct ethoc {
u32 num_rx;
u32 cur_rx;
+
+ struct mii_bus miibus;
};
/**
@@ -369,7 +371,7 @@ static int ethoc_rx(struct eth_device *edev, int limit)
size -= 4; /* strip the CRC */
invalidate_dcache_range(bd.addr, bd.addr + PKTSIZE);
- net_receive((unsigned char *)bd.addr, size);
+ net_receive(edev, (unsigned char *)bd.addr, size);
}
/* clear the buffer descriptor so it can be reused */
@@ -481,6 +483,54 @@ static int ethoc_send_packet(struct eth_device *edev, void *packet, int length)
return 0;
}
+static int ethoc_mdio_read(struct mii_bus *bus, int phy, int reg)
+{
+ struct ethoc *priv = bus->priv;
+ u64 start;
+ u32 data;
+
+ ethoc_write(priv, MIIADDRESS, MIIADDRESS_ADDR(phy, reg));
+ ethoc_write(priv, MIICOMMAND, MIICOMMAND_READ);
+
+ start = get_time_ns();
+ while (ethoc_read(priv, MIISTATUS) & MIISTATUS_BUSY) {
+ if (is_timeout(start, 2 * MSECOND)) {
+ dev_err(bus->parent, "PHY command timeout\n");
+ return -EBUSY;
+ }
+ }
+
+ data = ethoc_read(priv, MIIRX_DATA);
+
+ /* reset MII command register */
+ ethoc_write(priv, MIICOMMAND, 0);
+
+ return data;
+}
+
+static int ethoc_mdio_write(struct mii_bus *bus, int phy, int reg, u16 val)
+{
+ struct ethoc *priv = bus->priv;
+ u64 start;
+
+ ethoc_write(priv, MIIADDRESS, MIIADDRESS_ADDR(phy, reg));
+ ethoc_write(priv, MIITX_DATA, val);
+ ethoc_write(priv, MIICOMMAND, MIICOMMAND_WRITE);
+
+ start = get_time_ns();
+ while (ethoc_read(priv, MIISTATUS) & MIISTATUS_BUSY) {
+ if (is_timeout(start, 2 * MSECOND)) {
+ dev_err(bus->parent, "PHY command timeout\n");
+ return -EBUSY;
+ }
+ }
+
+ /* reset MII command register */
+ ethoc_write(priv, MIICOMMAND, 0);
+
+ return 0;
+}
+
static int ethoc_probe(struct device_d *dev)
{
struct eth_device *edev;
@@ -493,6 +543,11 @@ static int ethoc_probe(struct device_d *dev)
priv = edev->priv;
priv->iobase = dev_request_mem_region(dev, 0);
+ priv->miibus.read = ethoc_mdio_read;
+ priv->miibus.write = ethoc_mdio_write;
+ priv->miibus.priv = priv;
+ priv->miibus.parent = dev;
+
edev->init = ethoc_init_dev;
edev->open = ethoc_open;
edev->send = ethoc_send_packet;
@@ -503,6 +558,8 @@ static int ethoc_probe(struct device_d *dev)
edev->set_ethaddr = ethoc_set_ethaddr;
edev->parent = dev;
+ mdiobus_register(&priv->miibus);
+
eth_register(edev);
return 0;
diff --git a/drivers/net/fec_imx.c b/drivers/net/fec_imx.c
index 808bf8f2a6..2f0876e5f1 100644
--- a/drivers/net/fec_imx.c
+++ b/drivers/net/fec_imx.c
@@ -581,7 +581,7 @@ static int fec_recv(struct eth_device *dev)
*/
frame = phys_to_virt(readl(&rbd->data_pointer));
frame_length = readw(&rbd->data_length) - 4;
- net_receive(frame->data, frame_length);
+ net_receive(dev, frame->data, frame_length);
len = frame_length;
} else {
if (bd_status & FEC_RBD_ERR) {
diff --git a/drivers/net/fec_mpc5200.c b/drivers/net/fec_mpc5200.c
index acad20c23d..41a3b58d53 100644
--- a/drivers/net/fec_mpc5200.c
+++ b/drivers/net/fec_mpc5200.c
@@ -622,7 +622,7 @@ static int mpc5xxx_fec_recv(struct eth_device *dev)
*/
memcpy(buff, frame->head, 14);
memcpy(buff + 14, frame->data, frame_length);
- net_receive(buff, frame_length);
+ net_receive(dev, buff, frame_length);
len = frame_length;
}
/*
diff --git a/drivers/net/gianfar.c b/drivers/net/gianfar.c
index f944c6c060..3370b5cdb3 100644
--- a/drivers/net/gianfar.c
+++ b/drivers/net/gianfar.c
@@ -413,7 +413,7 @@ static int gfar_recv(struct eth_device *edev)
/* Send the packet up if there were no errors */
if (!(priv->rxbd[priv->rxidx].status & RXBD_STATS)) {
- net_receive(NetRxPackets[priv->rxidx], length - 4);
+ net_receive(edev, NetRxPackets[priv->rxidx], length - 4);
} else {
dev_err(dev, "Got error %x\n",
(priv->rxbd[priv->rxidx].status & RXBD_STATS));
diff --git a/drivers/net/ks8851_mll.c b/drivers/net/ks8851_mll.c
index 9c0e5a7a10..83d1b02803 100644
--- a/drivers/net/ks8851_mll.c
+++ b/drivers/net/ks8851_mll.c
@@ -693,7 +693,7 @@ static int ks8851_rx_frame(struct ks_net *ks)
if (RxStatus & RXFSHR_RXFV) {
/* Pass to upper layer */
dev_dbg(dev, "passing packet to upper layer\n\n");
- net_receive(NetRxPackets[0], RxLen);
+ net_receive(&ks->edev, NetRxPackets[0], RxLen);
return RxLen;
} else if (RxStatus & RXFSHR_ERR) {
dev_err(dev, "RxStatus error 0x%04x\n", RxStatus & RXFSHR_ERR);
diff --git a/drivers/net/macb.c b/drivers/net/macb.c
index d8523cee3a..12a2a3c6c5 100644
--- a/drivers/net/macb.c
+++ b/drivers/net/macb.c
@@ -187,7 +187,7 @@ static int gem_recv(struct eth_device *edev)
status = macb->rx_ring[macb->rx_tail].ctrl;
length = MACB_BFEXT(RX_FRMLEN, status);
buffer = macb->rx_buffer + macb->rx_buffer_size * macb->rx_tail;
- net_receive(buffer, length);
+ net_receive(edev, buffer, length);
macb->rx_ring[macb->rx_tail].addr &= ~MACB_BIT(RX_USED);
barrier();
@@ -237,7 +237,7 @@ static int macb_recv(struct eth_device *edev)
buffer = (void *)NetRxPackets[0];
}
- net_receive(buffer, length);
+ net_receive(edev, buffer, length);
if (++rx_tail >= macb->rx_ring_size)
rx_tail = 0;
reclaim_rx_buffers(macb, rx_tail);
diff --git a/drivers/net/netx_eth.c b/drivers/net/netx_eth.c
index 309f4cb738..96dbc7c5df 100644
--- a/drivers/net/netx_eth.c
+++ b/drivers/net/netx_eth.c
@@ -110,7 +110,7 @@ static int netx_eth_rx (struct eth_device *edev)
/* get data */
memcpy((void*)NetRxPackets[0], (void *)(SRAM_BASE(seg) + frameno * 1560), len);
/* pass to barebox */
- net_receive(NetRxPackets[0], len);
+ net_receive(edev, NetRxPackets[0], len);
PFIFO_REG(PFIFO_BASE(EMPTY_PTR_FIFO(xcno))) =
FIFO_PTR_SEGMENT(seg) |
diff --git a/drivers/net/orion-gbe.c b/drivers/net/orion-gbe.c
index 00f5e543c1..17497047a9 100644
--- a/drivers/net/orion-gbe.c
+++ b/drivers/net/orion-gbe.c
@@ -303,7 +303,7 @@ static int port_recv(struct eth_device *edev)
ALIGN(PKTSIZE, 8));
/* received packet is padded with two null bytes */
- net_receive(rxdesc->buf_ptr + 0x2, rxdesc->byte_cnt - 0x2);
+ net_receive(edev, rxdesc->buf_ptr + 0x2, rxdesc->byte_cnt - 0x2);
ret = 0;
recv_err:
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
index 879939d4a2..5975637ff7 100644
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -49,7 +49,7 @@ int phy_update_status(struct phy_device *dev)
dev->adjust_link(edev);
if (dev->link)
- pr_info("%dMbps %s duplex link detected\n", dev->speed,
+ dev_info(&edev->dev, "%dMbps %s duplex link detected\n", dev->speed,
dev->duplex ? "full" : "half");
return 0;
diff --git a/drivers/net/smc91111.c b/drivers/net/smc91111.c
index ba81e24992..7baa7490f7 100644
--- a/drivers/net/smc91111.c
+++ b/drivers/net/smc91111.c
@@ -1169,7 +1169,7 @@ static int smc91c111_eth_rx(struct eth_device *edev)
if (!is_error) {
/* Pass the packet up to the protocol layers. */
- net_receive(NetRxPackets[0], packet_length);
+ net_receive(edev, NetRxPackets[0], packet_length);
return 0;
}
diff --git a/drivers/net/smc911x.c b/drivers/net/smc911x.c
index e0d78d06e5..9977ae3f32 100644
--- a/drivers/net/smc911x.c
+++ b/drivers/net/smc911x.c
@@ -478,7 +478,7 @@ static int smc911x_eth_rx(struct eth_device *edev)
dev_err(&edev->dev, "dropped bad packet. Status: 0x%08x\n",
status);
else
- net_receive(NetRxPackets[0], pktlen);
+ net_receive(edev, NetRxPackets[0], pktlen);
}
return 0;
diff --git a/drivers/net/tap.c b/drivers/net/tap.c
index 436b0e085a..2458fb52c7 100644
--- a/drivers/net/tap.c
+++ b/drivers/net/tap.c
@@ -45,7 +45,7 @@ int tap_eth_rx (struct eth_device *edev)
length = linux_read_nonblock(priv->fd, NetRxPackets[0], PKTSIZE);
if (length > 0)
- net_receive(NetRxPackets[0], length);
+ net_receive(edev, NetRxPackets[0], length);
return 0;
}
diff --git a/drivers/net/usb/asix.c b/drivers/net/usb/asix.c
index 2145d3f466..d6ac322b7b 100644
--- a/drivers/net/usb/asix.c
+++ b/drivers/net/usb/asix.c
@@ -431,7 +431,7 @@ static int asix_rx_fixup(struct usbnet *dev, void *buf, int len)
return 0;
}
- net_receive(buf, size);
+ net_receive(&dev->edev, buf, size);
buf += ((size + 1) & 0xfffe);
len -= ((size + 1) & 0xfffe);
diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c
index eb8f0beccf..053da1822a 100644
--- a/drivers/net/usb/smsc95xx.c
+++ b/drivers/net/usb/smsc95xx.c
@@ -793,11 +793,11 @@ static int smsc95xx_rx_fixup(struct usbnet *dev, void *buf, int len)
/* last frame in this batch */
if (len == size) {
- net_receive(buf, len - 4);
+ net_receive(&dev->edev, buf, len - 4);
return 1;
}
- net_receive(packet, len - 4);
+ net_receive(&dev->edev, packet, len - 4);
}
len -= size;
diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c
index 80b4ae7b9e..13f58e3ea0 100644
--- a/drivers/net/usb/usbnet.c
+++ b/drivers/net/usb/usbnet.c
@@ -138,7 +138,7 @@ static int usbnet_recv(struct eth_device *edev)
if (info->rx_fixup)
return info->rx_fixup(dev, rx_buf, alen);
else
- net_receive(rx_buf, alen);
+ net_receive(edev, rx_buf, alen);
}
return 0;
diff --git a/drivers/net/xgmac.c b/drivers/net/xgmac.c
index b4bfd08994..cc22d0ea54 100644
--- a/drivers/net/xgmac.c
+++ b/drivers/net/xgmac.c
@@ -617,7 +617,7 @@ static int xgmac_recv(struct eth_device *edev)
length = desc_get_rx_frame_len(rxdesc);
- net_receive(desc_get_buf_addr(rxdesc), length);
+ net_receive(edev, desc_get_buf_addr(rxdesc), length);
/* set descriptor back to owned by XGMAC */
desc_set_rx_owner(rxdesc);