Loading drivers/net/fec.c +121 −121 Original line number Diff line number Diff line Loading @@ -206,11 +206,11 @@ struct fec_enet_private { }; static irqreturn_t fec_enet_interrupt(int irq, void * dev_id); static void fec_enet_tx(struct net_device *dev); static void fec_enet_rx(struct net_device *dev); static int fec_enet_close(struct net_device *dev); static void fec_restart(struct net_device *dev, int duplex); static void fec_stop(struct net_device *dev); static void fec_enet_tx(struct net_device *ndev); static void fec_enet_rx(struct net_device *ndev); static int fec_enet_close(struct net_device *ndev); static void fec_restart(struct net_device *ndev, int duplex); static void fec_stop(struct net_device *ndev); /* FEC MII MMFR bits definition */ #define FEC_MMFR_ST (1 << 30) Loading Loading @@ -238,9 +238,9 @@ static void *swap_buffer(void *bufaddr, int len) } static netdev_tx_t fec_enet_start_xmit(struct sk_buff *skb, struct net_device *dev) fec_enet_start_xmit(struct sk_buff *skb, struct net_device *ndev) { struct fec_enet_private *fep = netdev_priv(dev); struct fec_enet_private *fep = netdev_priv(ndev); const struct platform_device_id *id_entry = platform_get_device_id(fep->pdev); struct bufdesc *bdp; Loading @@ -261,9 +261,9 @@ fec_enet_start_xmit(struct sk_buff *skb, struct net_device *dev) if (status & BD_ENET_TX_READY) { /* Ooops. All transmit buffers are full. Bail out. * This should not happen, since dev->tbusy should be set. * This should not happen, since ndev->tbusy should be set. */ printk("%s: tx queue full!.\n", dev->name); printk("%s: tx queue full!.\n", ndev->name); spin_unlock_irqrestore(&fep->hw_lock, flags); return NETDEV_TX_BUSY; } Loading Loading @@ -298,13 +298,13 @@ fec_enet_start_xmit(struct sk_buff *skb, struct net_device *dev) /* Save skb pointer */ fep->tx_skbuff[fep->skb_cur] = skb; dev->stats.tx_bytes += skb->len; ndev->stats.tx_bytes += skb->len; fep->skb_cur = (fep->skb_cur+1) & TX_RING_MOD_MASK; /* Push the data cache so the CPM does not get stale memory * data. */ bdp->cbd_bufaddr = dma_map_single(&dev->dev, bufaddr, bdp->cbd_bufaddr = dma_map_single(&ndev->dev, bufaddr, FEC_ENET_TX_FRSIZE, DMA_TO_DEVICE); /* Send it on its way. Tell FEC it's ready, interrupt when done, Loading @@ -325,7 +325,7 @@ fec_enet_start_xmit(struct sk_buff *skb, struct net_device *dev) if (bdp == fep->dirty_tx) { fep->tx_full = 1; netif_stop_queue(dev); netif_stop_queue(ndev); } fep->cur_tx = bdp; Loading @@ -336,21 +336,21 @@ fec_enet_start_xmit(struct sk_buff *skb, struct net_device *dev) } static void fec_timeout(struct net_device *dev) fec_timeout(struct net_device *ndev) { struct fec_enet_private *fep = netdev_priv(dev); struct fec_enet_private *fep = netdev_priv(ndev); dev->stats.tx_errors++; ndev->stats.tx_errors++; fec_restart(dev, fep->full_duplex); netif_wake_queue(dev); fec_restart(ndev, fep->full_duplex); netif_wake_queue(ndev); } static irqreturn_t fec_enet_interrupt(int irq, void *dev_id) { struct net_device *dev = dev_id; struct fec_enet_private *fep = netdev_priv(dev); struct net_device *ndev = dev_id; struct fec_enet_private *fep = netdev_priv(ndev); uint int_events; irqreturn_t ret = IRQ_NONE; Loading @@ -360,7 +360,7 @@ fec_enet_interrupt(int irq, void * dev_id) if (int_events & FEC_ENET_RXF) { ret = IRQ_HANDLED; fec_enet_rx(dev); fec_enet_rx(ndev); } /* Transmit OK, or non-fatal error. Update the buffer Loading @@ -369,7 +369,7 @@ fec_enet_interrupt(int irq, void * dev_id) */ if (int_events & FEC_ENET_TXF) { ret = IRQ_HANDLED; fec_enet_tx(dev); fec_enet_tx(ndev); } if (int_events & FEC_ENET_MII) { Loading @@ -383,14 +383,14 @@ fec_enet_interrupt(int irq, void * dev_id) static void fec_enet_tx(struct net_device *dev) fec_enet_tx(struct net_device *ndev) { struct fec_enet_private *fep; struct bufdesc *bdp; unsigned short status; struct sk_buff *skb; fep = netdev_priv(dev); fep = netdev_priv(ndev); spin_lock(&fep->hw_lock); bdp = fep->dirty_tx; Loading @@ -398,7 +398,7 @@ fec_enet_tx(struct net_device *dev) if (bdp == fep->cur_tx && fep->tx_full == 0) break; dma_unmap_single(&dev->dev, bdp->cbd_bufaddr, FEC_ENET_TX_FRSIZE, DMA_TO_DEVICE); dma_unmap_single(&ndev->dev, bdp->cbd_bufaddr, FEC_ENET_TX_FRSIZE, DMA_TO_DEVICE); bdp->cbd_bufaddr = 0; skb = fep->tx_skbuff[fep->skb_dirty]; Loading @@ -406,19 +406,19 @@ fec_enet_tx(struct net_device *dev) if (status & (BD_ENET_TX_HB | BD_ENET_TX_LC | BD_ENET_TX_RL | BD_ENET_TX_UN | BD_ENET_TX_CSL)) { dev->stats.tx_errors++; ndev->stats.tx_errors++; if (status & BD_ENET_TX_HB) /* No heartbeat */ dev->stats.tx_heartbeat_errors++; ndev->stats.tx_heartbeat_errors++; if (status & BD_ENET_TX_LC) /* Late collision */ dev->stats.tx_window_errors++; ndev->stats.tx_window_errors++; if (status & BD_ENET_TX_RL) /* Retrans limit */ dev->stats.tx_aborted_errors++; ndev->stats.tx_aborted_errors++; if (status & BD_ENET_TX_UN) /* Underrun */ dev->stats.tx_fifo_errors++; ndev->stats.tx_fifo_errors++; if (status & BD_ENET_TX_CSL) /* Carrier lost */ dev->stats.tx_carrier_errors++; ndev->stats.tx_carrier_errors++; } else { dev->stats.tx_packets++; ndev->stats.tx_packets++; } if (status & BD_ENET_TX_READY) Loading @@ -428,7 +428,7 @@ fec_enet_tx(struct net_device *dev) * but we eventually sent the packet OK. */ if (status & BD_ENET_TX_DEF) dev->stats.collisions++; ndev->stats.collisions++; /* Free the sk buffer associated with this last transmit */ dev_kfree_skb_any(skb); Loading @@ -445,8 +445,8 @@ fec_enet_tx(struct net_device *dev) */ if (fep->tx_full) { fep->tx_full = 0; if (netif_queue_stopped(dev)) netif_wake_queue(dev); if (netif_queue_stopped(ndev)) netif_wake_queue(ndev); } } fep->dirty_tx = bdp; Loading @@ -460,9 +460,9 @@ fec_enet_tx(struct net_device *dev) * effectively tossing the packet. */ static void fec_enet_rx(struct net_device *dev) fec_enet_rx(struct net_device *ndev) { struct fec_enet_private *fep = netdev_priv(dev); struct fec_enet_private *fep = netdev_priv(ndev); const struct platform_device_id *id_entry = platform_get_device_id(fep->pdev); struct bufdesc *bdp; Loading Loading @@ -496,17 +496,17 @@ fec_enet_rx(struct net_device *dev) /* Check for errors. */ if (status & (BD_ENET_RX_LG | BD_ENET_RX_SH | BD_ENET_RX_NO | BD_ENET_RX_CR | BD_ENET_RX_OV)) { dev->stats.rx_errors++; ndev->stats.rx_errors++; if (status & (BD_ENET_RX_LG | BD_ENET_RX_SH)) { /* Frame too long or too short. */ dev->stats.rx_length_errors++; ndev->stats.rx_length_errors++; } if (status & BD_ENET_RX_NO) /* Frame alignment */ dev->stats.rx_frame_errors++; ndev->stats.rx_frame_errors++; if (status & BD_ENET_RX_CR) /* CRC Error */ dev->stats.rx_crc_errors++; ndev->stats.rx_crc_errors++; if (status & BD_ENET_RX_OV) /* FIFO overrun */ dev->stats.rx_fifo_errors++; ndev->stats.rx_fifo_errors++; } /* Report late collisions as a frame error. Loading @@ -514,15 +514,15 @@ fec_enet_rx(struct net_device *dev) * have in the buffer. So, just drop this frame on the floor. */ if (status & BD_ENET_RX_CL) { dev->stats.rx_errors++; dev->stats.rx_frame_errors++; ndev->stats.rx_errors++; ndev->stats.rx_frame_errors++; goto rx_processing_done; } /* Process the incoming frame. */ dev->stats.rx_packets++; ndev->stats.rx_packets++; pkt_len = bdp->cbd_datlen; dev->stats.rx_bytes += pkt_len; ndev->stats.rx_bytes += pkt_len; data = (__u8*)__va(bdp->cbd_bufaddr); dma_unmap_single(NULL, bdp->cbd_bufaddr, bdp->cbd_datlen, Loading @@ -540,13 +540,13 @@ fec_enet_rx(struct net_device *dev) if (unlikely(!skb)) { printk("%s: Memory squeeze, dropping packet.\n", dev->name); dev->stats.rx_dropped++; ndev->name); ndev->stats.rx_dropped++; } else { skb_reserve(skb, NET_IP_ALIGN); skb_put(skb, pkt_len - 4); /* Make room */ skb_copy_to_linear_data(skb, data, pkt_len - 4); skb->protocol = eth_type_trans(skb, dev); skb->protocol = eth_type_trans(skb, ndev); netif_rx(skb); } Loading Loading @@ -577,9 +577,9 @@ fec_enet_rx(struct net_device *dev) } /* ------------------------------------------------------------------------- */ static void __inline__ fec_get_mac(struct net_device *dev) static void __inline__ fec_get_mac(struct net_device *ndev) { struct fec_enet_private *fep = netdev_priv(dev); struct fec_enet_private *fep = netdev_priv(ndev); struct fec_platform_data *pdata = fep->pdev->dev.platform_data; unsigned char *iap, tmpaddr[ETH_ALEN]; Loading Loading @@ -615,11 +615,11 @@ static void __inline__ fec_get_mac(struct net_device *dev) iap = &tmpaddr[0]; } memcpy(dev->dev_addr, iap, ETH_ALEN); memcpy(ndev->dev_addr, iap, ETH_ALEN); /* Adjust MAC if using macaddr */ if (iap == macaddr) dev->dev_addr[ETH_ALEN-1] = macaddr[ETH_ALEN-1] + fep->pdev->id; ndev->dev_addr[ETH_ALEN-1] = macaddr[ETH_ALEN-1] + fep->pdev->id; } /* ------------------------------------------------------------------------- */ Loading @@ -627,9 +627,9 @@ static void __inline__ fec_get_mac(struct net_device *dev) /* * Phy section */ static void fec_enet_adjust_link(struct net_device *dev) static void fec_enet_adjust_link(struct net_device *ndev) { struct fec_enet_private *fep = netdev_priv(dev); struct fec_enet_private *fep = netdev_priv(ndev); struct phy_device *phy_dev = fep->phy_dev; unsigned long flags; Loading @@ -646,7 +646,7 @@ static void fec_enet_adjust_link(struct net_device *dev) /* Duplex link change */ if (phy_dev->link) { if (fep->full_duplex != phy_dev->duplex) { fec_restart(dev, phy_dev->duplex); fec_restart(ndev, phy_dev->duplex); status_change = 1; } } Loading @@ -655,9 +655,9 @@ static void fec_enet_adjust_link(struct net_device *dev) if (phy_dev->link != fep->link) { fep->link = phy_dev->link; if (phy_dev->link) fec_restart(dev, phy_dev->duplex); fec_restart(ndev, phy_dev->duplex); else fec_stop(dev); fec_stop(ndev); status_change = 1; } Loading Loading @@ -726,9 +726,9 @@ static int fec_enet_mdio_reset(struct mii_bus *bus) return 0; } static int fec_enet_mii_probe(struct net_device *dev) static int fec_enet_mii_probe(struct net_device *ndev) { struct fec_enet_private *fep = netdev_priv(dev); struct fec_enet_private *fep = netdev_priv(ndev); struct phy_device *phy_dev = NULL; char mdio_bus_id[MII_BUS_ID_SIZE]; char phy_name[MII_BUS_ID_SIZE + 3]; Loading @@ -753,16 +753,16 @@ static int fec_enet_mii_probe(struct net_device *dev) if (phy_id >= PHY_MAX_ADDR) { printk(KERN_INFO "%s: no PHY, assuming direct connection " "to switch\n", dev->name); "to switch\n", ndev->name); strncpy(mdio_bus_id, "0", MII_BUS_ID_SIZE); phy_id = 0; } snprintf(phy_name, MII_BUS_ID_SIZE, PHY_ID_FMT, mdio_bus_id, phy_id); phy_dev = phy_connect(dev, phy_name, &fec_enet_adjust_link, 0, phy_dev = phy_connect(ndev, phy_name, &fec_enet_adjust_link, 0, PHY_INTERFACE_MODE_MII); if (IS_ERR(phy_dev)) { printk(KERN_ERR "%s: could not attach to PHY\n", dev->name); printk(KERN_ERR "%s: could not attach to PHY\n", ndev->name); return PTR_ERR(phy_dev); } Loading @@ -775,7 +775,7 @@ static int fec_enet_mii_probe(struct net_device *dev) fep->full_duplex = 0; printk(KERN_INFO "%s: Freescale FEC PHY driver [%s] " "(mii_bus:phy_addr=%s, irq=%d)\n", dev->name, "(mii_bus:phy_addr=%s, irq=%d)\n", ndev->name, fep->phy_dev->drv->name, dev_name(&fep->phy_dev->dev), fep->phy_dev->irq); Loading @@ -785,8 +785,8 @@ static int fec_enet_mii_probe(struct net_device *dev) static int fec_enet_mii_init(struct platform_device *pdev) { static struct mii_bus *fec0_mii_bus; struct net_device *dev = platform_get_drvdata(pdev); struct fec_enet_private *fep = netdev_priv(dev); struct net_device *ndev = platform_get_drvdata(pdev); struct fec_enet_private *fep = netdev_priv(ndev); const struct platform_device_id *id_entry = platform_get_device_id(fep->pdev); int err = -ENXIO, i; Loading Loading @@ -844,7 +844,7 @@ static int fec_enet_mii_init(struct platform_device *pdev) for (i = 0; i < PHY_MAX_ADDR; i++) fep->mii_bus->irq[i] = PHY_POLL; platform_set_drvdata(dev, fep->mii_bus); platform_set_drvdata(ndev, fep->mii_bus); if (mdiobus_register(fep->mii_bus)) goto err_out_free_mdio_irq; Loading Loading @@ -872,10 +872,10 @@ static void fec_enet_mii_remove(struct fec_enet_private *fep) mdiobus_free(fep->mii_bus); } static int fec_enet_get_settings(struct net_device *dev, static int fec_enet_get_settings(struct net_device *ndev, struct ethtool_cmd *cmd) { struct fec_enet_private *fep = netdev_priv(dev); struct fec_enet_private *fep = netdev_priv(ndev); struct phy_device *phydev = fep->phy_dev; if (!phydev) Loading @@ -884,10 +884,10 @@ static int fec_enet_get_settings(struct net_device *dev, return phy_ethtool_gset(phydev, cmd); } static int fec_enet_set_settings(struct net_device *dev, static int fec_enet_set_settings(struct net_device *ndev, struct ethtool_cmd *cmd) { struct fec_enet_private *fep = netdev_priv(dev); struct fec_enet_private *fep = netdev_priv(ndev); struct phy_device *phydev = fep->phy_dev; if (!phydev) Loading @@ -896,14 +896,14 @@ static int fec_enet_set_settings(struct net_device *dev, return phy_ethtool_sset(phydev, cmd); } static void fec_enet_get_drvinfo(struct net_device *dev, static void fec_enet_get_drvinfo(struct net_device *ndev, struct ethtool_drvinfo *info) { struct fec_enet_private *fep = netdev_priv(dev); struct fec_enet_private *fep = netdev_priv(ndev); strcpy(info->driver, fep->pdev->dev.driver->name); strcpy(info->version, "Revision: 1.0"); strcpy(info->bus_info, dev_name(&dev->dev)); strcpy(info->bus_info, dev_name(&ndev->dev)); } static struct ethtool_ops fec_enet_ethtool_ops = { Loading @@ -913,12 +913,12 @@ static struct ethtool_ops fec_enet_ethtool_ops = { .get_link = ethtool_op_get_link, }; static int fec_enet_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) static int fec_enet_ioctl(struct net_device *ndev, struct ifreq *rq, int cmd) { struct fec_enet_private *fep = netdev_priv(dev); struct fec_enet_private *fep = netdev_priv(ndev); struct phy_device *phydev = fep->phy_dev; if (!netif_running(dev)) if (!netif_running(ndev)) return -EINVAL; if (!phydev) Loading @@ -927,9 +927,9 @@ static int fec_enet_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) return phy_mii_ioctl(phydev, rq, cmd); } static void fec_enet_free_buffers(struct net_device *dev) static void fec_enet_free_buffers(struct net_device *ndev) { struct fec_enet_private *fep = netdev_priv(dev); struct fec_enet_private *fep = netdev_priv(ndev); int i; struct sk_buff *skb; struct bufdesc *bdp; Loading @@ -939,7 +939,7 @@ static void fec_enet_free_buffers(struct net_device *dev) skb = fep->rx_skbuff[i]; if (bdp->cbd_bufaddr) dma_unmap_single(&dev->dev, bdp->cbd_bufaddr, dma_unmap_single(&ndev->dev, bdp->cbd_bufaddr, FEC_ENET_RX_FRSIZE, DMA_FROM_DEVICE); if (skb) dev_kfree_skb(skb); Loading @@ -951,9 +951,9 @@ static void fec_enet_free_buffers(struct net_device *dev) kfree(fep->tx_bounce[i]); } static int fec_enet_alloc_buffers(struct net_device *dev) static int fec_enet_alloc_buffers(struct net_device *ndev) { struct fec_enet_private *fep = netdev_priv(dev); struct fec_enet_private *fep = netdev_priv(ndev); int i; struct sk_buff *skb; struct bufdesc *bdp; Loading @@ -962,12 +962,12 @@ static int fec_enet_alloc_buffers(struct net_device *dev) for (i = 0; i < RX_RING_SIZE; i++) { skb = dev_alloc_skb(FEC_ENET_RX_FRSIZE); if (!skb) { fec_enet_free_buffers(dev); fec_enet_free_buffers(ndev); return -ENOMEM; } fep->rx_skbuff[i] = skb; bdp->cbd_bufaddr = dma_map_single(&dev->dev, skb->data, bdp->cbd_bufaddr = dma_map_single(&ndev->dev, skb->data, FEC_ENET_RX_FRSIZE, DMA_FROM_DEVICE); bdp->cbd_sc = BD_ENET_RX_EMPTY; bdp++; Loading @@ -994,47 +994,47 @@ static int fec_enet_alloc_buffers(struct net_device *dev) } static int fec_enet_open(struct net_device *dev) fec_enet_open(struct net_device *ndev) { struct fec_enet_private *fep = netdev_priv(dev); struct fec_enet_private *fep = netdev_priv(ndev); int ret; /* I should reset the ring buffers here, but I don't yet know * a simple way to do that. */ ret = fec_enet_alloc_buffers(dev); ret = fec_enet_alloc_buffers(ndev); if (ret) return ret; /* Probe and connect to PHY when open the interface */ ret = fec_enet_mii_probe(dev); ret = fec_enet_mii_probe(ndev); if (ret) { fec_enet_free_buffers(dev); fec_enet_free_buffers(ndev); return ret; } phy_start(fep->phy_dev); netif_start_queue(dev); netif_start_queue(ndev); fep->opened = 1; return 0; } static int fec_enet_close(struct net_device *dev) fec_enet_close(struct net_device *ndev) { struct fec_enet_private *fep = netdev_priv(dev); struct fec_enet_private *fep = netdev_priv(ndev); /* Don't know what to do yet. */ fep->opened = 0; netif_stop_queue(dev); fec_stop(dev); netif_stop_queue(ndev); fec_stop(ndev); if (fep->phy_dev) { phy_stop(fep->phy_dev); phy_disconnect(fep->phy_dev); } fec_enet_free_buffers(dev); fec_enet_free_buffers(ndev); return 0; } Loading @@ -1052,14 +1052,14 @@ fec_enet_close(struct net_device *dev) #define HASH_BITS 6 /* #bits in hash */ #define CRC32_POLY 0xEDB88320 static void set_multicast_list(struct net_device *dev) static void set_multicast_list(struct net_device *ndev) { struct fec_enet_private *fep = netdev_priv(dev); struct fec_enet_private *fep = netdev_priv(ndev); struct netdev_hw_addr *ha; unsigned int i, bit, data, crc, tmp; unsigned char hash; if (dev->flags & IFF_PROMISC) { if (ndev->flags & IFF_PROMISC) { tmp = readl(fep->hwp + FEC_R_CNTRL); tmp |= 0x8; writel(tmp, fep->hwp + FEC_R_CNTRL); Loading @@ -1070,7 +1070,7 @@ static void set_multicast_list(struct net_device *dev) tmp &= ~0x8; writel(tmp, fep->hwp + FEC_R_CNTRL); if (dev->flags & IFF_ALLMULTI) { if (ndev->flags & IFF_ALLMULTI) { /* Catch all multicast addresses, so set the * filter to all 1's */ Loading @@ -1085,7 +1085,7 @@ static void set_multicast_list(struct net_device *dev) writel(0, fep->hwp + FEC_GRP_HASH_TABLE_HIGH); writel(0, fep->hwp + FEC_GRP_HASH_TABLE_LOW); netdev_for_each_mc_addr(ha, dev) { netdev_for_each_mc_addr(ha, ndev) { /* Only support group multicast for now */ if (!(ha->addr[0] & 1)) continue; Loading @@ -1093,7 +1093,7 @@ static void set_multicast_list(struct net_device *dev) /* calculate crc32 value of mac address */ crc = 0xffffffff; for (i = 0; i < dev->addr_len; i++) { for (i = 0; i < ndev->addr_len; i++) { data = ha->addr[i]; for (bit = 0; bit < 8; bit++, data >>= 1) { crc = (crc >> 1) ^ Loading @@ -1120,20 +1120,20 @@ static void set_multicast_list(struct net_device *dev) /* Set a MAC change in hardware. */ static int fec_set_mac_address(struct net_device *dev, void *p) fec_set_mac_address(struct net_device *ndev, void *p) { struct fec_enet_private *fep = netdev_priv(dev); struct fec_enet_private *fep = netdev_priv(ndev); struct sockaddr *addr = p; if (!is_valid_ether_addr(addr->sa_data)) return -EADDRNOTAVAIL; memcpy(dev->dev_addr, addr->sa_data, dev->addr_len); memcpy(ndev->dev_addr, addr->sa_data, ndev->addr_len); writel(dev->dev_addr[3] | (dev->dev_addr[2] << 8) | (dev->dev_addr[1] << 16) | (dev->dev_addr[0] << 24), writel(ndev->dev_addr[3] | (ndev->dev_addr[2] << 8) | (ndev->dev_addr[1] << 16) | (ndev->dev_addr[0] << 24), fep->hwp + FEC_ADDR_LOW); writel((dev->dev_addr[5] << 16) | (dev->dev_addr[4] << 24), writel((ndev->dev_addr[5] << 16) | (ndev->dev_addr[4] << 24), fep->hwp + FEC_ADDR_HIGH); return 0; } Loading @@ -1154,9 +1154,9 @@ static const struct net_device_ops fec_netdev_ops = { * XXX: We need to clean up on failure exits here. * */ static int fec_enet_init(struct net_device *dev) static int fec_enet_init(struct net_device *ndev) { struct fec_enet_private *fep = netdev_priv(dev); struct fec_enet_private *fep = netdev_priv(ndev); struct bufdesc *cbd_base; struct bufdesc *bdp; int i; Loading @@ -1171,19 +1171,19 @@ static int fec_enet_init(struct net_device *dev) spin_lock_init(&fep->hw_lock); fep->netdev = dev; fep->netdev = ndev; /* Get the Ethernet address */ fec_get_mac(dev); fec_get_mac(ndev); /* Set receive and transmit descriptor base. */ fep->rx_bd_base = cbd_base; fep->tx_bd_base = cbd_base + RX_RING_SIZE; /* The FEC Ethernet specific entries in the device structure */ dev->watchdog_timeo = TX_TIMEOUT; dev->netdev_ops = &fec_netdev_ops; dev->ethtool_ops = &fec_enet_ethtool_ops; ndev->watchdog_timeo = TX_TIMEOUT; ndev->netdev_ops = &fec_netdev_ops; ndev->ethtool_ops = &fec_enet_ethtool_ops; /* Initialize the receive buffer descriptors. */ bdp = fep->rx_bd_base; Loading Loading @@ -1212,7 +1212,7 @@ static int fec_enet_init(struct net_device *dev) bdp--; bdp->cbd_sc |= BD_SC_WRAP; fec_restart(dev, 0); fec_restart(ndev, 0); return 0; } Loading @@ -1222,9 +1222,9 @@ static int fec_enet_init(struct net_device *dev) * duplex. */ static void fec_restart(struct net_device *dev, int duplex) fec_restart(struct net_device *ndev, int duplex) { struct fec_enet_private *fep = netdev_priv(dev); struct fec_enet_private *fep = netdev_priv(ndev); const struct platform_device_id *id_entry = platform_get_device_id(fep->pdev); int i; Loading @@ -1239,7 +1239,7 @@ fec_restart(struct net_device *dev, int duplex) * so need to reconfigure it. */ if (id_entry->driver_data & FEC_QUIRK_ENET_MAC) { memcpy(&temp_mac, dev->dev_addr, ETH_ALEN); memcpy(&temp_mac, ndev->dev_addr, ETH_ALEN); writel(cpu_to_be32(temp_mac[0]), fep->hwp + FEC_ADDR_LOW); writel(cpu_to_be32(temp_mac[1]), fep->hwp + FEC_ADDR_HIGH); } Loading Loading @@ -1339,9 +1339,9 @@ fec_restart(struct net_device *dev, int duplex) } static void fec_stop(struct net_device *dev) fec_stop(struct net_device *ndev) { struct fec_enet_private *fep = netdev_priv(dev); struct fec_enet_private *fep = netdev_priv(ndev); /* We cannot expect a graceful transmit stop without link !!! */ if (fep->link) { Loading Loading
drivers/net/fec.c +121 −121 Original line number Diff line number Diff line Loading @@ -206,11 +206,11 @@ struct fec_enet_private { }; static irqreturn_t fec_enet_interrupt(int irq, void * dev_id); static void fec_enet_tx(struct net_device *dev); static void fec_enet_rx(struct net_device *dev); static int fec_enet_close(struct net_device *dev); static void fec_restart(struct net_device *dev, int duplex); static void fec_stop(struct net_device *dev); static void fec_enet_tx(struct net_device *ndev); static void fec_enet_rx(struct net_device *ndev); static int fec_enet_close(struct net_device *ndev); static void fec_restart(struct net_device *ndev, int duplex); static void fec_stop(struct net_device *ndev); /* FEC MII MMFR bits definition */ #define FEC_MMFR_ST (1 << 30) Loading Loading @@ -238,9 +238,9 @@ static void *swap_buffer(void *bufaddr, int len) } static netdev_tx_t fec_enet_start_xmit(struct sk_buff *skb, struct net_device *dev) fec_enet_start_xmit(struct sk_buff *skb, struct net_device *ndev) { struct fec_enet_private *fep = netdev_priv(dev); struct fec_enet_private *fep = netdev_priv(ndev); const struct platform_device_id *id_entry = platform_get_device_id(fep->pdev); struct bufdesc *bdp; Loading @@ -261,9 +261,9 @@ fec_enet_start_xmit(struct sk_buff *skb, struct net_device *dev) if (status & BD_ENET_TX_READY) { /* Ooops. All transmit buffers are full. Bail out. * This should not happen, since dev->tbusy should be set. * This should not happen, since ndev->tbusy should be set. */ printk("%s: tx queue full!.\n", dev->name); printk("%s: tx queue full!.\n", ndev->name); spin_unlock_irqrestore(&fep->hw_lock, flags); return NETDEV_TX_BUSY; } Loading Loading @@ -298,13 +298,13 @@ fec_enet_start_xmit(struct sk_buff *skb, struct net_device *dev) /* Save skb pointer */ fep->tx_skbuff[fep->skb_cur] = skb; dev->stats.tx_bytes += skb->len; ndev->stats.tx_bytes += skb->len; fep->skb_cur = (fep->skb_cur+1) & TX_RING_MOD_MASK; /* Push the data cache so the CPM does not get stale memory * data. */ bdp->cbd_bufaddr = dma_map_single(&dev->dev, bufaddr, bdp->cbd_bufaddr = dma_map_single(&ndev->dev, bufaddr, FEC_ENET_TX_FRSIZE, DMA_TO_DEVICE); /* Send it on its way. Tell FEC it's ready, interrupt when done, Loading @@ -325,7 +325,7 @@ fec_enet_start_xmit(struct sk_buff *skb, struct net_device *dev) if (bdp == fep->dirty_tx) { fep->tx_full = 1; netif_stop_queue(dev); netif_stop_queue(ndev); } fep->cur_tx = bdp; Loading @@ -336,21 +336,21 @@ fec_enet_start_xmit(struct sk_buff *skb, struct net_device *dev) } static void fec_timeout(struct net_device *dev) fec_timeout(struct net_device *ndev) { struct fec_enet_private *fep = netdev_priv(dev); struct fec_enet_private *fep = netdev_priv(ndev); dev->stats.tx_errors++; ndev->stats.tx_errors++; fec_restart(dev, fep->full_duplex); netif_wake_queue(dev); fec_restart(ndev, fep->full_duplex); netif_wake_queue(ndev); } static irqreturn_t fec_enet_interrupt(int irq, void *dev_id) { struct net_device *dev = dev_id; struct fec_enet_private *fep = netdev_priv(dev); struct net_device *ndev = dev_id; struct fec_enet_private *fep = netdev_priv(ndev); uint int_events; irqreturn_t ret = IRQ_NONE; Loading @@ -360,7 +360,7 @@ fec_enet_interrupt(int irq, void * dev_id) if (int_events & FEC_ENET_RXF) { ret = IRQ_HANDLED; fec_enet_rx(dev); fec_enet_rx(ndev); } /* Transmit OK, or non-fatal error. Update the buffer Loading @@ -369,7 +369,7 @@ fec_enet_interrupt(int irq, void * dev_id) */ if (int_events & FEC_ENET_TXF) { ret = IRQ_HANDLED; fec_enet_tx(dev); fec_enet_tx(ndev); } if (int_events & FEC_ENET_MII) { Loading @@ -383,14 +383,14 @@ fec_enet_interrupt(int irq, void * dev_id) static void fec_enet_tx(struct net_device *dev) fec_enet_tx(struct net_device *ndev) { struct fec_enet_private *fep; struct bufdesc *bdp; unsigned short status; struct sk_buff *skb; fep = netdev_priv(dev); fep = netdev_priv(ndev); spin_lock(&fep->hw_lock); bdp = fep->dirty_tx; Loading @@ -398,7 +398,7 @@ fec_enet_tx(struct net_device *dev) if (bdp == fep->cur_tx && fep->tx_full == 0) break; dma_unmap_single(&dev->dev, bdp->cbd_bufaddr, FEC_ENET_TX_FRSIZE, DMA_TO_DEVICE); dma_unmap_single(&ndev->dev, bdp->cbd_bufaddr, FEC_ENET_TX_FRSIZE, DMA_TO_DEVICE); bdp->cbd_bufaddr = 0; skb = fep->tx_skbuff[fep->skb_dirty]; Loading @@ -406,19 +406,19 @@ fec_enet_tx(struct net_device *dev) if (status & (BD_ENET_TX_HB | BD_ENET_TX_LC | BD_ENET_TX_RL | BD_ENET_TX_UN | BD_ENET_TX_CSL)) { dev->stats.tx_errors++; ndev->stats.tx_errors++; if (status & BD_ENET_TX_HB) /* No heartbeat */ dev->stats.tx_heartbeat_errors++; ndev->stats.tx_heartbeat_errors++; if (status & BD_ENET_TX_LC) /* Late collision */ dev->stats.tx_window_errors++; ndev->stats.tx_window_errors++; if (status & BD_ENET_TX_RL) /* Retrans limit */ dev->stats.tx_aborted_errors++; ndev->stats.tx_aborted_errors++; if (status & BD_ENET_TX_UN) /* Underrun */ dev->stats.tx_fifo_errors++; ndev->stats.tx_fifo_errors++; if (status & BD_ENET_TX_CSL) /* Carrier lost */ dev->stats.tx_carrier_errors++; ndev->stats.tx_carrier_errors++; } else { dev->stats.tx_packets++; ndev->stats.tx_packets++; } if (status & BD_ENET_TX_READY) Loading @@ -428,7 +428,7 @@ fec_enet_tx(struct net_device *dev) * but we eventually sent the packet OK. */ if (status & BD_ENET_TX_DEF) dev->stats.collisions++; ndev->stats.collisions++; /* Free the sk buffer associated with this last transmit */ dev_kfree_skb_any(skb); Loading @@ -445,8 +445,8 @@ fec_enet_tx(struct net_device *dev) */ if (fep->tx_full) { fep->tx_full = 0; if (netif_queue_stopped(dev)) netif_wake_queue(dev); if (netif_queue_stopped(ndev)) netif_wake_queue(ndev); } } fep->dirty_tx = bdp; Loading @@ -460,9 +460,9 @@ fec_enet_tx(struct net_device *dev) * effectively tossing the packet. */ static void fec_enet_rx(struct net_device *dev) fec_enet_rx(struct net_device *ndev) { struct fec_enet_private *fep = netdev_priv(dev); struct fec_enet_private *fep = netdev_priv(ndev); const struct platform_device_id *id_entry = platform_get_device_id(fep->pdev); struct bufdesc *bdp; Loading Loading @@ -496,17 +496,17 @@ fec_enet_rx(struct net_device *dev) /* Check for errors. */ if (status & (BD_ENET_RX_LG | BD_ENET_RX_SH | BD_ENET_RX_NO | BD_ENET_RX_CR | BD_ENET_RX_OV)) { dev->stats.rx_errors++; ndev->stats.rx_errors++; if (status & (BD_ENET_RX_LG | BD_ENET_RX_SH)) { /* Frame too long or too short. */ dev->stats.rx_length_errors++; ndev->stats.rx_length_errors++; } if (status & BD_ENET_RX_NO) /* Frame alignment */ dev->stats.rx_frame_errors++; ndev->stats.rx_frame_errors++; if (status & BD_ENET_RX_CR) /* CRC Error */ dev->stats.rx_crc_errors++; ndev->stats.rx_crc_errors++; if (status & BD_ENET_RX_OV) /* FIFO overrun */ dev->stats.rx_fifo_errors++; ndev->stats.rx_fifo_errors++; } /* Report late collisions as a frame error. Loading @@ -514,15 +514,15 @@ fec_enet_rx(struct net_device *dev) * have in the buffer. So, just drop this frame on the floor. */ if (status & BD_ENET_RX_CL) { dev->stats.rx_errors++; dev->stats.rx_frame_errors++; ndev->stats.rx_errors++; ndev->stats.rx_frame_errors++; goto rx_processing_done; } /* Process the incoming frame. */ dev->stats.rx_packets++; ndev->stats.rx_packets++; pkt_len = bdp->cbd_datlen; dev->stats.rx_bytes += pkt_len; ndev->stats.rx_bytes += pkt_len; data = (__u8*)__va(bdp->cbd_bufaddr); dma_unmap_single(NULL, bdp->cbd_bufaddr, bdp->cbd_datlen, Loading @@ -540,13 +540,13 @@ fec_enet_rx(struct net_device *dev) if (unlikely(!skb)) { printk("%s: Memory squeeze, dropping packet.\n", dev->name); dev->stats.rx_dropped++; ndev->name); ndev->stats.rx_dropped++; } else { skb_reserve(skb, NET_IP_ALIGN); skb_put(skb, pkt_len - 4); /* Make room */ skb_copy_to_linear_data(skb, data, pkt_len - 4); skb->protocol = eth_type_trans(skb, dev); skb->protocol = eth_type_trans(skb, ndev); netif_rx(skb); } Loading Loading @@ -577,9 +577,9 @@ fec_enet_rx(struct net_device *dev) } /* ------------------------------------------------------------------------- */ static void __inline__ fec_get_mac(struct net_device *dev) static void __inline__ fec_get_mac(struct net_device *ndev) { struct fec_enet_private *fep = netdev_priv(dev); struct fec_enet_private *fep = netdev_priv(ndev); struct fec_platform_data *pdata = fep->pdev->dev.platform_data; unsigned char *iap, tmpaddr[ETH_ALEN]; Loading Loading @@ -615,11 +615,11 @@ static void __inline__ fec_get_mac(struct net_device *dev) iap = &tmpaddr[0]; } memcpy(dev->dev_addr, iap, ETH_ALEN); memcpy(ndev->dev_addr, iap, ETH_ALEN); /* Adjust MAC if using macaddr */ if (iap == macaddr) dev->dev_addr[ETH_ALEN-1] = macaddr[ETH_ALEN-1] + fep->pdev->id; ndev->dev_addr[ETH_ALEN-1] = macaddr[ETH_ALEN-1] + fep->pdev->id; } /* ------------------------------------------------------------------------- */ Loading @@ -627,9 +627,9 @@ static void __inline__ fec_get_mac(struct net_device *dev) /* * Phy section */ static void fec_enet_adjust_link(struct net_device *dev) static void fec_enet_adjust_link(struct net_device *ndev) { struct fec_enet_private *fep = netdev_priv(dev); struct fec_enet_private *fep = netdev_priv(ndev); struct phy_device *phy_dev = fep->phy_dev; unsigned long flags; Loading @@ -646,7 +646,7 @@ static void fec_enet_adjust_link(struct net_device *dev) /* Duplex link change */ if (phy_dev->link) { if (fep->full_duplex != phy_dev->duplex) { fec_restart(dev, phy_dev->duplex); fec_restart(ndev, phy_dev->duplex); status_change = 1; } } Loading @@ -655,9 +655,9 @@ static void fec_enet_adjust_link(struct net_device *dev) if (phy_dev->link != fep->link) { fep->link = phy_dev->link; if (phy_dev->link) fec_restart(dev, phy_dev->duplex); fec_restart(ndev, phy_dev->duplex); else fec_stop(dev); fec_stop(ndev); status_change = 1; } Loading Loading @@ -726,9 +726,9 @@ static int fec_enet_mdio_reset(struct mii_bus *bus) return 0; } static int fec_enet_mii_probe(struct net_device *dev) static int fec_enet_mii_probe(struct net_device *ndev) { struct fec_enet_private *fep = netdev_priv(dev); struct fec_enet_private *fep = netdev_priv(ndev); struct phy_device *phy_dev = NULL; char mdio_bus_id[MII_BUS_ID_SIZE]; char phy_name[MII_BUS_ID_SIZE + 3]; Loading @@ -753,16 +753,16 @@ static int fec_enet_mii_probe(struct net_device *dev) if (phy_id >= PHY_MAX_ADDR) { printk(KERN_INFO "%s: no PHY, assuming direct connection " "to switch\n", dev->name); "to switch\n", ndev->name); strncpy(mdio_bus_id, "0", MII_BUS_ID_SIZE); phy_id = 0; } snprintf(phy_name, MII_BUS_ID_SIZE, PHY_ID_FMT, mdio_bus_id, phy_id); phy_dev = phy_connect(dev, phy_name, &fec_enet_adjust_link, 0, phy_dev = phy_connect(ndev, phy_name, &fec_enet_adjust_link, 0, PHY_INTERFACE_MODE_MII); if (IS_ERR(phy_dev)) { printk(KERN_ERR "%s: could not attach to PHY\n", dev->name); printk(KERN_ERR "%s: could not attach to PHY\n", ndev->name); return PTR_ERR(phy_dev); } Loading @@ -775,7 +775,7 @@ static int fec_enet_mii_probe(struct net_device *dev) fep->full_duplex = 0; printk(KERN_INFO "%s: Freescale FEC PHY driver [%s] " "(mii_bus:phy_addr=%s, irq=%d)\n", dev->name, "(mii_bus:phy_addr=%s, irq=%d)\n", ndev->name, fep->phy_dev->drv->name, dev_name(&fep->phy_dev->dev), fep->phy_dev->irq); Loading @@ -785,8 +785,8 @@ static int fec_enet_mii_probe(struct net_device *dev) static int fec_enet_mii_init(struct platform_device *pdev) { static struct mii_bus *fec0_mii_bus; struct net_device *dev = platform_get_drvdata(pdev); struct fec_enet_private *fep = netdev_priv(dev); struct net_device *ndev = platform_get_drvdata(pdev); struct fec_enet_private *fep = netdev_priv(ndev); const struct platform_device_id *id_entry = platform_get_device_id(fep->pdev); int err = -ENXIO, i; Loading Loading @@ -844,7 +844,7 @@ static int fec_enet_mii_init(struct platform_device *pdev) for (i = 0; i < PHY_MAX_ADDR; i++) fep->mii_bus->irq[i] = PHY_POLL; platform_set_drvdata(dev, fep->mii_bus); platform_set_drvdata(ndev, fep->mii_bus); if (mdiobus_register(fep->mii_bus)) goto err_out_free_mdio_irq; Loading Loading @@ -872,10 +872,10 @@ static void fec_enet_mii_remove(struct fec_enet_private *fep) mdiobus_free(fep->mii_bus); } static int fec_enet_get_settings(struct net_device *dev, static int fec_enet_get_settings(struct net_device *ndev, struct ethtool_cmd *cmd) { struct fec_enet_private *fep = netdev_priv(dev); struct fec_enet_private *fep = netdev_priv(ndev); struct phy_device *phydev = fep->phy_dev; if (!phydev) Loading @@ -884,10 +884,10 @@ static int fec_enet_get_settings(struct net_device *dev, return phy_ethtool_gset(phydev, cmd); } static int fec_enet_set_settings(struct net_device *dev, static int fec_enet_set_settings(struct net_device *ndev, struct ethtool_cmd *cmd) { struct fec_enet_private *fep = netdev_priv(dev); struct fec_enet_private *fep = netdev_priv(ndev); struct phy_device *phydev = fep->phy_dev; if (!phydev) Loading @@ -896,14 +896,14 @@ static int fec_enet_set_settings(struct net_device *dev, return phy_ethtool_sset(phydev, cmd); } static void fec_enet_get_drvinfo(struct net_device *dev, static void fec_enet_get_drvinfo(struct net_device *ndev, struct ethtool_drvinfo *info) { struct fec_enet_private *fep = netdev_priv(dev); struct fec_enet_private *fep = netdev_priv(ndev); strcpy(info->driver, fep->pdev->dev.driver->name); strcpy(info->version, "Revision: 1.0"); strcpy(info->bus_info, dev_name(&dev->dev)); strcpy(info->bus_info, dev_name(&ndev->dev)); } static struct ethtool_ops fec_enet_ethtool_ops = { Loading @@ -913,12 +913,12 @@ static struct ethtool_ops fec_enet_ethtool_ops = { .get_link = ethtool_op_get_link, }; static int fec_enet_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) static int fec_enet_ioctl(struct net_device *ndev, struct ifreq *rq, int cmd) { struct fec_enet_private *fep = netdev_priv(dev); struct fec_enet_private *fep = netdev_priv(ndev); struct phy_device *phydev = fep->phy_dev; if (!netif_running(dev)) if (!netif_running(ndev)) return -EINVAL; if (!phydev) Loading @@ -927,9 +927,9 @@ static int fec_enet_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) return phy_mii_ioctl(phydev, rq, cmd); } static void fec_enet_free_buffers(struct net_device *dev) static void fec_enet_free_buffers(struct net_device *ndev) { struct fec_enet_private *fep = netdev_priv(dev); struct fec_enet_private *fep = netdev_priv(ndev); int i; struct sk_buff *skb; struct bufdesc *bdp; Loading @@ -939,7 +939,7 @@ static void fec_enet_free_buffers(struct net_device *dev) skb = fep->rx_skbuff[i]; if (bdp->cbd_bufaddr) dma_unmap_single(&dev->dev, bdp->cbd_bufaddr, dma_unmap_single(&ndev->dev, bdp->cbd_bufaddr, FEC_ENET_RX_FRSIZE, DMA_FROM_DEVICE); if (skb) dev_kfree_skb(skb); Loading @@ -951,9 +951,9 @@ static void fec_enet_free_buffers(struct net_device *dev) kfree(fep->tx_bounce[i]); } static int fec_enet_alloc_buffers(struct net_device *dev) static int fec_enet_alloc_buffers(struct net_device *ndev) { struct fec_enet_private *fep = netdev_priv(dev); struct fec_enet_private *fep = netdev_priv(ndev); int i; struct sk_buff *skb; struct bufdesc *bdp; Loading @@ -962,12 +962,12 @@ static int fec_enet_alloc_buffers(struct net_device *dev) for (i = 0; i < RX_RING_SIZE; i++) { skb = dev_alloc_skb(FEC_ENET_RX_FRSIZE); if (!skb) { fec_enet_free_buffers(dev); fec_enet_free_buffers(ndev); return -ENOMEM; } fep->rx_skbuff[i] = skb; bdp->cbd_bufaddr = dma_map_single(&dev->dev, skb->data, bdp->cbd_bufaddr = dma_map_single(&ndev->dev, skb->data, FEC_ENET_RX_FRSIZE, DMA_FROM_DEVICE); bdp->cbd_sc = BD_ENET_RX_EMPTY; bdp++; Loading @@ -994,47 +994,47 @@ static int fec_enet_alloc_buffers(struct net_device *dev) } static int fec_enet_open(struct net_device *dev) fec_enet_open(struct net_device *ndev) { struct fec_enet_private *fep = netdev_priv(dev); struct fec_enet_private *fep = netdev_priv(ndev); int ret; /* I should reset the ring buffers here, but I don't yet know * a simple way to do that. */ ret = fec_enet_alloc_buffers(dev); ret = fec_enet_alloc_buffers(ndev); if (ret) return ret; /* Probe and connect to PHY when open the interface */ ret = fec_enet_mii_probe(dev); ret = fec_enet_mii_probe(ndev); if (ret) { fec_enet_free_buffers(dev); fec_enet_free_buffers(ndev); return ret; } phy_start(fep->phy_dev); netif_start_queue(dev); netif_start_queue(ndev); fep->opened = 1; return 0; } static int fec_enet_close(struct net_device *dev) fec_enet_close(struct net_device *ndev) { struct fec_enet_private *fep = netdev_priv(dev); struct fec_enet_private *fep = netdev_priv(ndev); /* Don't know what to do yet. */ fep->opened = 0; netif_stop_queue(dev); fec_stop(dev); netif_stop_queue(ndev); fec_stop(ndev); if (fep->phy_dev) { phy_stop(fep->phy_dev); phy_disconnect(fep->phy_dev); } fec_enet_free_buffers(dev); fec_enet_free_buffers(ndev); return 0; } Loading @@ -1052,14 +1052,14 @@ fec_enet_close(struct net_device *dev) #define HASH_BITS 6 /* #bits in hash */ #define CRC32_POLY 0xEDB88320 static void set_multicast_list(struct net_device *dev) static void set_multicast_list(struct net_device *ndev) { struct fec_enet_private *fep = netdev_priv(dev); struct fec_enet_private *fep = netdev_priv(ndev); struct netdev_hw_addr *ha; unsigned int i, bit, data, crc, tmp; unsigned char hash; if (dev->flags & IFF_PROMISC) { if (ndev->flags & IFF_PROMISC) { tmp = readl(fep->hwp + FEC_R_CNTRL); tmp |= 0x8; writel(tmp, fep->hwp + FEC_R_CNTRL); Loading @@ -1070,7 +1070,7 @@ static void set_multicast_list(struct net_device *dev) tmp &= ~0x8; writel(tmp, fep->hwp + FEC_R_CNTRL); if (dev->flags & IFF_ALLMULTI) { if (ndev->flags & IFF_ALLMULTI) { /* Catch all multicast addresses, so set the * filter to all 1's */ Loading @@ -1085,7 +1085,7 @@ static void set_multicast_list(struct net_device *dev) writel(0, fep->hwp + FEC_GRP_HASH_TABLE_HIGH); writel(0, fep->hwp + FEC_GRP_HASH_TABLE_LOW); netdev_for_each_mc_addr(ha, dev) { netdev_for_each_mc_addr(ha, ndev) { /* Only support group multicast for now */ if (!(ha->addr[0] & 1)) continue; Loading @@ -1093,7 +1093,7 @@ static void set_multicast_list(struct net_device *dev) /* calculate crc32 value of mac address */ crc = 0xffffffff; for (i = 0; i < dev->addr_len; i++) { for (i = 0; i < ndev->addr_len; i++) { data = ha->addr[i]; for (bit = 0; bit < 8; bit++, data >>= 1) { crc = (crc >> 1) ^ Loading @@ -1120,20 +1120,20 @@ static void set_multicast_list(struct net_device *dev) /* Set a MAC change in hardware. */ static int fec_set_mac_address(struct net_device *dev, void *p) fec_set_mac_address(struct net_device *ndev, void *p) { struct fec_enet_private *fep = netdev_priv(dev); struct fec_enet_private *fep = netdev_priv(ndev); struct sockaddr *addr = p; if (!is_valid_ether_addr(addr->sa_data)) return -EADDRNOTAVAIL; memcpy(dev->dev_addr, addr->sa_data, dev->addr_len); memcpy(ndev->dev_addr, addr->sa_data, ndev->addr_len); writel(dev->dev_addr[3] | (dev->dev_addr[2] << 8) | (dev->dev_addr[1] << 16) | (dev->dev_addr[0] << 24), writel(ndev->dev_addr[3] | (ndev->dev_addr[2] << 8) | (ndev->dev_addr[1] << 16) | (ndev->dev_addr[0] << 24), fep->hwp + FEC_ADDR_LOW); writel((dev->dev_addr[5] << 16) | (dev->dev_addr[4] << 24), writel((ndev->dev_addr[5] << 16) | (ndev->dev_addr[4] << 24), fep->hwp + FEC_ADDR_HIGH); return 0; } Loading @@ -1154,9 +1154,9 @@ static const struct net_device_ops fec_netdev_ops = { * XXX: We need to clean up on failure exits here. * */ static int fec_enet_init(struct net_device *dev) static int fec_enet_init(struct net_device *ndev) { struct fec_enet_private *fep = netdev_priv(dev); struct fec_enet_private *fep = netdev_priv(ndev); struct bufdesc *cbd_base; struct bufdesc *bdp; int i; Loading @@ -1171,19 +1171,19 @@ static int fec_enet_init(struct net_device *dev) spin_lock_init(&fep->hw_lock); fep->netdev = dev; fep->netdev = ndev; /* Get the Ethernet address */ fec_get_mac(dev); fec_get_mac(ndev); /* Set receive and transmit descriptor base. */ fep->rx_bd_base = cbd_base; fep->tx_bd_base = cbd_base + RX_RING_SIZE; /* The FEC Ethernet specific entries in the device structure */ dev->watchdog_timeo = TX_TIMEOUT; dev->netdev_ops = &fec_netdev_ops; dev->ethtool_ops = &fec_enet_ethtool_ops; ndev->watchdog_timeo = TX_TIMEOUT; ndev->netdev_ops = &fec_netdev_ops; ndev->ethtool_ops = &fec_enet_ethtool_ops; /* Initialize the receive buffer descriptors. */ bdp = fep->rx_bd_base; Loading Loading @@ -1212,7 +1212,7 @@ static int fec_enet_init(struct net_device *dev) bdp--; bdp->cbd_sc |= BD_SC_WRAP; fec_restart(dev, 0); fec_restart(ndev, 0); return 0; } Loading @@ -1222,9 +1222,9 @@ static int fec_enet_init(struct net_device *dev) * duplex. */ static void fec_restart(struct net_device *dev, int duplex) fec_restart(struct net_device *ndev, int duplex) { struct fec_enet_private *fep = netdev_priv(dev); struct fec_enet_private *fep = netdev_priv(ndev); const struct platform_device_id *id_entry = platform_get_device_id(fep->pdev); int i; Loading @@ -1239,7 +1239,7 @@ fec_restart(struct net_device *dev, int duplex) * so need to reconfigure it. */ if (id_entry->driver_data & FEC_QUIRK_ENET_MAC) { memcpy(&temp_mac, dev->dev_addr, ETH_ALEN); memcpy(&temp_mac, ndev->dev_addr, ETH_ALEN); writel(cpu_to_be32(temp_mac[0]), fep->hwp + FEC_ADDR_LOW); writel(cpu_to_be32(temp_mac[1]), fep->hwp + FEC_ADDR_HIGH); } Loading Loading @@ -1339,9 +1339,9 @@ fec_restart(struct net_device *dev, int duplex) } static void fec_stop(struct net_device *dev) fec_stop(struct net_device *ndev) { struct fec_enet_private *fep = netdev_priv(dev); struct fec_enet_private *fep = netdev_priv(ndev); /* We cannot expect a graceful transmit stop without link !!! */ if (fep->link) { Loading