Lines Matching refs:mac

84 	val |= 0x1;	/* Enable mac MAC itself */
361 static int mac_intr_handler(struct cmac *mac)
366 static int mac_intr_enable(struct cmac *mac)
371 static int mac_intr_disable(struct cmac *mac)
376 static int mac_intr_clear(struct cmac *mac)
382 static int mac_set_address(struct cmac* mac, const u8 addr[6])
385 int port = mac->instance->index;
387 vsc_write(mac->adapter, REG_MAC_LOW_ADDR(port),
389 vsc_write(mac->adapter, REG_MAC_HIGH_ADDR(port),
392 vsc_read(mac->adapter, REG_ING_FFILT_UM_EN, &val);
394 vsc_write(mac->adapter, REG_ING_FFILT_UM_EN, val | (port << 28));
396 vsc_write(mac->adapter, REG_ING_FFILT_MASK0,
398 vsc_write(mac->adapter, REG_ING_FFILT_MASK1,
400 vsc_write(mac->adapter, REG_ING_FFILT_MASK2,
405 static int mac_get_address(struct cmac *mac, u8 addr[6])
408 int port = mac->instance->index;
410 vsc_read(mac->adapter, REG_MAC_LOW_ADDR(port), &addr_lo);
411 vsc_read(mac->adapter, REG_MAC_HIGH_ADDR(port), &addr_hi);
423 static int mac_reset(struct cmac *mac)
425 int index = mac->instance->index;
427 run_table(mac->adapter, vsc7326_portinit[index],
433 static int mac_set_rx_mode(struct cmac *mac, struct t1_rx_mode *rm)
436 int port = mac->instance->index;
438 vsc_read(mac->adapter, REG_ING_FFILT_UM_EN, &v);
446 vsc_write(mac->adapter, REG_ING_FFILT_UM_EN, v);
450 static int mac_set_mtu(struct cmac *mac, int mtu)
452 int port = mac->instance->index;
455 vsc_write(mac->adapter, REG_MAX_LEN(port), mtu + 14 + 4);
459 static int mac_set_speed_duplex_fc(struct cmac *mac, int speed, int duplex,
463 int enable, port = mac->instance->index;
472 vsc_read(mac->adapter, REG_MODE_CFG(port), &v);
479 vsc_write(mac->adapter, REG_MODE_CFG(port), v);
487 vsc_write(mac->adapter, REG_DEV_SETUP(port), v | 1); /* reset */
488 vsc_write(mac->adapter, REG_DEV_SETUP(port), v);
489 vsc_read(mac->adapter, REG_DBG(port), &v);
497 vsc_write(mac->adapter, REG_DBG(port), v);
499 vsc_write(mac->adapter, REG_TX_IFG(port),
511 vsc_write(mac->adapter, REG_MODE_CFG(port), enable);
515 vsc_read(mac->adapter, REG_PAUSE_CFG(port), &v);
524 vsc_write(mac->adapter, REG_PAUSE_CFG(port), v);
528 static int mac_enable(struct cmac *mac, int which)
531 int port = mac->instance->index;
534 vsc_write(mac->adapter, REG_HIGH_LOW_WM(1,port), WM_ENABLE);
536 vsc_read(mac->adapter, REG_MODE_CFG(port), &val);
541 vsc_write(mac->adapter, REG_MODE_CFG(port), val);
545 static int mac_disable(struct cmac *mac, int which)
548 int i, port = mac->instance->index;
551 mac_reset(mac);
553 vsc_read(mac->adapter, REG_MODE_CFG(port), &val);
558 vsc_write(mac->adapter, REG_MODE_CFG(port), val);
559 vsc_read(mac->adapter, REG_MODE_CFG(port), &val);
563 vsc_write(mac->adapter, CRA(4, port, i), 0);
566 memset(&mac->stats, 0, sizeof(struct cmac_statistics));
571 static void rmon_update(struct cmac *mac, unsigned int addr, u64 *stat)
575 vsc_read(mac->adapter, addr, &v);
586 static void port_stats_update(struct cmac *mac)
618 unsigned int port = mac->instance->index;
619 u64 *stats = (u64 *)&mac->stats;
623 rmon_update(mac, CRA(0x4, port, p->reg), stats + p->offset);
625 rmon_update(mac, REG_TX_OK_BYTES(port), &mac->stats.TxOctetsOK);
626 rmon_update(mac, REG_RX_OK_BYTES(port), &mac->stats.RxOctetsOK);
627 rmon_update(mac, REG_RX_BAD_BYTES(port), &mac->stats.RxOctetsBad);
639 static const struct cmac_statistics *mac_update_statistics(struct cmac *mac,
643 mac->instance->ticks >= MAJOR_UPDATE_TICKS) {
644 port_stats_update(mac);
645 mac->instance->ticks = 0;
647 int port = mac->instance->index;
649 rmon_update(mac, REG_RX_OK_BYTES(port),
650 &mac->stats.RxOctetsOK);
651 rmon_update(mac, REG_RX_BAD_BYTES(port),
652 &mac->stats.RxOctetsBad);
653 rmon_update(mac, REG_TX_OK_BYTES(port),
654 &mac->stats.TxOctetsOK);
655 mac->instance->ticks++;
657 return &mac->stats;
660 static void mac_destroy(struct cmac *mac)
662 kfree(mac);
684 struct cmac *mac;
688 mac = kzalloc(sizeof(*mac) + sizeof(cmac_instance), GFP_KERNEL);
689 if (!mac)
692 mac->ops = &vsc7326_ops;
693 mac->instance = (cmac_instance *)(mac + 1);
694 mac->adapter = adapter;
696 mac->instance->index = index;
697 mac->instance->ticks = 0;
711 return mac;