net: Pass eth_device to net_receive
So that barebox has the information which interface a packet came from. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
parent
75482a0663
commit
22b878d251
|
@ -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));
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -304,7 +304,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);
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -895,7 +895,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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -633,7 +633,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);
|
||||
} else {
|
||||
dev_dbg(dev, "Discarding packet\n");
|
||||
dm9k_dump(priv->buswidth, priv->iodata, rx_len); /* discard packet */
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -369,7 +369,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 */
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
/*
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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) |
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -413,7 +413,7 @@ struct eth_device *eth_get_byname(const char *name);
|
|||
*
|
||||
* Return 0 if the packet is successfully handled. Can be ignored
|
||||
*/
|
||||
int net_receive(unsigned char *pkt, int len);
|
||||
int net_receive(struct eth_device *edev, unsigned char *pkt, int len);
|
||||
|
||||
struct net_connection {
|
||||
struct ethernet *et;
|
||||
|
|
Loading…
Reference in New Issue