Lines Matching defs:sc

272 static int sbdma_add_rcvbuffer(struct sbmac_softc *sc, struct sbmacdma *d,
276 static void sbdma_fillring(struct sbmac_softc *sc, struct sbmacdma *d);
277 static int sbdma_rx_process(struct sbmac_softc *sc, struct sbmacdma *d,
279 static void sbdma_tx_process(struct sbmac_softc *sc, struct sbmacdma *d,
286 static void sbmac_promiscuous_mode(struct sbmac_softc *sc, int onoff);
290 static void sbmac_setmulti(struct sbmac_softc *sc);
423 struct sbmac_softc *sc = (struct sbmac_softc *)bus->priv;
424 void __iomem *sbm_mdio = sc->sbm_mdio;
517 struct sbmac_softc *sc = (struct sbmac_softc *)bus->priv;
518 void __iomem *sbm_mdio = sc->sbm_mdio;
761 * sc - softc structure
771 static int sbdma_add_rcvbuffer(struct sbmac_softc *sc, struct sbmacdma *d,
774 struct net_device *dev = sc->sbm_dev;
998 * sc - softc structure
1005 static void sbdma_fillring(struct sbmac_softc *sc, struct sbmacdma *d)
1010 if (sbdma_add_rcvbuffer(sc, d, NULL) != 0)
1018 struct sbmac_softc *sc = netdev_priv(netdev);
1019 int irq = sc->sbm_dev->irq;
1021 __raw_writeq(0, sc->sbm_imr);
1028 sc->sbm_imr);
1031 (M_MAC_INT_CHANNEL << S_MAC_RX_CH0), sc->sbm_imr);
1037 * SBDMA_RX_PROCESS(sc,d,work_to_do,poll)
1042 * sc - softc structure
1052 static int sbdma_rx_process(struct sbmac_softc *sc, struct sbmacdma *d,
1055 struct net_device *dev = sc->sbm_dev;
1069 += __raw_readq(sc->sbm_rxdma.sbdma_oodpktlost) & 0xffff;
1070 __raw_writeq(0, sc->sbm_rxdma.sbdma_oodpktlost);
1126 if (unlikely(sbdma_add_rcvbuffer(sc, d, NULL) ==
1130 sbdma_add_rcvbuffer(sc, d, sb);
1148 if (sc->rx_hw_checksum == ENABLE) {
1180 sbdma_add_rcvbuffer(sc, d, sb);
1200 * SBDMA_TX_PROCESS(sc,d)
1209 * sc - softc structure
1217 static void sbdma_tx_process(struct sbmac_softc *sc, struct sbmacdma *d,
1220 struct net_device *dev = sc->sbm_dev;
1228 spin_lock_irqsave(&(sc->sbm_lock), flags);
1300 spin_unlock_irqrestore(&(sc->sbm_lock), flags);
1365 static void sbmac_uninitctx(struct sbmac_softc *sc)
1367 sbdma_uninitctx(&(sc->sbm_txdma));
1368 sbdma_uninitctx(&(sc->sbm_rxdma));
1640 static enum sbmac_state sbmac_set_channel_state(struct sbmac_softc *sc,
1643 enum sbmac_state oldstate = sc->sbm_state;
1658 sbmac_channel_start(sc);
1661 sbmac_channel_stop(sc);
1673 * SBMAC_PROMISCUOUS_MODE(sc,onoff)
1678 * sc - softc
1685 static void sbmac_promiscuous_mode(struct sbmac_softc *sc,int onoff)
1689 if (sc->sbm_state != sbmac_state_on)
1693 reg = __raw_readq(sc->sbm_rxfilter);
1695 __raw_writeq(reg, sc->sbm_rxfilter);
1698 reg = __raw_readq(sc->sbm_rxfilter);
1700 __raw_writeq(reg, sc->sbm_rxfilter);
1705 * SBMAC_SETIPHDR_OFFSET(sc,onoff)
1710 * sc - softc
1716 static void sbmac_set_iphdr_offset(struct sbmac_softc *sc)
1721 reg = __raw_readq(sc->sbm_rxfilter);
1723 __raw_writeq(reg, sc->sbm_rxfilter);
1728 sc->rx_hw_checksum = DISABLE;
1730 sc->rx_hw_checksum = ENABLE;
1968 struct sbmac_softc *sc = netdev_priv(dev);
1977 isr = __raw_readq(sc->sbm_isr) & ~M_MAC_COUNTER_ADDR;
1988 sbdma_tx_process(sc,&(sc->sbm_txdma), 0);
1991 if (napi_schedule_prep(&sc->napi)) {
1992 __raw_writeq(0, sc->sbm_imr);
1993 __napi_schedule(&sc->napi);
1998 sbdma_rx_process(sc,&(sc->sbm_rxdma),
2020 struct sbmac_softc *sc = netdev_priv(dev);
2024 spin_lock_irqsave(&sc->sbm_lock, flags);
2031 if (sbdma_add_txbuffer(&(sc->sbm_txdma),skb)) {
2034 spin_unlock_irqrestore(&sc->sbm_lock, flags);
2039 spin_unlock_irqrestore(&sc->sbm_lock, flags);
2045 * SBMAC_SETMULTI(sc)
2052 * sc - softc
2058 static void sbmac_setmulti(struct sbmac_softc *sc)
2064 struct net_device *dev = sc->sbm_dev;
2073 port = sc->sbm_base + R_MAC_ADDR_BASE+(idx*sizeof(uint64_t));
2078 port = sc->sbm_base + R_MAC_HASH_BASE+(idx*sizeof(uint64_t));
2086 reg = __raw_readq(sc->sbm_rxfilter);
2088 __raw_writeq(reg, sc->sbm_rxfilter);
2095 reg = __raw_readq(sc->sbm_rxfilter);
2097 __raw_writeq(reg, sc->sbm_rxfilter);
2116 port = sc->sbm_base + R_MAC_ADDR_BASE+(idx * sizeof(uint64_t));
2127 reg = __raw_readq(sc->sbm_rxfilter);
2129 __raw_writeq(reg, sc->sbm_rxfilter);
2163 struct sbmac_softc *sc = netdev_priv(dev);
2169 sc->sbm_dev = dev;
2170 sc->sbe_idx = idx;
2172 eaddr = sc->sbm_hwaddr;
2179 ea_reg = __raw_readq(sc->sbm_base + R_MAC_ETHERNET_ADDR);
2180 __raw_writeq(0, sc->sbm_base + R_MAC_ETHERNET_ADDR);
2193 sbmac_initctx(sc);
2199 spin_lock_init(&(sc->sbm_lock));
2206 netif_napi_add_weight(dev, &sc->napi, sbmac_poll, 16);
2211 sbmac_set_iphdr_offset(sc);
2213 sc->mii_bus = mdiobus_alloc();
2214 if (sc->mii_bus == NULL) {
2219 sc->mii_bus->name = sbmac_mdio_string;
2220 snprintf(sc->mii_bus->id, MII_BUS_ID_SIZE, "%s-%x",
2222 sc->mii_bus->priv = sc;
2223 sc->mii_bus->read = sbmac_mii_read;
2224 sc->mii_bus->write = sbmac_mii_write;
2226 sc->mii_bus->parent = &pldev->dev;
2230 err = mdiobus_register(sc->mii_bus);
2236 platform_set_drvdata(pldev, sc->mii_bus);
2247 if (sc->rx_hw_checksum == ENABLE)
2260 mdiobus_unregister(sc->mii_bus);
2262 mdiobus_free(sc->mii_bus);
2264 sbmac_uninitctx(sc);
2271 struct sbmac_softc *sc = netdev_priv(dev);
2283 __raw_readq(sc->sbm_isr);
2291 sc->sbm_speed = sbmac_speed_none;
2292 sc->sbm_duplex = sbmac_duplex_none;
2293 sc->sbm_fc = sbmac_fc_none;
2294 sc->sbm_pause = -1;
2295 sc->sbm_link = 0;
2308 sbmac_set_channel_state(sc,sbmac_state_on);
2314 phy_start(sc->phy_dev);
2316 napi_enable(&sc->napi);
2328 struct sbmac_softc *sc = netdev_priv(dev);
2331 phy_dev = phy_find_first(sc->mii_bus);
2350 sc->phy_dev = phy_dev;
2358 struct sbmac_softc *sc = netdev_priv(dev);
2359 struct phy_device *phy_dev = sc->phy_dev;
2364 link_chg = (sc->sbm_link != phy_dev->link);
2365 speed_chg = (sc->sbm_speed != phy_dev->speed);
2366 duplex_chg = (sc->sbm_duplex != phy_dev->duplex);
2367 pause_chg = (sc->sbm_pause != phy_dev->pause);
2374 sc->sbm_link = phy_dev->link;
2375 sc->sbm_speed = sbmac_speed_none;
2376 sc->sbm_duplex = sbmac_duplex_none;
2377 sc->sbm_fc = sbmac_fc_disabled;
2378 sc->sbm_pause = -1;
2391 fc_chg = (sc->sbm_fc != fc);
2396 spin_lock_irqsave(&sc->sbm_lock, flags);
2398 sc->sbm_speed = phy_dev->speed;
2399 sc->sbm_duplex = phy_dev->duplex;
2400 sc->sbm_fc = fc;
2401 sc->sbm_pause = phy_dev->pause;
2402 sc->sbm_link = phy_dev->link;
2405 sc->sbm_state != sbmac_state_off) {
2412 sbmac_channel_stop(sc);
2413 sbmac_channel_start(sc);
2416 spin_unlock_irqrestore(&sc->sbm_lock, flags);
2422 struct sbmac_softc *sc = netdev_priv(dev);
2425 spin_lock_irqsave(&sc->sbm_lock, flags);
2431 spin_unlock_irqrestore(&sc->sbm_lock, flags);
2442 struct sbmac_softc *sc = netdev_priv(dev);
2444 spin_lock_irqsave(&sc->sbm_lock, flags);
2445 if ((dev->flags ^ sc->sbm_devflags) & IFF_PROMISC) {
2451 sbmac_promiscuous_mode(sc,1);
2454 sbmac_promiscuous_mode(sc,0);
2457 spin_unlock_irqrestore(&sc->sbm_lock, flags);
2463 sbmac_setmulti(sc);
2469 struct sbmac_softc *sc = netdev_priv(dev);
2471 if (!netif_running(dev) || !sc->phy_dev)
2474 return phy_mii_ioctl(sc->phy_dev, rq, cmd);
2479 struct sbmac_softc *sc = netdev_priv(dev);
2481 napi_disable(&sc->napi);
2483 phy_stop(sc->phy_dev);
2485 sbmac_set_channel_state(sc, sbmac_state_off);
2492 phy_disconnect(sc->phy_dev);
2493 sc->phy_dev = NULL;
2496 sbdma_emptyring(&(sc->sbm_txdma));
2497 sbdma_emptyring(&(sc->sbm_rxdma));
2504 struct sbmac_softc *sc = container_of(napi, struct sbmac_softc, napi);
2507 work_done = sbdma_rx_process(sc, &(sc->sbm_rxdma), budget, 1);
2508 sbdma_tx_process(sc, &(sc->sbm_txdma), 1);
2516 sc->sbm_imr);
2519 (M_MAC_INT_CHANNEL << S_MAC_RX_CH0), sc->sbm_imr);
2530 struct sbmac_softc *sc;
2576 sc = netdev_priv(dev);
2577 sc->sbm_base = sbm_base;
2599 struct sbmac_softc *sc = netdev_priv(dev);
2602 sbmac_uninitctx(sc);
2603 mdiobus_unregister(sc->mii_bus);
2604 mdiobus_free(sc->mii_bus);
2605 iounmap(sc->sbm_base);