• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /asus-wl-520gu-7.0.1.45/src/et/sys/

Lines Matching defs:et

88 #define ET_LOCK(et)	spin_lock_bh(&(et)->lock)
89 #define ET_UNLOCK(et) spin_unlock_bh(&(et)->lock)
99 void et_init(et_info_t *et);
100 void et_reset(et_info_t *et);
101 void et_link_up(et_info_t *et);
102 void et_link_down(et_info_t *et);
103 void et_up(et_info_t *et);
104 void et_down(et_info_t *et, int reset);
105 void et_dump(et_info_t *et, struct bcmstrbuf *b);
110 static void et_free(et_info_t *et);
114 static void et_sendnext(et_info_t *et);
122 static void et_sendup(et_info_t *et, struct sk_buff *skb);
146 et_info_t *et;
152 ET_TRACE(("et%d: et_probe: bus %d slot %d func %d irq %d\n", unit,
165 ET_ERROR(("et%d: et_probe: out of memory, malloced %d bytes\n", unit,
173 ET_ERROR(("et%d: et_probe: init_etherdev() failed\n", unit));
180 if ((et = (et_info_t*) MALLOC(osh, sizeof(et_info_t))) == NULL) {
181 ET_ERROR(("et%d: et_probe: out of memory, malloced %d bytes\n", unit,
187 bzero(et, sizeof(et_info_t));
188 dev->priv = (void*) et;
189 et->dev = dev;
190 et->pdev = pdev;
191 et->osh = osh;
192 pci_set_drvdata(pdev, et);
196 if ((et->regsva = ioremap_nocache(dev->base_addr, PCI_BAR0_WINSZ)) == NULL) {
197 ET_ERROR(("et%d: ioremap() failed\n", unit));
201 spin_lock_init(&et->lock);
203 skb_queue_head_init(&et->txq);
206 if ((et->etc = etc_attach((void*)et, pdev->vendor, pdev->device, unit, osh, et->regsva)) ==
208 ET_ERROR(("et%d: etc_attach() failed\n", unit));
212 bcopy(&et->etc->cur_etheraddr, dev->dev_addr, ETHER_ADDR_LEN);
215 init_timer(&et->timer);
216 et->timer.data = (ulong)dev;
217 et->timer.function = et_watchdog;
220 tasklet_init(&et->tasklet, et_dpc, (ulong)et);
223 if (request_irq(pdev->irq, et_isr, SA_SHIRQ, dev->name, et)) {
224 ET_ERROR(("et%d: request_irq() failed\n", unit));
230 et->next = et_list;
231 et_list = et;
234 (*et->etc->chops->longname)(et->etc->ch, name, sizeof(name));
247 ET_ERROR(("et%d: register_netdev() failed\n", unit));
255 et_free(et);
262 et_info_t *et;
264 if ((et = (et_info_t *) pci_get_drvdata(pdev))) {
265 netif_device_detach(et->dev);
266 ET_LOCK(et);
267 et_down(et, 1);
268 ET_UNLOCK(et);
277 et_info_t *et;
279 if ((et = (et_info_t *) pci_get_drvdata(pdev))) {
280 ET_LOCK(et);
281 et_up(et);
282 ET_UNLOCK(et);
283 netif_device_attach(et->dev);
307 et_info_t *et;
314 if ((et = (et_info_t *) pci_get_drvdata(pdev))) {
315 et_free(et);
358 name: "et",
388 et_free(et_info_t *et)
393 if (et == NULL)
396 ET_TRACE(("et: et_free\n"));
398 if (et->dev && et->dev->irq)
399 free_irq(et->dev->irq, et);
401 if (et->dev) {
402 unregister_netdev(et->dev);
403 MFREE(et->osh, et->dev, sizeof(struct net_device));
404 et->dev = NULL;
408 if (et->etc) {
409 etc_detach(et->etc);
410 et->etc = NULL;
417 if (et->regsva) {
418 iounmap((void*)et->regsva);
419 et->regsva = NULL;
424 if (*prev == et) {
425 *prev = et->next;
429 osh = et->osh;
430 MFREE(et->osh, et, sizeof(et_info_t));
440 et_info_t *et;
442 et = ET_INFO(dev);
443 et_g = et;
445 ET_TRACE(("et%d: et_open\n", et->etc->unit));
447 et->etc->promisc = (dev->flags & IFF_PROMISC)? TRUE: FALSE;
449 ET_LOCK(et);
450 et_up(et);
451 ET_UNLOCK(et);
461 et_info_t *et;
463 et = ET_INFO(dev);
466 ET_TRACE(("et%d: et_close\n", et->etc->unit));
468 et->etc->promisc = FALSE;
470 ET_LOCK(et);
471 et_down(et, 1);
472 ET_UNLOCK(et);
488 et_info_t *et;
490 et = ET_INFO(dev);
492 ET_TRACE(("et%d: et_start: len %d\n", et->etc->unit, skb->len));
493 ET_LOG("et%d: et_start: len %d", et->etc->unit, skb->len);
495 ET_LOCK(et);
498 skb_queue_tail(&et->txq, skb);
499 et_sendnext(et);
501 ET_UNLOCK(et);
503 ET_LOG("et%d: et_start ret\n", et->etc->unit, 0);
509 et_sendnext(et_info_t *et)
515 etc = et->etc;
517 ET_TRACE(("et%d: et_sendnext\n", etc->unit));
518 ET_LOG("et%d: et_sendnext", etc->unit, 0);
526 if ((skb = skb_dequeue(&et->txq)) == NULL)
533 if ((p = PKTFRMNATIVE(et->osh, skb)) == NULL) {
545 if ((skb_queue_len(&et->txq) > DATAHIWAT) && !netif_queue_stopped(et->dev))
546 netif_stop_queue(et->dev);
547 else if (netif_queue_stopped(et->dev) && (skb_queue_len(&et->txq) < (DATAHIWAT/2))) {
548 netif_wake_queue(et->dev);
553 et_init(et_info_t *et)
555 ET_TRACE(("et%d: et_init\n", et->etc->unit));
556 ET_LOG("et%d: et_init", et->etc->unit, 0);
558 et_reset(et);
560 etc_init(et->etc);
565 et_reset(et_info_t *et)
567 ET_TRACE(("et%d: et_reset\n", et->etc->unit));
569 etc_reset(et->etc);
572 et->events = 0;
575 et->resched = 0;
579 et_up(et_info_t *et)
583 etc = et->etc;
588 ET_TRACE(("et%d: et_up\n", etc->unit));
593 et->timer.expires = jiffies + HZ;
594 add_timer(&et->timer);
596 netif_start_queue(et->dev);
600 et_down(et_info_t *et, int reset)
605 etc = et->etc;
607 ET_TRACE(("et%d: et_down\n", etc->unit));
609 netif_down(et->dev);
610 netif_stop_queue(et->dev);
613 del_timer(&et->timer);
618 while ((skb = skb_dequeue(&et->txq)))
622 ET_UNLOCK(et);
623 tasklet_kill(&et->tasklet);
624 ET_LOCK(et);
632 et_intrson(et_info_t *et)
636 (*et->etc->chops->intrson)(et->etc->ch);
643 et_info_t *et;
645 et = ET_INFO((struct net_device*)data);
647 ET_LOCK(et);
649 etc_watchdog(et->etc);
652 et->timer.expires = jiffies + HZ;
653 add_timer(&et->timer);
655 ET_UNLOCK(et);
661 et_ethtool(et_info_t *et, struct ethtool_cmd *ecmd)
667 ET_LOCK(et);
675 ecmd->advertising |= (et->etc->advertise & ADV_10HALF) ?
677 ecmd->advertising |= (et->etc->advertise & ADV_10FULL) ?
679 ecmd->advertising |= (et->etc->advertise & ADV_100HALF) ?
681 ecmd->advertising |= (et->etc->advertise & ADV_100FULL) ?
683 if (et->etc->linkstate) {
684 ecmd->speed = (et->etc->speed == 100) ? SPEED_100 : SPEED_10;
685 ecmd->duplex = (et->etc->duplex == 1) ? DUPLEX_FULL : DUPLEX_HALF;
693 ecmd->autoneg = (et->etc->forcespeed == ET_AUTO) ? AUTONEG_ENABLE : AUTONEG_DISABLE;
716 ret = etc_ioctl(et->etc, ETCSPEED, &speed);
722 sprintf(info->driver, "et%d", et->etc->unit);
730 ET_UNLOCK(et);
739 et_info_t *et;
745 et = ET_INFO(dev);
747 ET_TRACE(("et%d: et_ioctl: cmd 0x%x\n", et->etc->unit, cmd));
781 if ((buf = MALLOC(et->osh, size)) == NULL) {
782 ET_ERROR(("et: et_ioctl: out of memory, malloced %d bytes\n", MALLOCED(et->osh)));
787 MFREE(et->osh, buf, size);
794 error = et_ethtool(et, (struct ethtool_cmd*)buf);
798 ET_LOCK(et);
799 error = etc_ioctl(et->etc, cmd - SIOCSETCUP, buf) ? -EINVAL : 0;
800 ET_UNLOCK(et);
807 MFREE(et->osh, buf, size);
815 et_info_t *et;
819 et = ET_INFO(dev);
821 ET_TRACE(("et%d: et_get_stats\n", et->etc->unit));
823 ET_LOCK(et);
825 etc = et->etc;
826 stats = &et->stats;
830 if (et->etc->up)
851 ET_UNLOCK(et);
859 et_info_t *et;
862 et = ET_INFO(dev);
863 ET_TRACE(("et%d: et_set_mac_address\n", et->etc->unit));
865 if (et->etc->up)
869 bcopy(dev->dev_addr, &et->etc->cur_etheraddr, ETHER_ADDR_LEN);
877 et_info_t *et;
882 et = ET_INFO(dev);
883 etc = et->etc;
885 ET_TRACE(("et%d: et_set_multicast_list\n", etc->unit));
887 ET_LOCK(et);
905 et_init(et);
908 ET_UNLOCK(et);
914 et_info_t *et;
919 et = (et_info_t*) dev_id;
920 chops = et->etc->chops;
921 ch = et->etc->ch;
924 if (!et->etc->up)
934 ET_TRACE(("et%d: et_isr: events 0x%x\n", et->etc->unit, events));
935 ET_LOG("et%d: et_isr: events 0x%x", et->etc->unit, events);
941 ASSERT(et->events == 0);
942 et->events = events;
945 ASSERT(et->resched == FALSE);
946 tasklet_schedule(&et->tasklet);
949 ET_LOG("et%d: et_isr ret", et->etc->unit, 0);
957 et_info_t *et;
964 et = (et_info_t*) data;
965 chops = et->etc->chops;
966 ch = et->etc->ch;
967 osh = et->etc->osh;
969 ET_TRACE(("et%d: et_dpc: events 0x%x\n", et->etc->unit, et->events));
970 ET_LOG("et%d: et_dpc: events 0x%x", et->etc->unit, et->events);
972 ET_LOCK(et);
974 if (!et->etc->up)
978 if (et->resched) {
979 et->events = (*chops->getintrevents)(ch, FALSE);
980 et->resched = FALSE;
983 if (et->events & INTR_RX) {
987 et_sendup(et, skb);
990 et->resched = TRUE;
999 if (et->events & INTR_TX)
1003 if (et->events & INTR_ERROR)
1005 et_init(et);
1008 if (skb_queue_len(&et->txq) > 0)
1009 et_sendnext(et);
1012 et->events = 0;
1015 if (!et->etc->up) {
1016 et->resched = FALSE;
1021 if (et->resched)
1022 tasklet_schedule(&et->tasklet);
1028 ET_UNLOCK(et);
1030 ET_LOG("et%d: et_dpc ret", et->etc->unit, 0);
1034 et_sendup(et_info_t *et, struct sk_buff *skb)
1041 etc = et->etc;
1049 ET_TRACE(("et%d: et_sendup: %d bytes\n", et->etc->unit, skb->len));
1050 ET_LOG("et%d: et_sendup: len %d", et->etc->unit, skb->len);
1070 if (et->etc->qos)
1073 skb->dev = et->dev;
1074 skb->protocol = eth_type_trans(skb, et->dev);
1079 ET_LOG("et%d: et_sendup ret", et->etc->unit, 0);
1086 ET_ERROR(("et%d: rx: crc error (odd nibbles) from %s\n", etc->unit, eabuf));
1089 ET_ERROR(("et%d: rx: symbol error from %s\n", etc->unit, eabuf));
1092 ET_ERROR(("et%d: rx: crc error from %s\n", etc->unit, eabuf));
1095 ET_ERROR(("et%d: rx: fifo overflow\n", etc->unit));
1104 et_dump(et_info_t *et, struct bcmstrbuf *b)
1106 bcm_bprintf(b, "et%d: %s %s version %s\n", et->etc->unit,
1113 et_link_up(et_info_t *et)
1115 ET_ERROR(("et%d: link up (%d%s)\n",
1116 et->etc->unit, et->etc->speed, (et->etc->duplex? "FD" : "HD")));
1120 et_link_down(et_info_t *et)
1122 ET_ERROR(("et%d: link down\n", et->etc->unit));
1127 * Find the et associated with the same chip as <et>
1131 et_phyfind(et_info_t *et, uint coreunit)
1136 bus = et->pdev->bus->number;
1137 slot = PCI_SLOT(et->pdev->devfn);
1139 /* walk the list et's */
1141 if (et->etc == NULL)
1159 et_phyrd(et_info_t *et, uint phyaddr, uint reg)
1163 ET_LOCK(et);
1164 val = et->etc->chops->phyrd(et->etc->ch, phyaddr, reg);
1165 ET_UNLOCK(et);
1172 et_phywr(et_info_t *et, uint phyaddr, uint reg, uint16 val)
1174 ET_LOCK(et);
1175 et->etc->chops->phywr(et->etc->ch, phyaddr, reg, val);
1176 ET_UNLOCK(et);