• Home
  • Raw
  • Download

Lines Matching refs:sc

305 static int sbdma_add_rcvbuffer(struct sbmac_softc *sc, struct sbmacdma *d,
309 static void sbdma_fillring(struct sbmac_softc *sc, struct sbmacdma *d);
310 static int sbdma_rx_process(struct sbmac_softc *sc, struct sbmacdma *d,
312 static void sbdma_tx_process(struct sbmac_softc *sc, struct sbmacdma *d,
319 static void sbmac_promiscuous_mode(struct sbmac_softc *sc, int onoff);
323 static void sbmac_setmulti(struct sbmac_softc *sc);
457 struct sbmac_softc *sc = (struct sbmac_softc *)bus->priv; in sbmac_mii_read() local
458 void __iomem *sbm_mdio = sc->sbm_mdio; in sbmac_mii_read()
551 struct sbmac_softc *sc = (struct sbmac_softc *)bus->priv; in sbmac_mii_write() local
552 void __iomem *sbm_mdio = sc->sbm_mdio; in sbmac_mii_write()
805 static int sbdma_add_rcvbuffer(struct sbmac_softc *sc, struct sbmacdma *d, in sbdma_add_rcvbuffer() argument
808 struct net_device *dev = sc->sbm_dev; in sbdma_add_rcvbuffer()
1042 static void sbdma_fillring(struct sbmac_softc *sc, struct sbmacdma *d) in sbdma_fillring() argument
1047 if (sbdma_add_rcvbuffer(sc, d, NULL) != 0) in sbdma_fillring()
1055 struct sbmac_softc *sc = netdev_priv(netdev); in sbmac_netpoll() local
1056 int irq = sc->sbm_dev->irq; in sbmac_netpoll()
1058 __raw_writeq(0, sc->sbm_imr); in sbmac_netpoll()
1065 sc->sbm_imr); in sbmac_netpoll()
1068 (M_MAC_INT_CHANNEL << S_MAC_RX_CH0), sc->sbm_imr); in sbmac_netpoll()
1089 static int sbdma_rx_process(struct sbmac_softc *sc, struct sbmacdma *d, in sbdma_rx_process() argument
1092 struct net_device *dev = sc->sbm_dev; in sbdma_rx_process()
1106 += __raw_readq(sc->sbm_rxdma.sbdma_oodpktlost) & 0xffff; in sbdma_rx_process()
1107 __raw_writeq(0, sc->sbm_rxdma.sbdma_oodpktlost); in sbdma_rx_process()
1163 if (unlikely(sbdma_add_rcvbuffer(sc, d, NULL) == in sbdma_rx_process()
1167 sbdma_add_rcvbuffer(sc, d, sb); in sbdma_rx_process()
1185 if (sc->rx_hw_checksum == ENABLE) { in sbdma_rx_process()
1217 sbdma_add_rcvbuffer(sc, d, sb); in sbdma_rx_process()
1254 static void sbdma_tx_process(struct sbmac_softc *sc, struct sbmacdma *d, in sbdma_tx_process() argument
1257 struct net_device *dev = sc->sbm_dev; in sbdma_tx_process()
1265 spin_lock_irqsave(&(sc->sbm_lock), flags); in sbdma_tx_process()
1337 spin_unlock_irqrestore(&(sc->sbm_lock), flags); in sbdma_tx_process()
1406 static void sbmac_uninitctx(struct sbmac_softc *sc) in sbmac_uninitctx() argument
1408 sbdma_uninitctx(&(sc->sbm_txdma)); in sbmac_uninitctx()
1409 sbdma_uninitctx(&(sc->sbm_rxdma)); in sbmac_uninitctx()
1691 static enum sbmac_state sbmac_set_channel_state(struct sbmac_softc *sc, in sbmac_set_channel_state() argument
1694 enum sbmac_state oldstate = sc->sbm_state; in sbmac_set_channel_state()
1709 sbmac_channel_start(sc); in sbmac_set_channel_state()
1712 sbmac_channel_stop(sc); in sbmac_set_channel_state()
1736 static void sbmac_promiscuous_mode(struct sbmac_softc *sc,int onoff) in sbmac_promiscuous_mode() argument
1740 if (sc->sbm_state != sbmac_state_on) in sbmac_promiscuous_mode()
1744 reg = __raw_readq(sc->sbm_rxfilter); in sbmac_promiscuous_mode()
1746 __raw_writeq(reg, sc->sbm_rxfilter); in sbmac_promiscuous_mode()
1749 reg = __raw_readq(sc->sbm_rxfilter); in sbmac_promiscuous_mode()
1751 __raw_writeq(reg, sc->sbm_rxfilter); in sbmac_promiscuous_mode()
1767 static void sbmac_set_iphdr_offset(struct sbmac_softc *sc) in sbmac_set_iphdr_offset() argument
1772 reg = __raw_readq(sc->sbm_rxfilter); in sbmac_set_iphdr_offset()
1774 __raw_writeq(reg, sc->sbm_rxfilter); in sbmac_set_iphdr_offset()
1779 sc->rx_hw_checksum = DISABLE; in sbmac_set_iphdr_offset()
1781 sc->rx_hw_checksum = ENABLE; in sbmac_set_iphdr_offset()
2019 struct sbmac_softc *sc = netdev_priv(dev); in sbmac_intr() local
2028 isr = __raw_readq(sc->sbm_isr) & ~M_MAC_COUNTER_ADDR; in sbmac_intr()
2039 sbdma_tx_process(sc,&(sc->sbm_txdma), 0); in sbmac_intr()
2042 if (netif_rx_schedule_prep(&sc->napi)) { in sbmac_intr()
2043 __raw_writeq(0, sc->sbm_imr); in sbmac_intr()
2044 __netif_rx_schedule(&sc->napi); in sbmac_intr()
2049 sbdma_rx_process(sc,&(sc->sbm_rxdma), in sbmac_intr()
2071 struct sbmac_softc *sc = netdev_priv(dev); in sbmac_start_tx() local
2075 spin_lock_irqsave(&sc->sbm_lock, flags); in sbmac_start_tx()
2082 if (sbdma_add_txbuffer(&(sc->sbm_txdma),skb)) { in sbmac_start_tx()
2085 spin_unlock_irqrestore(&sc->sbm_lock, flags); in sbmac_start_tx()
2092 spin_unlock_irqrestore(&sc->sbm_lock, flags); in sbmac_start_tx()
2111 static void sbmac_setmulti(struct sbmac_softc *sc) in sbmac_setmulti() argument
2117 struct net_device *dev = sc->sbm_dev; in sbmac_setmulti()
2126 port = sc->sbm_base + R_MAC_ADDR_BASE+(idx*sizeof(uint64_t)); in sbmac_setmulti()
2131 port = sc->sbm_base + R_MAC_HASH_BASE+(idx*sizeof(uint64_t)); in sbmac_setmulti()
2139 reg = __raw_readq(sc->sbm_rxfilter); in sbmac_setmulti()
2141 __raw_writeq(reg, sc->sbm_rxfilter); in sbmac_setmulti()
2148 reg = __raw_readq(sc->sbm_rxfilter); in sbmac_setmulti()
2150 __raw_writeq(reg, sc->sbm_rxfilter); in sbmac_setmulti()
2168 port = sc->sbm_base + R_MAC_ADDR_BASE+(idx * sizeof(uint64_t)); in sbmac_setmulti()
2180 reg = __raw_readq(sc->sbm_rxfilter); in sbmac_setmulti()
2182 __raw_writeq(reg, sc->sbm_rxfilter); in sbmac_setmulti()
2290 struct sbmac_softc *sc = netdev_priv(dev); in sbmac_init() local
2296 sc->sbm_dev = dev; in sbmac_init()
2297 sc->sbe_idx = idx; in sbmac_init()
2299 eaddr = sc->sbm_hwaddr; in sbmac_init()
2306 ea_reg = __raw_readq(sc->sbm_base + R_MAC_ETHERNET_ADDR); in sbmac_init()
2307 __raw_writeq(0, sc->sbm_base + R_MAC_ETHERNET_ADDR); in sbmac_init()
2322 sbmac_initctx(sc); in sbmac_init()
2328 spin_lock_init(&(sc->sbm_lock)); in sbmac_init()
2338 netif_napi_add(dev, &sc->napi, sbmac_poll, 16); in sbmac_init()
2348 sbmac_set_iphdr_offset(sc); in sbmac_init()
2350 sc->mii_bus = mdiobus_alloc(); in sbmac_init()
2351 if (sc->mii_bus == NULL) { in sbmac_init()
2352 sbmac_uninitctx(sc); in sbmac_init()
2360 mdiobus_free(sc->mii_bus); in sbmac_init()
2361 sbmac_uninitctx(sc); in sbmac_init()
2367 if (sc->rx_hw_checksum == ENABLE) in sbmac_init()
2378 sc->mii_bus->name = sbmac_mdio_string; in sbmac_init()
2379 snprintf(sc->mii_bus->id, MII_BUS_ID_SIZE, "%x", idx); in sbmac_init()
2380 sc->mii_bus->priv = sc; in sbmac_init()
2381 sc->mii_bus->read = sbmac_mii_read; in sbmac_init()
2382 sc->mii_bus->write = sbmac_mii_write; in sbmac_init()
2383 sc->mii_bus->irq = sc->phy_irq; in sbmac_init()
2385 sc->mii_bus->irq[i] = SBMAC_PHY_INT; in sbmac_init()
2387 sc->mii_bus->parent = &pldev->dev; in sbmac_init()
2388 dev_set_drvdata(&pldev->dev, sc->mii_bus); in sbmac_init()
2396 struct sbmac_softc *sc = netdev_priv(dev); in sbmac_open() local
2408 __raw_readq(sc->sbm_isr); in sbmac_open()
2419 err = mdiobus_register(sc->mii_bus); in sbmac_open()
2426 sc->sbm_speed = sbmac_speed_none; in sbmac_open()
2427 sc->sbm_duplex = sbmac_duplex_none; in sbmac_open()
2428 sc->sbm_fc = sbmac_fc_none; in sbmac_open()
2429 sc->sbm_pause = -1; in sbmac_open()
2430 sc->sbm_link = 0; in sbmac_open()
2443 sbmac_set_channel_state(sc,sbmac_state_on); in sbmac_open()
2449 phy_start(sc->phy_dev); in sbmac_open()
2451 napi_enable(&sc->napi); in sbmac_open()
2456 mdiobus_unregister(sc->mii_bus); in sbmac_open()
2467 struct sbmac_softc *sc = netdev_priv(dev); in sbmac_mii_probe() local
2472 phy_dev = sc->mii_bus->phy_map[i]; in sbmac_mii_probe()
2505 sc->phy_dev = phy_dev; in sbmac_mii_probe()
2513 struct sbmac_softc *sc = netdev_priv(dev); in sbmac_mii_poll() local
2514 struct phy_device *phy_dev = sc->phy_dev; in sbmac_mii_poll()
2519 link_chg = (sc->sbm_link != phy_dev->link); in sbmac_mii_poll()
2520 speed_chg = (sc->sbm_speed != phy_dev->speed); in sbmac_mii_poll()
2521 duplex_chg = (sc->sbm_duplex != phy_dev->duplex); in sbmac_mii_poll()
2522 pause_chg = (sc->sbm_pause != phy_dev->pause); in sbmac_mii_poll()
2529 sc->sbm_link = phy_dev->link; in sbmac_mii_poll()
2530 sc->sbm_speed = sbmac_speed_none; in sbmac_mii_poll()
2531 sc->sbm_duplex = sbmac_duplex_none; in sbmac_mii_poll()
2532 sc->sbm_fc = sbmac_fc_disabled; in sbmac_mii_poll()
2533 sc->sbm_pause = -1; in sbmac_mii_poll()
2546 fc_chg = (sc->sbm_fc != fc); in sbmac_mii_poll()
2551 spin_lock_irqsave(&sc->sbm_lock, flags); in sbmac_mii_poll()
2553 sc->sbm_speed = phy_dev->speed; in sbmac_mii_poll()
2554 sc->sbm_duplex = phy_dev->duplex; in sbmac_mii_poll()
2555 sc->sbm_fc = fc; in sbmac_mii_poll()
2556 sc->sbm_pause = phy_dev->pause; in sbmac_mii_poll()
2557 sc->sbm_link = phy_dev->link; in sbmac_mii_poll()
2560 sc->sbm_state != sbmac_state_off) { in sbmac_mii_poll()
2567 sbmac_channel_stop(sc); in sbmac_mii_poll()
2568 sbmac_channel_start(sc); in sbmac_mii_poll()
2571 spin_unlock_irqrestore(&sc->sbm_lock, flags); in sbmac_mii_poll()
2577 struct sbmac_softc *sc = netdev_priv(dev); in sbmac_tx_timeout() local
2580 spin_lock_irqsave(&sc->sbm_lock, flags); in sbmac_tx_timeout()
2586 spin_unlock_irqrestore(&sc->sbm_lock, flags); in sbmac_tx_timeout()
2597 struct sbmac_softc *sc = netdev_priv(dev); in sbmac_set_rx_mode() local
2599 spin_lock_irqsave(&sc->sbm_lock, flags); in sbmac_set_rx_mode()
2600 if ((dev->flags ^ sc->sbm_devflags) & IFF_PROMISC) { in sbmac_set_rx_mode()
2606 sbmac_promiscuous_mode(sc,1); in sbmac_set_rx_mode()
2609 sbmac_promiscuous_mode(sc,0); in sbmac_set_rx_mode()
2612 spin_unlock_irqrestore(&sc->sbm_lock, flags); in sbmac_set_rx_mode()
2618 sbmac_setmulti(sc); in sbmac_set_rx_mode()
2624 struct sbmac_softc *sc = netdev_priv(dev); in sbmac_mii_ioctl() local
2626 if (!netif_running(dev) || !sc->phy_dev) in sbmac_mii_ioctl()
2629 return phy_mii_ioctl(sc->phy_dev, if_mii(rq), cmd); in sbmac_mii_ioctl()
2634 struct sbmac_softc *sc = netdev_priv(dev); in sbmac_close() local
2636 napi_disable(&sc->napi); in sbmac_close()
2638 phy_stop(sc->phy_dev); in sbmac_close()
2640 sbmac_set_channel_state(sc, sbmac_state_off); in sbmac_close()
2647 phy_disconnect(sc->phy_dev); in sbmac_close()
2648 sc->phy_dev = NULL; in sbmac_close()
2650 mdiobus_unregister(sc->mii_bus); in sbmac_close()
2654 sbdma_emptyring(&(sc->sbm_txdma)); in sbmac_close()
2655 sbdma_emptyring(&(sc->sbm_rxdma)); in sbmac_close()
2662 struct sbmac_softc *sc = container_of(napi, struct sbmac_softc, napi); in sbmac_poll() local
2663 struct net_device *dev = sc->sbm_dev; in sbmac_poll()
2666 work_done = sbdma_rx_process(sc, &(sc->sbm_rxdma), budget, 1); in sbmac_poll()
2667 sbdma_tx_process(sc, &(sc->sbm_txdma), 1); in sbmac_poll()
2675 sc->sbm_imr); in sbmac_poll()
2678 (M_MAC_INT_CHANNEL << S_MAC_RX_CH0), sc->sbm_imr); in sbmac_poll()
2689 struct sbmac_softc *sc; in sbmac_probe() local
2732 sc = netdev_priv(dev); in sbmac_probe()
2733 sc->sbm_base = sbm_base; in sbmac_probe()
2755 struct sbmac_softc *sc = netdev_priv(dev); in sbmac_remove() local
2758 sbmac_uninitctx(sc); in sbmac_remove()
2759 mdiobus_free(sc->mii_bus); in sbmac_remove()
2760 iounmap(sc->sbm_base); in sbmac_remove()