Lines Matching refs:mac

104 	val |= 0x1;	/* Enable mac MAC itself */
384 static int mac_intr_handler(struct cmac *mac)
390 static int mac_intr_enable(struct cmac *mac)
396 static int mac_intr_disable(struct cmac *mac)
402 static int mac_intr_clear(struct cmac *mac)
408 static int mac_set_address(struct cmac* mac, u8 addr[6])
411 int port = mac->instance->index;
413 vsc_write(mac->adapter, REG_MAC_LOW_ADDR(port),
415 vsc_write(mac->adapter, REG_MAC_HIGH_ADDR(port),
418 vsc_read(mac->adapter, REG_ING_FFILT_UM_EN, &val);
420 vsc_write(mac->adapter, REG_ING_FFILT_UM_EN, val | (port << 28));
422 vsc_write(mac->adapter, REG_ING_FFILT_MASK0,
424 vsc_write(mac->adapter, REG_ING_FFILT_MASK1,
426 vsc_write(mac->adapter, REG_ING_FFILT_MASK2,
431 static int mac_get_address(struct cmac *mac, u8 addr[6])
434 int port = mac->instance->index;
436 vsc_read(mac->adapter, REG_MAC_LOW_ADDR(port), &addr_lo);
437 vsc_read(mac->adapter, REG_MAC_HIGH_ADDR(port), &addr_hi);
449 static int mac_reset(struct cmac *mac)
451 int index = mac->instance->index;
453 run_table(mac->adapter, vsc7326_portinit[index],
459 static int mac_set_rx_mode(struct cmac *mac, struct t1_rx_mode *rm)
462 int port = mac->instance->index;
464 vsc_read(mac->adapter, REG_ING_FFILT_UM_EN, &v);
472 vsc_write(mac->adapter, REG_ING_FFILT_UM_EN, v);
476 static int mac_set_mtu(struct cmac *mac, int mtu)
478 int port = mac->instance->index;
484 vsc_write(mac->adapter, REG_MAX_LEN(port), mtu + 14 + 4);
488 static int mac_set_speed_duplex_fc(struct cmac *mac, int speed, int duplex,
492 int enable, port = mac->instance->index;
501 vsc_read(mac->adapter, REG_MODE_CFG(port), &v);
508 vsc_write(mac->adapter, REG_MODE_CFG(port), v);
516 vsc_write(mac->adapter, REG_DEV_SETUP(port), v | 1); /* reset */
517 vsc_write(mac->adapter, REG_DEV_SETUP(port), v);
518 vsc_read(mac->adapter, REG_DBG(port), &v);
526 vsc_write(mac->adapter, REG_DBG(port), v);
528 vsc_write(mac->adapter, REG_TX_IFG(port),
540 vsc_write(mac->adapter, REG_MODE_CFG(port), enable);
544 vsc_read(mac->adapter, REG_PAUSE_CFG(port), &v);
553 vsc_write(mac->adapter, REG_PAUSE_CFG(port), v);
557 static int mac_enable(struct cmac *mac, int which)
560 int port = mac->instance->index;
562 vsc_read(mac->adapter, REG_MODE_CFG(port), &val);
567 vsc_write(mac->adapter, REG_MODE_CFG(port), val);
571 static int mac_disable(struct cmac *mac, int which)
574 int i, port = mac->instance->index;
577 (void) mac_reset(mac);
579 vsc_read(mac->adapter, REG_MODE_CFG(port), &val);
584 vsc_write(mac->adapter, REG_MODE_CFG(port), val);
585 vsc_read(mac->adapter, REG_MODE_CFG(port), &val);
589 vsc_write(mac->adapter, CRA(4, port, i), 0);
592 memset(&mac->stats, 0, sizeof(struct cmac_statistics));
597 static void rmon_update(struct cmac *mac, unsigned int addr, u64 *stat)
601 vsc_read(mac->adapter, addr, &v);
612 static void port_stats_update(struct cmac *mac)
614 int port = mac->instance->index;
617 rmon_update(mac, REG_RX_OK_BYTES(port), &mac->stats.RxOctetsOK);
618 rmon_update(mac, REG_RX_BAD_BYTES(port), &mac->stats.RxOctetsBad);
619 rmon_update(mac, REG_RX_UNICAST(port), &mac->stats.RxUnicastFramesOK);
620 rmon_update(mac, REG_RX_MULTICAST(port),
621 &mac->stats.RxMulticastFramesOK);
622 rmon_update(mac, REG_RX_BROADCAST(port),
623 &mac->stats.RxBroadcastFramesOK);
624 rmon_update(mac, REG_CRC(port), &mac->stats.RxFCSErrors);
625 rmon_update(mac, REG_RX_ALIGNMENT(port), &mac->stats.RxAlignErrors);
626 rmon_update(mac, REG_RX_OVERSIZE(port),
627 &mac->stats.RxFrameTooLongErrors);
628 rmon_update(mac, REG_RX_PAUSE(port), &mac->stats.RxPauseFrames);
629 rmon_update(mac, REG_RX_JABBERS(port), &mac->stats.RxJabberErrors);
630 rmon_update(mac, REG_RX_FRAGMENTS(port), &mac->stats.RxRuntErrors);
631 rmon_update(mac, REG_RX_UNDERSIZE(port), &mac->stats.RxRuntErrors);
632 rmon_update(mac, REG_RX_SYMBOL_CARRIER(port),
633 &mac->stats.RxSymbolErrors);
634 rmon_update(mac, REG_RX_SIZE_1519_TO_MAX(port),
635 &mac->stats.RxJumboFramesOK);
638 rmon_update(mac, REG_TX_OK_BYTES(port), &mac->stats.TxOctetsOK);
639 rmon_update(mac, REG_TX_UNICAST(port), &mac->stats.TxUnicastFramesOK);
640 rmon_update(mac, REG_TX_MULTICAST(port),
641 &mac->stats.TxMulticastFramesOK);
642 rmon_update(mac, REG_TX_BROADCAST(port),
643 &mac->stats.TxBroadcastFramesOK);
644 rmon_update(mac, REG_TX_PAUSE(port), &mac->stats.TxPauseFrames);
645 rmon_update(mac, REG_TX_UNDERRUN(port), &mac->stats.TxUnderrun);
646 rmon_update(mac, REG_TX_SIZE_1519_TO_MAX(port),
647 &mac->stats.TxJumboFramesOK);
659 static const struct cmac_statistics *mac_update_statistics(struct cmac *mac,
663 mac->instance->ticks >= MAJOR_UPDATE_TICKS) {
664 port_stats_update(mac);
665 mac->instance->ticks = 0;
667 int port = mac->instance->index;
669 rmon_update(mac, REG_RX_OK_BYTES(port),
670 &mac->stats.RxOctetsOK);
671 rmon_update(mac, REG_RX_BAD_BYTES(port),
672 &mac->stats.RxOctetsBad);
673 rmon_update(mac, REG_TX_OK_BYTES(port),
674 &mac->stats.TxOctetsOK);
675 mac->instance->ticks++;
677 return &mac->stats;
680 static void mac_destroy(struct cmac *mac)
682 t1_os_free((void *)mac, sizeof(*mac) + sizeof(cmac_instance));
726 struct cmac *mac;
730 mac = t1_os_malloc_wait_zero(sizeof(*mac) + sizeof(cmac_instance));
731 if (!mac) return NULL;
733 mac->ops = &vsc7326_ops;
734 mac->instance = (cmac_instance *)(mac + 1);
735 mac->adapter = adapter;
737 mac->instance->index = index;
738 mac->instance->ticks = 0;
752 return mac;