Home | History | Annotate | Download | only in pci

Lines Matching refs:sc_if

283 	struct sk_if_softc *sc_if = device_private(dev);
287 SK_YU_WRITE_2(sc_if, YUKON_SMICR, YU_SMICR_PHYAD(phy) |
292 data = SK_YU_READ_2(sc_if, YUKON_SMICR);
298 device_printf(sc_if->sk_dev, "phy failed to come ready\n");
304 *val = SK_YU_READ_2(sc_if, YUKON_SMIDR);
315 struct sk_if_softc *sc_if = device_private(dev);
321 SK_YU_WRITE_2(sc_if, YUKON_SMIDR, val);
322 SK_YU_WRITE_2(sc_if, YUKON_SMICR, YU_SMICR_PHYAD(phy) |
327 if (!(SK_YU_READ_2(sc_if, YUKON_SMICR) & YU_SMICR_BUSY))
332 device_printf(sc_if->sk_dev, "phy write timed out\n");
342 struct sk_if_softc *sc_if = ifp->if_softc;
343 struct mii_data *mii = &sc_if->sk_mii;
347 gpcr = SK_YU_READ_2(sc_if, YUKON_GPCR);
351 sc_if->sk_softc->sk_type == SK_YUKON_FE_P) {
376 SK_YU_WRITE_2(sc_if, YUKON_GPCR, gpcr);
379 SK_YU_READ_2(sc_if, YUKON_GPCR)));
383 msk_setmulti(struct sk_if_softc *sc_if)
385 struct ifnet *ifp= &sc_if->sk_ethercom.ec_if;
388 struct ethercom *ec = &sc_if->sk_ethercom;
394 SK_YU_WRITE_2(sc_if, YUKON_MCAH1, 0);
395 SK_YU_WRITE_2(sc_if, YUKON_MCAH2, 0);
396 SK_YU_WRITE_2(sc_if, YUKON_MCAH3, 0);
397 SK_YU_WRITE_2(sc_if, YUKON_MCAH4, 0);
401 reg = SK_YU_READ_2(sc_if, YUKON_RCR);
435 SK_YU_WRITE_2(sc_if, YUKON_MCAH1, hashes[0] & 0xffff);
436 SK_YU_WRITE_2(sc_if, YUKON_MCAH2, (hashes[0] >> 16) & 0xffff);
437 SK_YU_WRITE_2(sc_if, YUKON_MCAH3, hashes[1] & 0xffff);
438 SK_YU_WRITE_2(sc_if, YUKON_MCAH4, (hashes[1] >> 16) & 0xffff);
439 SK_YU_WRITE_2(sc_if, YUKON_RCR, reg);
443 msk_setpromisc(struct sk_if_softc *sc_if)
445 struct ifnet *ifp = &sc_if->sk_ethercom.ec_if;
448 SK_YU_CLRBIT_2(sc_if, YUKON_RCR,
451 SK_YU_SETBIT_2(sc_if, YUKON_RCR,
456 msk_init_rx_ring(struct sk_if_softc *sc_if)
458 struct msk_chain_data *cd = &sc_if->sk_cdata;
459 struct msk_ring_data *rd = sc_if->sk_rdata;
464 sc_if->sk_cdata.sk_rx_prod = 0;
465 sc_if->sk_cdata.sk_rx_cons = 0;
466 sc_if->sk_cdata.sk_rx_cnt = 0;
467 sc_if->sk_cdata.sk_rx_hiaddr = 0;
470 sc_if->sk_cdata.sk_rx_hiaddr = 0;
476 MSK_CDRXSYNC(sc_if, cd->sk_rx_prod,
478 SK_INC(sc_if->sk_cdata.sk_rx_prod, MSK_RX_RING_CNT);
479 sc_if->sk_cdata.sk_rx_cnt++;
481 msk_fill_rx_ring(sc_if);
486 msk_init_tx_ring(struct sk_if_softc *sc_if)
488 struct msk_chain_data *cd = &sc_if->sk_cdata;
489 struct msk_ring_data *rd = sc_if->sk_rdata;
494 sc_if->sk_cdata.sk_tx_prod = 0;
495 sc_if->sk_cdata.sk_tx_cons = 0;
496 sc_if->sk_cdata.sk_tx_cnt = 0;
497 sc_if->sk_cdata.sk_tx_hiaddr = 0;
500 sc_if->sk_cdata.sk_tx_hiaddr = 0;
506 MSK_CDTXSYNC(sc_if, 0, MSK_TX_RING_CNT,
508 SK_INC(sc_if->sk_cdata.sk_tx_prod, MSK_TX_RING_CNT);
509 sc_if->sk_cdata.sk_tx_cnt++;
515 msk_newbuf(struct sk_if_softc *sc_if)
517 struct sk_softc *sc = sc_if->sk_softc;
534 buf = msk_jalloc(sc_if);
538 "dropped!\n", sc_if->sk_ethercom.ec_if.if_xname));
544 MEXTADD(m_new, buf, SK_JLEN, 0, msk_jfree, sc_if);
548 rxidx = frag = cur = sc_if->sk_cdata.sk_rx_prod;
549 rxmap = sc_if->sk_cdata.sk_rx_chain[rxidx].sk_dmamap;
558 hiaddr = sc_if->sk_cdata.sk_rx_hiaddr;
567 if (total > MSK_RX_RING_CNT - sc_if->sk_cdata.sk_rx_cnt - 1) {
587 if (sc_if->sk_cdata.sk_rx_hiaddr != hiaddr) {
588 c = &sc_if->sk_cdata.sk_rx_chain[frag];
590 r = &sc_if->sk_rdata->sk_rx_ring[frag];
596 sc_if->sk_cdata.sk_rx_hiaddr = hiaddr;
597 MSK_CDRXSYNC(sc_if, frag,
602 sc_if->sk_ethercom.ec_if.if_xname, hiaddr));
605 c = &sc_if->sk_cdata.sk_rx_chain[frag];
606 r = &sc_if->sk_rdata->sk_rx_ring[frag];
615 MSK_CDRXSYNC(sc_if, frag,
623 sc_if->sk_cdata.sk_rx_chain[rxidx].sk_dmamap =
624 sc_if->sk_cdata.sk_rx_chain[cur].sk_dmamap;
625 sc_if->sk_cdata.sk_rx_chain[cur].sk_mbuf = m_new;
626 sc_if->sk_cdata.sk_rx_chain[cur].sk_dmamap = rxmap;
628 sc_if->sk_rdata->sk_rx_ring[rxidx].sk_opcode |= SK_Y2_RXOPC_OWN;
629 MSK_CDRXSYNC(sc_if, rxidx,
632 sc_if->sk_cdata.sk_rx_cnt += entries;
633 sc_if->sk_cdata.sk_rx_prod = frag;
643 msk_alloc_jumbo_mem(struct sk_if_softc *sc_if)
645 struct sk_softc *sc = sc_if->sk_softc;
654 &sc_if->sk_cdata.sk_jumbo_seg, 1, &sc_if->sk_cdata.sk_jumbo_nseg,
661 if (bus_dmamem_map(sc->sc_dmatag, &sc_if->sk_cdata.sk_jumbo_seg,
662 sc_if->sk_cdata.sk_jumbo_nseg, MSK_JMEM, (void **)&kva,
671 BUS_DMA_NOWAIT, &sc_if->sk_cdata.sk_rx_jumbo_map)) {
678 if (bus_dmamap_load(sc->sc_dmatag, sc_if->sk_cdata.sk_rx_jumbo_map,
686 sc_if->sk_cdata.sk_jumbo_buf = (void *)kva;
688 (void *)sc_if->sk_cdata.sk_jumbo_buf));
690 LIST_INIT(&sc_if->sk_jfree_listhead);
691 LIST_INIT(&sc_if->sk_jinuse_listhead);
692 mutex_init(&sc_if->sk_jpool_mtx, MUTEX_DEFAULT, IPL_NET);
698 ptr = sc_if->sk_cdata.sk_jumbo_buf;
700 sc_if->sk_cdata.sk_jslots[i] = ptr;
705 LIST_INSERT_HEAD(&sc_if->sk_jfree_listhead,
713 sc_if->sk_cdata.sk_rx_jumbo_map);
717 sc_if->sk_cdata.sk_rx_jumbo_map);
724 &sc_if->sk_cdata.sk_jumbo_seg,
725 sc_if->sk_cdata.sk_jumbo_nseg);
736 msk_free_jumbo_mem(struct sk_if_softc *sc_if)
738 struct sk_softc *sc = sc_if->sk_softc;
740 bus_dmamap_unload(sc->sc_dmatag, sc_if->sk_cdata.sk_rx_jumbo_map);
741 bus_dmamap_destroy(sc->sc_dmatag, sc_if->sk_cdata.sk_rx_jumbo_map);
742 bus_dmamem_unmap(sc->sc_dmatag, sc_if->sk_cdata.sk_jumbo_buf, MSK_JMEM);
743 bus_dmamem_free(sc->sc_dmatag, &sc_if->sk_cdata.sk_jumbo_seg,
744 sc_if->sk_cdata.sk_jumbo_nseg);
751 msk_jalloc(struct sk_if_softc *sc_if)
755 mutex_enter(&sc_if->sk_jpool_mtx);
756 entry = LIST_FIRST(&sc_if->sk_jfree_listhead);
759 mutex_exit(&sc_if->sk_jpool_mtx);
764 LIST_INSERT_HEAD(&sc_if->sk_jinuse_listhead, entry, jpool_entries);
765 mutex_exit(&sc_if->sk_jpool_mtx);
766 return sc_if->sk_cdata.sk_jslots[entry->slot];
1151 msk_reset(struct sk_if_softc *sc_if)
1154 SK_IF_WRITE_4(sc_if, 0, SK_GMAC_CTRL, SK_GMAC_RESET_SET);
1155 SK_IF_WRITE_1(sc_if, 0, SK_GPHY_CTRL, SK_GPHY_RESET_SET);
1157 SK_IF_WRITE_1(sc_if, 0, SK_GPHY_CTRL, SK_GPHY_RESET_CLEAR);
1158 SK_IF_WRITE_4(sc_if, 0, SK_GMAC_CTRL, SK_GMAC_LOOP_OFF |
1165 struct sk_if_softc *sc_if = device_private(dv);
1167 msk_init_yukon(sc_if);
1178 struct sk_if_softc *sc_if = device_private(self);
1183 struct mii_data * const mii = &sc_if->sk_mii;
1189 sc_if->sk_dev = self;
1190 sc_if->sk_port = sa->skc_port;
1191 sc_if->sk_softc = sc;
1192 sc->sk_if[sa->skc_port] = sc_if;
1194 DPRINTFN(2, ("begin msk_attach: port=%d\n", sc_if->sk_port));
1206 sc_if->sk_enaddr[i] =
1210 ether_sprintf(sc_if->sk_enaddr));
1221 sc_if->sk_rx_ramstart = 0;
1222 sc_if->sk_rx_ramend = sc_if->sk_rx_ramstart + chunk - 1;
1224 sc_if->sk_tx_ramstart = sc_if->sk_rx_ramend + 1;
1225 sc_if->sk_tx_ramend = sc_if->sk_tx_ramstart + chunk - 1;
1229 sc_if->sk_rx_ramstart, sc_if->sk_rx_ramend,
1230 sc_if->sk_tx_ramstart, sc_if->sk_tx_ramend));
1235 PAGE_SIZE, 0, &sc_if->sk_ring_seg, 1, &sc_if->sk_ring_nseg,
1240 if (bus_dmamem_map(sc->sc_dmatag, &sc_if->sk_ring_seg,
1241 sc_if->sk_ring_nseg,
1250 &sc_if->sk_ring_map)) {
1254 if (bus_dmamap_load(sc->sc_dmatag, sc_if->sk_ring_map, kva,
1261 sc_if->sk_cdata.sk_tx_chain[i].sk_mbuf = NULL;
1265 aprint_error_dev(sc_if->sk_dev,
1270 sc_if->sk_cdata.sk_tx_chain[i].sk_dmamap = dmamap;
1274 sc_if->sk_cdata.sk_rx_chain[i].sk_mbuf = NULL;
1279 aprint_error_dev(sc_if->sk_dev,
1284 sc_if->sk_cdata.sk_rx_chain[i].sk_dmamap = dmamap;
1287 sc_if->sk_rdata = (struct msk_ring_data *)kva;
1288 memset(sc_if->sk_rdata, 0, sizeof(struct msk_ring_data));
1292 sc_if->sk_pktlen = SK_JLEN;
1294 sc_if->sk_pktlen = MCLBYTES;
1297 if (msk_alloc_jumbo_mem(sc_if)) {
1302 sc_if->sk_ethercom.ec_capabilities = ETHERCAP_VLAN_MTU;
1305 sc_if->sk_ethercom.ec_capabilities |= ETHERCAP_JUMBO_MTU;
1307 ifp = &sc_if->sk_ethercom.ec_if;
1308 ifp->if_softc = sc_if;
1318 strlcpy(ifp->if_xname, device_xname(sc_if->sk_dev), IFNAMSIZ);
1320 msk_reset(sc_if);
1332 sc_if->sk_ethercom.ec_mii = mii;
1339 aprint_error_dev(sc_if->sk_dev, "no PHY found!\n");
1346 callout_init(&sc_if->sk_tick_ch, 0);
1347 callout_setfunc(&sc_if->sk_tick_ch, msk_tick, sc_if);
1348 callout_schedule(&sc_if->sk_tick_ch, hz);
1350 callout_init(&sc_if->sk_tick_rx, 0);
1351 callout_setfunc(&sc_if->sk_tick_rx, msk_fill_rx_tick, sc_if);
1358 ether_ifattach(ifp, sc_if->sk_enaddr);
1374 bus_dmamap_destroy(sc->sc_dmatag, sc_if->sk_ring_map);
1378 bus_dmamem_free(sc->sc_dmatag, &sc_if->sk_ring_seg, sc_if->sk_ring_nseg);
1386 struct sk_if_softc *sc_if = device_private(self);
1387 struct sk_softc *sc = sc_if->sk_softc;
1388 struct ifnet *ifp = &sc_if->sk_ethercom.ec_if;
1391 if (sc->sk_if[sc_if->sk_port] == NULL)
1398 sc_if->sk_cdata.sk_tx_chain[i].sk_dmamap);
1403 sc_if->sk_cdata.sk_rx_chain[i].sk_dmamap);
1409 callout_halt(&sc_if->sk_tick_ch, NULL);
1410 callout_destroy(&sc_if->sk_tick_ch);
1412 callout_halt(&sc_if->sk_tick_rx, NULL);
1413 callout_destroy(&sc_if->sk_tick_rx);
1416 if (LIST_FIRST(&sc_if->sk_mii.mii_phys) != NULL)
1417 mii_detach(&sc_if->sk_mii, MII_PHY_ANY, MII_OFFSET_ANY);
1425 ifmedia_fini(&sc_if->sk_mii.mii_media);
1427 msk_free_jumbo_mem(sc_if);
1429 bus_dmamem_unmap(sc->sc_dmatag, sc_if->sk_rdata,
1432 &sc_if->sk_ring_seg, sc_if->sk_ring_nseg);
1433 bus_dmamap_destroy(sc->sc_dmatag, sc_if->sk_ring_map);
1434 sc->sk_if[sc_if->sk_port] = NULL;
1879 msk_encap(struct sk_if_softc *sc_if, struct mbuf *m_head, uint32_t *txidx)
1881 struct sk_softc *sc = sc_if->sk_softc;
1892 txmap = sc_if->sk_cdata.sk_tx_chain[*txidx].sk_dmamap;
1913 hiaddr = sc_if->sk_cdata.sk_tx_hiaddr;
1922 if (total > MSK_TX_RING_CNT - sc_if->sk_cdata.sk_tx_cnt - 2) {
1941 if (sc_if->sk_cdata.sk_tx_hiaddr != hiaddr) {
1942 f = &sc_if->sk_rdata->sk_tx_ring[frag];
1948 sc_if->sk_cdata.sk_tx_hiaddr = hiaddr;
1952 sc_if->sk_ethercom.ec_if.if_xname, hiaddr));
1955 f = &sc_if->sk_rdata->sk_tx_ring[frag];
1970 sc_if->sk_cdata.sk_tx_chain[*txidx].sk_dmamap =
1971 sc_if->sk_cdata.sk_tx_chain[cur].sk_dmamap;
1972 sc_if->sk_cdata.sk_tx_chain[cur].sk_mbuf = m_head;
1973 sc_if->sk_cdata.sk_tx_chain[cur].sk_dmamap = txmap;
1975 sc_if->sk_rdata->sk_tx_ring[cur].sk_ctl |= SK_Y2_TXCTL_LASTFRAG;
1978 MSK_CDTXSYNC(sc_if, *txidx, entries,
1981 sc_if->sk_rdata->sk_tx_ring[*txidx].sk_opcode |= SK_Y2_TXOPC_OWN;
1984 MSK_CDTXSYNC(sc_if, *txidx, 1,
1987 sc_if->sk_cdata.sk_tx_cnt += entries;
1994 le = &sc_if->sk_rdata->sk_tx_ring[idx];
2010 struct sk_if_softc *sc_if = ifp->if_softc;
2012 uint32_t idx = sc_if->sk_cdata.sk_tx_prod;
2017 while (sc_if->sk_cdata.sk_tx_chain[idx].sk_mbuf == NULL) {
2027 if (msk_encap(sc_if, m_head, &idx)) {
2046 if (idx != sc_if->sk_cdata.sk_tx_prod) {
2047 sc_if->sk_cdata.sk_tx_prod = idx;
2048 SK_IF_WRITE_2(sc_if, 1, SK_TXQA1_Y2_PREF_PUTIDX, idx);
2058 struct sk_if_softc *sc_if = ifp->if_softc;
2064 msk_txeof(sc_if);
2065 if (sc_if->sk_cdata.sk_tx_cnt != 0) {
2066 device_printf(sc_if->sk_dev, "watchdog timeout\n");
2071 mskc_reset(sc_if->sk_softc);
2072 msk_reset(sc_if);
2117 msk_rxeof(struct sk_if_softc *sc_if, uint16_t len, uint32_t rxstat)
2119 struct sk_softc *sc = sc_if->sk_softc;
2120 struct ifnet *ifp = &sc_if->sk_ethercom.ec_if;
2125 cur = sc_if->sk_cdata.sk_rx_cons;
2126 prod = sc_if->sk_cdata.sk_rx_prod;
2129 sc_if->sk_cdata.sk_rx_cnt));
2132 MSK_CDRXSYNC(sc_if, cur,
2138 sc_if->sk_cdata.sk_rx_cnt--;
2139 m = sc_if->sk_cdata.sk_rx_chain[tail].sk_mbuf;
2140 sc_if->sk_cdata.sk_rx_chain[tail].sk_mbuf = NULL;
2144 sc_if->sk_cdata.sk_rx_cons = cur;
2146 sc_if->sk_cdata.sk_rx_cnt, m));
2151 dmamap = sc_if->sk_cdata.sk_rx_chain[tail].sk_dmamap;
2153 bus_dmamap_sync(sc_if->sk_softc->sc_dmatag, dmamap, 0,
2173 msk_txeof(struct sk_if_softc *sc_if)
2175 struct sk_softc *sc = sc_if->sk_softc;
2177 struct ifnet *ifp = &sc_if->sk_ethercom.ec_if;
2183 if (sc_if->sk_port == SK_PORT_A)
2192 idx = sc_if->sk_cdata.sk_tx_cons;
2194 MSK_CDTXSYNC(sc_if, idx, 1,
2197 cur_tx = &sc_if->sk_rdata->sk_tx_ring[idx];
2205 if (sc_if->sk_cdata.sk_tx_chain[idx].sk_mbuf != NULL) {
2206 dmamap = sc_if->sk_cdata.sk_tx_chain[idx].sk_dmamap;
2212 m_freem(sc_if->sk_cdata.sk_tx_chain[idx].sk_mbuf);
2213 sc_if->sk_cdata.sk_tx_chain[idx].sk_mbuf = NULL;
2215 sc_if->sk_cdata.sk_tx_cnt--;
2218 if (idx == sc_if->sk_cdata.sk_tx_cons)
2221 ifp->if_timer = sc_if->sk_cdata.sk_tx_cnt > 0 ? 5 : 0;
2223 if (sc_if->sk_cdata.sk_tx_cnt < MSK_TX_RING_CNT - 2)
2226 sc_if->sk_cdata.sk_tx_cons = idx;
2230 msk_fill_rx_ring(struct sk_if_softc *sc_if)
2233 while (sc_if->sk_cdata.sk_rx_cnt < (MSK_RX_RING_CNT - 1)) {
2234 if (msk_newbuf(sc_if) == ENOBUFS) {
2243 callout_schedule(&sc_if->sk_tick_rx, hz/2);
2249 struct sk_if_softc *sc_if = xsc_if;
2255 rx_prod = sc_if->sk_cdata.sk_rx_prod;
2256 msk_fill_rx_ring(sc_if);
2257 if (rx_prod != sc_if->sk_cdata.sk_rx_prod) {
2258 SK_IF_WRITE_2(sc_if, 0, SK_RXQ1_Y2_PREF_PUTIDX,
2259 sc_if->sk_cdata.sk_rx_prod);
2267 struct sk_if_softc *sc_if = xsc_if;
2268 struct mii_data *mii = &sc_if->sk_mii;
2275 callout_schedule(&sc_if->sk_tick_ch, hz);
2279 msk_intr_yukon(struct sk_if_softc *sc_if)
2283 status = SK_IF_READ_1(sc_if, 0, SK_GMAC_ISR);
2286 SK_IF_WRITE_1(sc_if, 0, SK_RXMF1_CTRL_TEST,
2291 SK_IF_WRITE_1(sc_if, 0, SK_TXMF1_CTRL_TEST,
2302 struct sk_if_softc *sc_if;
2344 sc_if = sc->sk_if[cur_st->sk_link & 0x01];
2345 if (sc_if) {
2346 msk_rxeof(sc_if, letoh16(cur_st->sk_len),
2348 if (sc_if->sk_cdata.sk_rx_cnt < (MSK_RX_RING_CNT/3))
2349 msk_fill_rx_tick(sc_if);
2393 msk_init_yukon(struct sk_if_softc *sc_if)
2400 sc = sc_if->sk_softc;
2403 CSR_READ_4(sc_if->sk_softc, SK_CSR)));
2408 SK_IF_READ_4(sc_if, 0, SK_GMAC_CTRL)));
2414 SK_IF_READ_2(sc_if, 0, SK_GMAC_ISR);
2417 reg = SK_YU_READ_2(sc_if, YUKON_PAR);
2424 SK_YU_WRITE_2(sc_if, YUKON_PAR, reg);
2429 SK_YU_WRITE_2(sc_if, YUKON_PAR, reg);
2433 SK_YU_WRITE_2(sc_if, YUKON_RCR, YU_RCR_CRCR);
2436 SK_YU_WRITE_2(sc_if, YUKON_TCR, (0x04 << 10));
2439 SK_YU_WRITE_2(sc_if, YUKON_TFCR, 0xffff);
2443 SK_YU_WRITE_2(sc_if, YUKON_TPR, YU_TPR_JAM_LEN(0x3) |
2456 SK_YU_WRITE_2(sc_if, YUKON_SMR, reg);
2459 struct ifnet *ifp = &sc_if->sk_ethercom.ec_if;
2462 memcpy(sc_if->sk_enaddr, CLLADDR(ifp->if_sadl),
2463 sizeof(sc_if->sk_enaddr));
2467 SK_YU_WRITE_2(sc_if, YUKON_SAL1 + i * 4,
2468 sc_if->sk_enaddr[i * 2] |
2469 sc_if->sk_enaddr[i * 2 + 1] << 8);
2473 reg = sk_win_read_2(sc_if->sk_softc,
2474 SK_MAC1_0 + i * 2 + sc_if->sk_port * 8);
2475 SK_YU_WRITE_2(sc_if, YUKON_SAL2 + i * 4, reg);
2479 msk_setpromisc(sc_if);
2483 msk_setmulti(sc_if);
2487 SK_YU_WRITE_2(sc_if, YUKON_TIMR, 0);
2488 SK_YU_WRITE_2(sc_if, YUKON_RIMR, 0);
2489 SK_YU_WRITE_2(sc_if, YUKON_TRIMR, 0);
2495 SK_IF_WRITE_2(sc_if, 0, SK_RXMF1_FLUSH_MASK, v);
2498 SK_IF_WRITE_1(sc_if, 0, SK_RXMF1_CTRL_TEST, SK_RFCTL_RESET_CLEAR);
2502 SK_IF_WRITE_2(sc_if, 0, SK_RXMF1_CTRL_TEST, v);
2511 SK_IF_WRITE_2(sc_if, 0, SK_RXMF1_FLUSH_THRESHOLD, v);
2514 SK_IF_WRITE_1(sc_if, 0, SK_TXMF1_CTRL_TEST, SK_TFCTL_RESET_CLEAR);
2515 SK_IF_WRITE_2(sc_if, 0, SK_TXMF1_CTRL_TEST, SK_TFCTL_OPERATION_ON);
2519 v = SK_IF_READ_2(sc_if, 0, SK_TXMF1_END);
2521 SK_IF_WRITE_2(sc_if, 0, SK_TXMF1_END, v);
2525 SK_YU_WRITE_2(sc_if, YUKON_GPCR, YU_GPCR_TXEN | YU_GPCR_RXEN);
2537 struct sk_if_softc *sc_if = ifp->if_softc;
2538 struct sk_softc *sc = sc_if->sk_softc;
2553 msk_init_yukon(sc_if);
2558 SK_IF_WRITE_1(sc_if, 0, SK_TXAR1_COUNTERCTL, SK_TXARCTL_ON);
2565 SK_IF_WRITE_4(sc_if, 0, SK_RXRB1_CTLTST, SK_RBCTL_UNRESET);
2566 SK_IF_WRITE_4(sc_if, 0, SK_RXRB1_START, sc_if->sk_rx_ramstart);
2567 SK_IF_WRITE_4(sc_if, 0, SK_RXRB1_WR_PTR, sc_if->sk_rx_ramstart);
2568 SK_IF_WRITE_4(sc_if, 0, SK_RXRB1_RD_PTR, sc_if->sk_rx_ramstart);
2569 SK_IF_WRITE_4(sc_if, 0, SK_RXRB1_END, sc_if->sk_rx_ramend);
2570 SK_IF_WRITE_4(sc_if, 0, SK_RXRB1_CTLTST, SK_RBCTL_ON);
2572 SK_IF_WRITE_4(sc_if, 1, SK_TXRBA1_CTLTST, SK_RBCTL_UNRESET);
2573 SK_IF_WRITE_4(sc_if, 1, SK_TXRBA1_CTLTST, SK_RBCTL_STORENFWD_ON);
2574 SK_IF_WRITE_4(sc_if, 1, SK_TXRBA1_START, sc_if->sk_tx_ramstart);
2575 SK_IF_WRITE_4(sc_if, 1, SK_TXRBA1_WR_PTR, sc_if->sk_tx_ramstart);
2576 SK_IF_WRITE_4(sc_if, 1, SK_TXRBA1_RD_PTR, sc_if->sk_tx_ramstart);
2577 SK_IF_WRITE_4(sc_if, 1, SK_TXRBA1_END, sc_if->sk_tx_ramend);
2578 SK_IF_WRITE_4(sc_if, 1, SK_TXRBA1_CTLTST, SK_RBCTL_ON);
2582 SK_IF_WRITE_4(sc_if, 0, SK_RXQ1_BMU_CSR, 0x00000016);
2583 SK_IF_WRITE_4(sc_if, 0, SK_RXQ1_BMU_CSR, 0x00000d28);
2584 SK_IF_WRITE_4(sc_if, 0, SK_RXQ1_BMU_CSR, 0x00000080);
2585 SK_IF_WRITE_2(sc_if, 0, SK_RXQ1_Y2_WM, 0x0600); /* XXX ??? */
2587 SK_IF_WRITE_4(sc_if, 1, SK_TXQA1_BMU_CSR, 0x00000016);
2588 SK_IF_WRITE_4(sc_if, 1, SK_TXQA1_BMU_CSR, 0x00000d28);
2589 SK_IF_WRITE_4(sc_if, 1, SK_TXQA1_BMU_CSR, 0x00000080);
2590 SK_IF_WRITE_2(sc_if, 1, SK_TXQA1_Y2_WM, 0x0600); /* XXX ??? */
2593 SK_IF_WRITE_4(sc_if, 1, SK_TXRBS1_CTLTST, SK_RBCTL_RESET);
2596 if (msk_init_rx_ring(sc_if) == ENOBUFS) {
2597 aprint_error_dev(sc_if->sk_dev, "initialization failed: no "
2604 if (msk_init_tx_ring(sc_if) == ENOBUFS) {
2605 aprint_error_dev(sc_if->sk_dev, "initialization failed: no "
2645 SK_IF_WRITE_4(sc_if, 0, SK_RXQ1_Y2_PREF_CSR, 0x00000001);
2646 SK_IF_WRITE_4(sc_if, 0, SK_RXQ1_Y2_PREF_CSR, 0x00000002);
2647 SK_IF_WRITE_2(sc_if, 0, SK_RXQ1_Y2_PREF_LIDX, MSK_RX_RING_CNT - 1);
2648 SK_IF_WRITE_4(sc_if, 0, SK_RXQ1_Y2_PREF_ADDRLO,
2649 MSK_RX_RING_ADDR(sc_if, 0));
2650 SK_IF_WRITE_4(sc_if, 0, SK_RXQ1_Y2_PREF_ADDRHI,
2651 (uint64_t)MSK_RX_RING_ADDR(sc_if, 0) >> 32);
2652 SK_IF_WRITE_4(sc_if, 0, SK_RXQ1_Y2_PREF_CSR, 0x00000008);
2653 SK_IF_READ_4(sc_if, 0, SK_RXQ1_Y2_PREF_CSR);
2655 SK_IF_WRITE_4(sc_if, 1, SK_TXQA1_Y2_PREF_CSR, 0x00000001);
2656 SK_IF_WRITE_4(sc_if, 1, SK_TXQA1_Y2_PREF_CSR, 0x00000002);
2657 SK_IF_WRITE_2(sc_if, 1, SK_TXQA1_Y2_PREF_LIDX, MSK_TX_RING_CNT - 1);
2658 SK_IF_WRITE_4(sc_if, 1, SK_TXQA1_Y2_PREF_ADDRLO,
2659 MSK_TX_RING_ADDR(sc_if, 0));
2660 SK_IF_WRITE_4(sc_if, 1, SK_TXQA1_Y2_PREF_ADDRHI,
2661 (uint64_t)MSK_TX_RING_ADDR(sc_if, 0) >> 32);
2662 SK_IF_WRITE_4(sc_if, 1, SK_TXQA1_Y2_PREF_CSR, 0x00000008);
2663 SK_IF_READ_4(sc_if, 1, SK_TXQA1_Y2_PREF_CSR);
2665 SK_IF_WRITE_2(sc_if, 0, SK_RXQ1_Y2_PREF_PUTIDX,
2666 sc_if->sk_cdata.sk_rx_prod);
2671 SK_IF_WRITE_4(sc_if, 0, SK_RXMF1_CTRL_TEST,
2676 if (sc_if->sk_port == SK_PORT_A)
2686 callout_schedule(&sc_if->sk_tick_ch, hz);
2700 struct sk_if_softc *sc_if = ifp->if_softc;
2701 struct sk_softc *sc = sc_if->sk_softc;
2707 callout_stop(&sc_if->sk_tick_ch);
2708 callout_stop(&sc_if->sk_tick_rx);
2718 SK_IF_WRITE_1(sc_if, 0, SK_RXMF1_CTRL_TEST, SK_RFCTL_RESET_SET);
2719 SK_IF_WRITE_1(sc_if, 0, SK_TXMF1_CTRL_TEST, SK_TFCTL_RESET_SET);
2720 SK_IF_WRITE_4(sc_if, 0, SK_RXQ1_BMU_CSR, SK_RXBMU_OFFLINE);
2721 SK_IF_WRITE_4(sc_if, 0, SK_RXRB1_CTLTST, SK_RBCTL_RESET | SK_RBCTL_OFF);
2722 SK_IF_WRITE_4(sc_if, 1, SK_TXQA1_BMU_CSR, SK_TXBMU_OFFLINE);
2723 SK_IF_WRITE_4(sc_if, 1, SK_TXRBA1_CTLTST, SK_RBCTL_RESET | SK_RBCTL_OFF);
2724 SK_IF_WRITE_1(sc_if, 0, SK_TXAR1_COUNTERCTL, SK_TXARCTL_OFF);
2725 SK_IF_WRITE_1(sc_if, 0, SK_RXLED1_CTL, SK_RXLEDCTL_COUNTER_STOP);
2726 SK_IF_WRITE_1(sc_if, 0, SK_TXLED1_CTL, SK_TXLEDCTL_COUNTER_STOP);
2727 SK_IF_WRITE_1(sc_if, 0, SK_LINKLED1_CTL, SK_LINKLED_OFF);
2728 SK_IF_WRITE_1(sc_if, 0, SK_LINKLED1_CTL, SK_LINKLED_LINKSYNC_OFF);
2730 SK_IF_WRITE_4(sc_if, 0, SK_RXQ1_Y2_PREF_CSR, 0x00000001);
2731 SK_IF_WRITE_4(sc_if, 1, SK_TXQA1_Y2_PREF_CSR, 0x00000001);
2734 if (sc_if->sk_port == SK_PORT_A)
2743 if (sc_if->sk_cdata.sk_rx_chain[i].sk_mbuf != NULL) {
2744 dmamap = sc_if->sk_cdata.sk_rx_chain[i].sk_dmamap;
2751 m_freem(sc_if->sk_cdata.sk_rx_chain[i].sk_mbuf);
2752 sc_if->sk_cdata.sk_rx_chain[i].sk_mbuf = NULL;
2756 sc_if->sk_cdata.sk_rx_prod = 0;
2757 sc_if->sk_cdata.sk_rx_cons = 0;
2758 sc_if->sk_cdata.sk_rx_cnt = 0;
2761 if (sc_if->sk_cdata.sk_tx_chain[i].sk_mbuf != NULL) {
2762 dmamap = sc_if->sk_cdata.sk_tx_chain[i].sk_dmamap;
2769 m_freem(sc_if->sk_cdata.sk_tx_chain[i].sk_mbuf);
2770 sc_if->sk_cdata.sk_tx_chain[i].sk_mbuf = NULL;