Lines Matching refs:mac
382 static int mac_intr_handler(struct cmac *mac) in mac_intr_handler() argument
388 static int mac_intr_enable(struct cmac *mac) in mac_intr_enable() argument
394 static int mac_intr_disable(struct cmac *mac) in mac_intr_disable() argument
400 static int mac_intr_clear(struct cmac *mac) in mac_intr_clear() argument
406 static int mac_set_address(struct cmac* mac, u8 addr[6]) in mac_set_address() argument
409 int port = mac->instance->index; in mac_set_address()
411 vsc_write(mac->adapter, REG_MAC_LOW_ADDR(port), in mac_set_address()
413 vsc_write(mac->adapter, REG_MAC_HIGH_ADDR(port), in mac_set_address()
416 vsc_read(mac->adapter, REG_ING_FFILT_UM_EN, &val); in mac_set_address()
418 vsc_write(mac->adapter, REG_ING_FFILT_UM_EN, val | (port << 28)); in mac_set_address()
420 vsc_write(mac->adapter, REG_ING_FFILT_MASK0, in mac_set_address()
422 vsc_write(mac->adapter, REG_ING_FFILT_MASK1, in mac_set_address()
424 vsc_write(mac->adapter, REG_ING_FFILT_MASK2, in mac_set_address()
429 static int mac_get_address(struct cmac *mac, u8 addr[6]) in mac_get_address() argument
432 int port = mac->instance->index; in mac_get_address()
434 vsc_read(mac->adapter, REG_MAC_LOW_ADDR(port), &addr_lo); in mac_get_address()
435 vsc_read(mac->adapter, REG_MAC_HIGH_ADDR(port), &addr_hi); in mac_get_address()
447 static int mac_reset(struct cmac *mac) in mac_reset() argument
449 int index = mac->instance->index; in mac_reset()
451 run_table(mac->adapter, vsc7326_portinit[index], in mac_reset()
457 static int mac_set_rx_mode(struct cmac *mac, struct t1_rx_mode *rm) in mac_set_rx_mode() argument
460 int port = mac->instance->index; in mac_set_rx_mode()
462 vsc_read(mac->adapter, REG_ING_FFILT_UM_EN, &v); in mac_set_rx_mode()
470 vsc_write(mac->adapter, REG_ING_FFILT_UM_EN, v); in mac_set_rx_mode()
474 static int mac_set_mtu(struct cmac *mac, int mtu) in mac_set_mtu() argument
476 int port = mac->instance->index; in mac_set_mtu()
482 vsc_write(mac->adapter, REG_MAX_LEN(port), mtu + 14 + 4); in mac_set_mtu()
486 static int mac_set_speed_duplex_fc(struct cmac *mac, int speed, int duplex, in mac_set_speed_duplex_fc() argument
490 int enable, port = mac->instance->index; in mac_set_speed_duplex_fc()
499 vsc_read(mac->adapter, REG_MODE_CFG(port), &v); in mac_set_speed_duplex_fc()
506 vsc_write(mac->adapter, REG_MODE_CFG(port), v); in mac_set_speed_duplex_fc()
514 vsc_write(mac->adapter, REG_DEV_SETUP(port), v | 1); /* reset */ in mac_set_speed_duplex_fc()
515 vsc_write(mac->adapter, REG_DEV_SETUP(port), v); in mac_set_speed_duplex_fc()
516 vsc_read(mac->adapter, REG_DBG(port), &v); in mac_set_speed_duplex_fc()
524 vsc_write(mac->adapter, REG_DBG(port), v); in mac_set_speed_duplex_fc()
526 vsc_write(mac->adapter, REG_TX_IFG(port), in mac_set_speed_duplex_fc()
538 vsc_write(mac->adapter, REG_MODE_CFG(port), enable); in mac_set_speed_duplex_fc()
542 vsc_read(mac->adapter, REG_PAUSE_CFG(port), &v); in mac_set_speed_duplex_fc()
551 vsc_write(mac->adapter, REG_PAUSE_CFG(port), v); in mac_set_speed_duplex_fc()
555 static int mac_enable(struct cmac *mac, int which) in mac_enable() argument
558 int port = mac->instance->index; in mac_enable()
560 vsc_read(mac->adapter, REG_MODE_CFG(port), &val); in mac_enable()
565 vsc_write(mac->adapter, REG_MODE_CFG(port), val); in mac_enable()
569 static int mac_disable(struct cmac *mac, int which) in mac_disable() argument
572 int i, port = mac->instance->index; in mac_disable()
575 (void) mac_reset(mac); in mac_disable()
577 vsc_read(mac->adapter, REG_MODE_CFG(port), &val); in mac_disable()
582 vsc_write(mac->adapter, REG_MODE_CFG(port), val); in mac_disable()
583 vsc_read(mac->adapter, REG_MODE_CFG(port), &val); in mac_disable()
587 vsc_write(mac->adapter, CRA(4, port, i), 0); in mac_disable()
590 memset(&mac->stats, 0, sizeof(struct cmac_statistics)); in mac_disable()
595 static void rmon_update(struct cmac *mac, unsigned int addr, u64 *stat) in rmon_update() argument
599 vsc_read(mac->adapter, addr, &v); in rmon_update()
610 static void port_stats_update(struct cmac *mac) in port_stats_update() argument
612 int port = mac->instance->index; in port_stats_update()
615 rmon_update(mac, REG_RX_OK_BYTES(port), &mac->stats.RxOctetsOK); in port_stats_update()
616 rmon_update(mac, REG_RX_BAD_BYTES(port), &mac->stats.RxOctetsBad); in port_stats_update()
617 rmon_update(mac, REG_RX_UNICAST(port), &mac->stats.RxUnicastFramesOK); in port_stats_update()
618 rmon_update(mac, REG_RX_MULTICAST(port), in port_stats_update()
619 &mac->stats.RxMulticastFramesOK); in port_stats_update()
620 rmon_update(mac, REG_RX_BROADCAST(port), in port_stats_update()
621 &mac->stats.RxBroadcastFramesOK); in port_stats_update()
622 rmon_update(mac, REG_CRC(port), &mac->stats.RxFCSErrors); in port_stats_update()
623 rmon_update(mac, REG_RX_ALIGNMENT(port), &mac->stats.RxAlignErrors); in port_stats_update()
624 rmon_update(mac, REG_RX_OVERSIZE(port), in port_stats_update()
625 &mac->stats.RxFrameTooLongErrors); in port_stats_update()
626 rmon_update(mac, REG_RX_PAUSE(port), &mac->stats.RxPauseFrames); in port_stats_update()
627 rmon_update(mac, REG_RX_JABBERS(port), &mac->stats.RxJabberErrors); in port_stats_update()
628 rmon_update(mac, REG_RX_FRAGMENTS(port), &mac->stats.RxRuntErrors); in port_stats_update()
629 rmon_update(mac, REG_RX_UNDERSIZE(port), &mac->stats.RxRuntErrors); in port_stats_update()
630 rmon_update(mac, REG_RX_SYMBOL_CARRIER(port), in port_stats_update()
631 &mac->stats.RxSymbolErrors); in port_stats_update()
632 rmon_update(mac, REG_RX_SIZE_1519_TO_MAX(port), in port_stats_update()
633 &mac->stats.RxJumboFramesOK); in port_stats_update()
636 rmon_update(mac, REG_TX_OK_BYTES(port), &mac->stats.TxOctetsOK); in port_stats_update()
637 rmon_update(mac, REG_TX_UNICAST(port), &mac->stats.TxUnicastFramesOK); in port_stats_update()
638 rmon_update(mac, REG_TX_MULTICAST(port), in port_stats_update()
639 &mac->stats.TxMulticastFramesOK); in port_stats_update()
640 rmon_update(mac, REG_TX_BROADCAST(port), in port_stats_update()
641 &mac->stats.TxBroadcastFramesOK); in port_stats_update()
642 rmon_update(mac, REG_TX_PAUSE(port), &mac->stats.TxPauseFrames); in port_stats_update()
643 rmon_update(mac, REG_TX_UNDERRUN(port), &mac->stats.TxUnderrun); in port_stats_update()
644 rmon_update(mac, REG_TX_SIZE_1519_TO_MAX(port), in port_stats_update()
645 &mac->stats.TxJumboFramesOK); in port_stats_update()
657 static const struct cmac_statistics *mac_update_statistics(struct cmac *mac, in mac_update_statistics() argument
661 mac->instance->ticks >= MAJOR_UPDATE_TICKS) { in mac_update_statistics()
662 port_stats_update(mac); in mac_update_statistics()
663 mac->instance->ticks = 0; in mac_update_statistics()
665 int port = mac->instance->index; in mac_update_statistics()
667 rmon_update(mac, REG_RX_OK_BYTES(port), in mac_update_statistics()
668 &mac->stats.RxOctetsOK); in mac_update_statistics()
669 rmon_update(mac, REG_RX_BAD_BYTES(port), in mac_update_statistics()
670 &mac->stats.RxOctetsBad); in mac_update_statistics()
671 rmon_update(mac, REG_TX_OK_BYTES(port), in mac_update_statistics()
672 &mac->stats.TxOctetsOK); in mac_update_statistics()
673 mac->instance->ticks++; in mac_update_statistics()
675 return &mac->stats; in mac_update_statistics()
678 static void mac_destroy(struct cmac *mac) in mac_destroy() argument
680 t1_os_free((void *)mac, sizeof(*mac) + sizeof(cmac_instance)); in mac_destroy()
724 struct cmac *mac; in vsc7326_mac_create() local
728 mac = t1_os_malloc_wait_zero(sizeof(*mac) + sizeof(cmac_instance)); in vsc7326_mac_create()
729 if (!mac) return NULL; in vsc7326_mac_create()
731 mac->ops = &vsc7326_ops; in vsc7326_mac_create()
732 mac->instance = (cmac_instance *)(mac + 1); in vsc7326_mac_create()
733 mac->adapter = adapter; in vsc7326_mac_create()
735 mac->instance->index = index; in vsc7326_mac_create()
736 mac->instance->ticks = 0; in vsc7326_mac_create()
750 return mac; in vsc7326_mac_create()