Lines Matching refs:mac
362 static int mac_intr_handler(struct cmac *mac) in mac_intr_handler() argument
367 static int mac_intr_enable(struct cmac *mac) in mac_intr_enable() argument
372 static int mac_intr_disable(struct cmac *mac) in mac_intr_disable() argument
377 static int mac_intr_clear(struct cmac *mac) in mac_intr_clear() argument
383 static int mac_set_address(struct cmac* mac, u8 addr[6]) in mac_set_address() argument
386 int port = mac->instance->index; in mac_set_address()
388 vsc_write(mac->adapter, REG_MAC_LOW_ADDR(port), in mac_set_address()
390 vsc_write(mac->adapter, REG_MAC_HIGH_ADDR(port), in mac_set_address()
393 vsc_read(mac->adapter, REG_ING_FFILT_UM_EN, &val); in mac_set_address()
395 vsc_write(mac->adapter, REG_ING_FFILT_UM_EN, val | (port << 28)); in mac_set_address()
397 vsc_write(mac->adapter, REG_ING_FFILT_MASK0, in mac_set_address()
399 vsc_write(mac->adapter, REG_ING_FFILT_MASK1, in mac_set_address()
401 vsc_write(mac->adapter, REG_ING_FFILT_MASK2, in mac_set_address()
406 static int mac_get_address(struct cmac *mac, u8 addr[6]) in mac_get_address() argument
409 int port = mac->instance->index; in mac_get_address()
411 vsc_read(mac->adapter, REG_MAC_LOW_ADDR(port), &addr_lo); in mac_get_address()
412 vsc_read(mac->adapter, REG_MAC_HIGH_ADDR(port), &addr_hi); in mac_get_address()
424 static int mac_reset(struct cmac *mac) in mac_reset() argument
426 int index = mac->instance->index; in mac_reset()
428 run_table(mac->adapter, vsc7326_portinit[index], in mac_reset()
434 static int mac_set_rx_mode(struct cmac *mac, struct t1_rx_mode *rm) in mac_set_rx_mode() argument
437 int port = mac->instance->index; in mac_set_rx_mode()
439 vsc_read(mac->adapter, REG_ING_FFILT_UM_EN, &v); in mac_set_rx_mode()
447 vsc_write(mac->adapter, REG_ING_FFILT_UM_EN, v); in mac_set_rx_mode()
451 static int mac_set_mtu(struct cmac *mac, int mtu) in mac_set_mtu() argument
453 int port = mac->instance->index; in mac_set_mtu()
459 vsc_write(mac->adapter, REG_MAX_LEN(port), mtu + 14 + 4); in mac_set_mtu()
463 static int mac_set_speed_duplex_fc(struct cmac *mac, int speed, int duplex, in mac_set_speed_duplex_fc() argument
467 int enable, port = mac->instance->index; in mac_set_speed_duplex_fc()
476 vsc_read(mac->adapter, REG_MODE_CFG(port), &v); in mac_set_speed_duplex_fc()
483 vsc_write(mac->adapter, REG_MODE_CFG(port), v); in mac_set_speed_duplex_fc()
491 vsc_write(mac->adapter, REG_DEV_SETUP(port), v | 1); /* reset */ in mac_set_speed_duplex_fc()
492 vsc_write(mac->adapter, REG_DEV_SETUP(port), v); in mac_set_speed_duplex_fc()
493 vsc_read(mac->adapter, REG_DBG(port), &v); in mac_set_speed_duplex_fc()
501 vsc_write(mac->adapter, REG_DBG(port), v); in mac_set_speed_duplex_fc()
503 vsc_write(mac->adapter, REG_TX_IFG(port), in mac_set_speed_duplex_fc()
515 vsc_write(mac->adapter, REG_MODE_CFG(port), enable); in mac_set_speed_duplex_fc()
519 vsc_read(mac->adapter, REG_PAUSE_CFG(port), &v); in mac_set_speed_duplex_fc()
528 vsc_write(mac->adapter, REG_PAUSE_CFG(port), v); in mac_set_speed_duplex_fc()
532 static int mac_enable(struct cmac *mac, int which) in mac_enable() argument
535 int port = mac->instance->index; in mac_enable()
538 vsc_write(mac->adapter, REG_HIGH_LOW_WM(1,port), WM_ENABLE); in mac_enable()
540 vsc_read(mac->adapter, REG_MODE_CFG(port), &val); in mac_enable()
545 vsc_write(mac->adapter, REG_MODE_CFG(port), val); in mac_enable()
549 static int mac_disable(struct cmac *mac, int which) in mac_disable() argument
552 int i, port = mac->instance->index; in mac_disable()
555 mac_reset(mac); in mac_disable()
557 vsc_read(mac->adapter, REG_MODE_CFG(port), &val); in mac_disable()
562 vsc_write(mac->adapter, REG_MODE_CFG(port), val); in mac_disable()
563 vsc_read(mac->adapter, REG_MODE_CFG(port), &val); in mac_disable()
567 vsc_write(mac->adapter, CRA(4, port, i), 0); in mac_disable()
570 memset(&mac->stats, 0, sizeof(struct cmac_statistics)); in mac_disable()
575 static void rmon_update(struct cmac *mac, unsigned int addr, u64 *stat) in rmon_update() argument
579 vsc_read(mac->adapter, addr, &v); in rmon_update()
590 static void port_stats_update(struct cmac *mac) in port_stats_update() argument
622 unsigned int port = mac->instance->index; in port_stats_update()
623 u64 *stats = (u64 *)&mac->stats; in port_stats_update()
627 rmon_update(mac, CRA(0x4, port, p->reg), stats + p->offset); in port_stats_update()
629 rmon_update(mac, REG_TX_OK_BYTES(port), &mac->stats.TxOctetsOK); in port_stats_update()
630 rmon_update(mac, REG_RX_OK_BYTES(port), &mac->stats.RxOctetsOK); in port_stats_update()
631 rmon_update(mac, REG_RX_BAD_BYTES(port), &mac->stats.RxOctetsBad); in port_stats_update()
643 static const struct cmac_statistics *mac_update_statistics(struct cmac *mac, in mac_update_statistics() argument
647 mac->instance->ticks >= MAJOR_UPDATE_TICKS) { in mac_update_statistics()
648 port_stats_update(mac); in mac_update_statistics()
649 mac->instance->ticks = 0; in mac_update_statistics()
651 int port = mac->instance->index; in mac_update_statistics()
653 rmon_update(mac, REG_RX_OK_BYTES(port), in mac_update_statistics()
654 &mac->stats.RxOctetsOK); in mac_update_statistics()
655 rmon_update(mac, REG_RX_BAD_BYTES(port), in mac_update_statistics()
656 &mac->stats.RxOctetsBad); in mac_update_statistics()
657 rmon_update(mac, REG_TX_OK_BYTES(port), in mac_update_statistics()
658 &mac->stats.TxOctetsOK); in mac_update_statistics()
659 mac->instance->ticks++; in mac_update_statistics()
661 return &mac->stats; in mac_update_statistics()
664 static void mac_destroy(struct cmac *mac) in mac_destroy() argument
666 kfree(mac); in mac_destroy()
688 struct cmac *mac; in vsc7326_mac_create() local
692 mac = kzalloc(sizeof(*mac) + sizeof(cmac_instance), GFP_KERNEL); in vsc7326_mac_create()
693 if (!mac) in vsc7326_mac_create()
696 mac->ops = &vsc7326_ops; in vsc7326_mac_create()
697 mac->instance = (cmac_instance *)(mac + 1); in vsc7326_mac_create()
698 mac->adapter = adapter; in vsc7326_mac_create()
700 mac->instance->index = index; in vsc7326_mac_create()
701 mac->instance->ticks = 0; in vsc7326_mac_create()
715 return mac; in vsc7326_mac_create()