• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/net/

Lines Matching refs:card

60 static inline void gelic_card_enable_rxdmac(struct gelic_card *card);
61 static inline void gelic_card_disable_rxdmac(struct gelic_card *card);
62 static inline void gelic_card_disable_txdmac(struct gelic_card *card);
63 static inline void gelic_card_reset_chain(struct gelic_card *card,
68 int gelic_card_set_irq_mask(struct gelic_card *card, u64 mask)
72 status = lv1_net_set_interrupt_mask(bus_id(card), dev_id(card),
75 dev_info(ctodev(card),
80 static inline void gelic_card_rx_irq_on(struct gelic_card *card)
82 card->irq_mask |= GELIC_CARD_RXINT;
83 gelic_card_set_irq_mask(card, card->irq_mask);
85 static inline void gelic_card_rx_irq_off(struct gelic_card *card)
87 card->irq_mask &= ~GELIC_CARD_RXINT;
88 gelic_card_set_irq_mask(card, card->irq_mask);
91 static void gelic_card_get_ether_port_status(struct gelic_card *card,
97 lv1_net_control(bus_id(card), dev_id(card),
100 &card->ether_port_status, &v2);
103 ether_netdev = card->netdev[GELIC_PORT_ETHERNET_0];
104 if (card->ether_port_status & GELIC_LV1_ETHER_LINK_UP)
111 static int gelic_card_set_link_mode(struct gelic_card *card, int mode)
116 status = lv1_net_control(bus_id(card), dev_id(card),
125 card->link_mode = mode;
129 void gelic_card_up(struct gelic_card *card)
132 mutex_lock(&card->updown_lock);
133 if (atomic_inc_return(&card->users) == 1) {
136 gelic_card_set_irq_mask(card, card->irq_mask);
138 gelic_card_enable_rxdmac(card);
140 napi_enable(&card->napi);
142 mutex_unlock(&card->updown_lock);
146 void gelic_card_down(struct gelic_card *card)
150 mutex_lock(&card->updown_lock);
151 if (atomic_dec_if_positive(&card->users) == 0) {
153 napi_disable(&card->napi);
158 mask = card->irq_mask & (GELIC_CARD_WLAN_EVENT_RECEIVED |
160 gelic_card_set_irq_mask(card, mask);
162 gelic_card_disable_rxdmac(card);
163 gelic_card_reset_chain(card, &card->rx_chain,
164 card->descr + GELIC_NET_TX_DESCRIPTORS);
166 gelic_card_disable_txdmac(card);
168 mutex_unlock(&card->updown_lock);
209 * @card: card structure
212 static void gelic_card_free_chain(struct gelic_card *card,
218 dma_unmap_single(ctodev(card), descr->bus_addr,
226 * @card: card structure
236 static int __devinit gelic_card_init_chain(struct gelic_card *card,
251 dma_map_single(ctodev(card), descr,
282 dma_unmap_single(ctodev(card), descr->bus_addr,
290 * @card: card structure
297 static void gelic_card_reset_chain(struct gelic_card *card,
315 * @card: card structure
323 static int gelic_descr_prepare_rx(struct gelic_card *card,
330 dev_info(ctodev(card), "%s: ERROR status\n", __func__);
339 dev_info(ctodev(card),
354 descr->buf_addr = cpu_to_be32(dma_map_single(ctodev(card),
361 dev_info(ctodev(card),
373 * @card: card structure
376 static void gelic_card_release_rx_chain(struct gelic_card *card)
378 struct gelic_descr *descr = card->rx_chain.head;
382 dma_unmap_single(ctodev(card),
393 } while (descr != card->rx_chain.head);
398 * @card: card structure
404 static int gelic_card_fill_rx_chain(struct gelic_card *card)
406 struct gelic_descr *descr = card->rx_chain.head;
411 ret = gelic_descr_prepare_rx(card, descr);
416 } while (descr != card->rx_chain.head);
420 gelic_card_release_rx_chain(card);
426 * @card: card structure
430 static int __devinit gelic_card_alloc_rx_skbs(struct gelic_card *card)
434 chain = &card->rx_chain;
435 ret = gelic_card_fill_rx_chain(card);
436 chain->tail = card->rx_top->prev; /* point to the last */
442 * @card: card structure
447 static void gelic_descr_release_tx(struct gelic_card *card,
454 dma_unmap_single(ctodev(card), be32_to_cpu(descr->buf_addr), skb->len,
471 static void gelic_card_stop_queues(struct gelic_card *card)
473 netif_stop_queue(card->netdev[GELIC_PORT_ETHERNET_0]);
475 if (card->netdev[GELIC_PORT_WIRELESS])
476 netif_stop_queue(card->netdev[GELIC_PORT_WIRELESS]);
478 static void gelic_card_wake_queues(struct gelic_card *card)
480 netif_wake_queue(card->netdev[GELIC_PORT_ETHERNET_0]);
482 if (card->netdev[GELIC_PORT_WIRELESS])
483 netif_wake_queue(card->netdev[GELIC_PORT_WIRELESS]);
487 * @card: adapter structure
492 static void gelic_card_release_tx_chain(struct gelic_card *card, int stop)
499 for (tx_chain = &card->tx_chain;
509 dev_info(ctodev(card),
531 gelic_descr_release_tx(card, tx_chain->tail);
536 gelic_card_wake_queues(card);
549 struct gelic_card *card = netdev_card(netdev);
557 status = lv1_net_remove_multicast_address(bus_id(card), dev_id(card),
560 dev_err(ctodev(card),
564 status = lv1_net_add_multicast_address(bus_id(card), dev_id(card),
567 dev_err(ctodev(card),
573 status = lv1_net_add_multicast_address(bus_id(card),
574 dev_id(card),
577 dev_err(ctodev(card),
591 status = lv1_net_add_multicast_address(bus_id(card),
592 dev_id(card),
595 dev_err(ctodev(card),
603 * @card: card structure
608 static inline void gelic_card_enable_rxdmac(struct gelic_card *card)
613 if (gelic_descr_get_status(card->rx_chain.head) !=
616 be32_to_cpu(card->rx_chain.head->dmac_cmd_status));
618 be32_to_cpu(card->rx_chain.head->next_descr_addr));
620 card->rx_chain.head);
623 status = lv1_net_start_rx_dma(bus_id(card), dev_id(card),
624 card->rx_chain.head->bus_addr, 0);
626 dev_info(ctodev(card),
632 * @card: card structure
637 static inline void gelic_card_disable_rxdmac(struct gelic_card *card)
642 status = lv1_net_stop_rx_dma(bus_id(card), dev_id(card), 0);
644 dev_err(ctodev(card),
650 * @card: card structure
655 static inline void gelic_card_disable_txdmac(struct gelic_card *card)
660 status = lv1_net_stop_tx_dma(bus_id(card), dev_id(card), 0);
662 dev_err(ctodev(card),
674 struct gelic_card *card;
681 card = netdev_card(netdev);
682 gelic_card_down(card);
690 * @card: device structure to get descriptor from
695 gelic_card_get_next_tx_descr(struct gelic_card *card)
697 if (!card->tx_chain.head)
700 if (card->tx_chain.tail != card->tx_chain.head->next &&
701 gelic_descr_get_status(card->tx_chain.head) ==
703 return card->tx_chain.head;
776 * @card: card structure
783 static int gelic_descr_prepare_tx(struct gelic_card *card,
789 if (card->vlan_required) {
795 card->vlan[type].tx);
801 buf = dma_map_single(ctodev(card), skb->data, skb->len, DMA_TO_DEVICE);
804 dev_err(ctodev(card),
818 card->tx_chain.head = descr->next;
824 * @card: card structure
828 static int gelic_card_kick_txdma(struct gelic_card *card,
833 if (card->tx_dma_progress)
837 card->tx_dma_progress = 1;
838 status = lv1_net_start_tx_dma(bus_id(card), dev_id(card),
841 dev_info(ctodev(card), "lv1_net_start_txdma failed," \
856 struct gelic_card *card = netdev_card(netdev);
861 spin_lock_irqsave(&card->tx_lock, flags);
863 gelic_card_release_tx_chain(card, 0);
865 descr = gelic_card_get_next_tx_descr(card);
870 gelic_card_stop_queues(card);
871 spin_unlock_irqrestore(&card->tx_lock, flags);
875 result = gelic_descr_prepare_tx(card, descr, skb);
883 spin_unlock_irqrestore(&card->tx_lock, flags);
896 if (gelic_card_kick_txdma(card, descr)) {
902 gelic_descr_release_tx(card, descr);
903 gelic_descr_release_tx(card, descr->next);
904 card->tx_chain.tail = descr->next->next;
905 dev_info(ctodev(card), "%s: kick failure\n", __func__);
908 spin_unlock_irqrestore(&card->tx_lock, flags);
915 * @card: card structure
922 struct gelic_card *card,
932 dma_unmap_single(ctodev(card), be32_to_cpu(descr->buf_addr),
940 dev_info(ctodev(card), "buffer full %x %x %x\n",
947 * the card put 2 bytes vlan tag in front
954 if (card->rx_csum) {
973 * @card: card structure
980 static int gelic_card_decode_one_descr(struct gelic_card *card)
983 struct gelic_descr_chain *chain = &card->rx_chain;
998 dev_dbg(ctodev(card), "dormant descr? %p\n", descr);
1003 if (card->vlan_required) {
1008 if (card->vlan[i].rx == vid) {
1009 netdev = card->netdev[i];
1018 netdev = card->netdev[GELIC_PORT_ETHERNET_0];
1023 dev_info(ctodev(card), "dropping RX descriptor with state %x\n",
1039 dev_info(ctodev(card), "overlength frame\n");
1047 dev_dbg(ctodev(card), "RX descriptor with state %x\n",
1053 gelic_net_pass_skb_up(descr, card, netdev);
1069 gelic_descr_prepare_rx(card, descr);
1084 card->rx_dma_restart_required = 1;
1085 dev_dbg(ctodev(card), "reenable rx dma scheduled\n");
1101 struct gelic_card *card = container_of(napi, struct gelic_card, napi);
1105 if (!gelic_card_decode_one_descr(card))
1113 gelic_card_rx_irq_on(card);
1142 struct gelic_card *card = ptr;
1145 status = card->irq_status;
1150 status &= card->irq_mask;
1152 if (card->rx_dma_restart_required) {
1153 card->rx_dma_restart_required = 0;
1154 gelic_card_enable_rxdmac(card);
1158 gelic_card_rx_irq_off(card);
1159 napi_schedule(&card->napi);
1163 spin_lock_irqsave(&card->tx_lock, flags);
1164 card->tx_dma_progress = 0;
1165 gelic_card_release_tx_chain(card, 0);
1167 gelic_card_kick_txdma(card, card->tx_chain.tail);
1168 spin_unlock_irqrestore(&card->tx_lock, flags);
1173 gelic_card_get_ether_port_status(card, 1);
1178 gelic_wl_interrupt(card->netdev[GELIC_PORT_WIRELESS], status);
1193 struct gelic_card *card = netdev_card(netdev);
1195 gelic_card_set_irq_mask(card, 0);
1197 gelic_card_set_irq_mask(card, card->irq_mask);
1212 struct gelic_card *card = netdev_card(netdev);
1214 dev_dbg(ctodev(card), " -> %s %p\n", __func__, netdev);
1216 gelic_card_up(card);
1219 gelic_card_get_ether_port_status(card, 1);
1221 dev_dbg(ctodev(card), " <- %s\n", __func__);
1235 struct gelic_card *card = netdev_card(netdev);
1237 gelic_card_get_ether_port_status(card, 0);
1239 if (card->ether_port_status & GELIC_LV1_ETHER_FULL_DUPLEX)
1244 switch (card->ether_port_status & GELIC_LV1_ETHER_SPEED_MASK) {
1265 if (card->link_mode & GELIC_LV1_ETHER_AUTO_NEG) {
1279 struct gelic_card *card = netdev_card(netdev);
1307 ret = gelic_card_set_link_mode(card, mode);
1317 struct gelic_card *card = netdev_card(netdev);
1319 return card->rx_csum;
1324 struct gelic_card *card = netdev_card(netdev);
1326 card->rx_csum = data;
1345 struct gelic_card *card;
1355 card = netdev_card(netdev);
1357 status = lv1_net_control(bus_id(card), dev_id(card),
1368 status = lv1_net_control(bus_id(card), dev_id(card),
1381 status = lv1_net_control(bus_id(card), dev_id(card),
1392 status = lv1_net_control(bus_id(card), dev_id(card),
1431 struct gelic_card *card =
1433 struct net_device *netdev = card->netdev[GELIC_PORT_ETHERNET_0];
1435 dev_info(ctodev(card), "%s:Timed out. Restarting...\n", __func__);
1447 atomic_dec(&card->tx_timeout_task_counter);
1458 struct gelic_card *card;
1460 card = netdev_card(netdev);
1461 atomic_inc(&card->tx_timeout_task_counter);
1463 schedule_work(&card->tx_timeout_task);
1465 atomic_dec(&card->tx_timeout_task_counter);
1502 * @card: card structure
1510 struct gelic_card *card)
1517 status = lv1_net_control(bus_id(card), dev_id(card),
1522 dev_info(ctodev(card),
1529 if (card->vlan_required) {
1540 dev_err(ctodev(card), "%s:Couldn't register %s %d\n",
1544 dev_info(ctodev(card), "%s: MAC addr %pM\n",
1551 * gelic_alloc_card_net - allocates net_device and card structure
1553 * returns the card structure or NULL in case of errors
1555 * the card and net_device structures are linked to each other
1560 struct gelic_card *card;
1579 card = PTR_ALIGN(p, GELIC_ALIGN);
1580 card->unalign = p;
1587 kfree(card->unalign);
1594 port->card = card;
1598 card->netdev[GELIC_PORT_ETHERNET_0] = *netdev;
1600 INIT_WORK(&card->tx_timeout_task, gelic_net_tx_timeout_task);
1601 init_waitqueue_head(&card->waitq);
1602 atomic_set(&card->tx_timeout_task_counter, 0);
1603 mutex_init(&card->updown_lock);
1604 atomic_set(&card->users, 0);
1606 return card;
1609 static void __devinit gelic_card_get_vlan_info(struct gelic_card *card)
1630 status = lv1_net_control(bus_id(card), dev_id(card),
1636 dev_dbg(ctodev(card),
1639 card->vlan[i].tx = 0;
1640 card->vlan[i].rx = 0;
1643 card->vlan[i].tx = (u16)v1;
1646 status = lv1_net_control(bus_id(card), dev_id(card),
1652 dev_info(ctodev(card),
1655 card->vlan[i].tx = 0;
1656 card->vlan[i].rx = 0;
1659 card->vlan[i].rx = (u16)v1;
1661 dev_dbg(ctodev(card), "vlan_id[%d] tx=%02x rx=%02x\n",
1662 i, card->vlan[i].tx, card->vlan[i].rx);
1665 if (card->vlan[GELIC_PORT_ETHERNET_0].tx) {
1666 BUG_ON(!card->vlan[GELIC_PORT_WIRELESS].tx);
1667 card->vlan_required = 1;
1669 card->vlan_required = 0;
1673 card->vlan[GELIC_PORT_WIRELESS].tx = 0;
1674 card->vlan[GELIC_PORT_WIRELESS].rx = 0;
1677 dev_info(ctodev(card), "internal vlan %s\n",
1678 card->vlan_required? "enabled" : "disabled");
1685 struct gelic_card *card;
1707 /* alloc card/netdevice */
1708 card = gelic_alloc_card_net(&netdev);
1709 if (!card) {
1715 ps3_system_bus_set_drvdata(dev, card);
1716 card->dev = dev;
1719 gelic_card_get_vlan_info(card);
1721 card->link_mode = GELIC_LV1_ETHER_AUTO_NEG;
1724 result = lv1_net_set_interrupt_status_indicator(bus_id(card),
1725 dev_id(card),
1726 ps3_mm_phys_to_lpar(__pa(&card->irq_status)),
1738 &card->irq);
1741 dev_info(ctodev(card),
1747 result = request_irq(card->irq, gelic_card_interrupt,
1748 IRQF_DISABLED, netdev->name, card);
1751 dev_info(ctodev(card), "%s:request_irq failed (%d)\n",
1756 /* setup card structure */
1757 card->irq_mask = GELIC_CARD_RXINT | GELIC_CARD_TXINT |
1759 card->rx_csum = GELIC_CARD_RX_CSUM_DEFAULT;
1762 if (gelic_card_init_chain(card, &card->tx_chain,
1763 card->descr, GELIC_NET_TX_DESCRIPTORS))
1765 if (gelic_card_init_chain(card, &card->rx_chain,
1766 card->descr + GELIC_NET_TX_DESCRIPTORS,
1771 card->tx_top = card->tx_chain.head;
1772 card->rx_top = card->rx_chain.head;
1773 dev_dbg(ctodev(card), "descr rx %p, tx %p, size %#lx, num %#x\n",
1774 card->rx_top, card->tx_top, sizeof(struct gelic_descr),
1777 if (gelic_card_alloc_rx_skbs(card))
1780 spin_lock_init(&card->tx_lock);
1781 card->tx_dma_progress = 0;
1784 netdev->irq = card->irq;
1785 SET_NETDEV_DEV(netdev, &card->dev->core);
1786 gelic_ether_setup_netdev_ops(netdev, &card->napi);
1787 result = gelic_net_setup_netdev(netdev, card);
1795 if (gelic_wl_driver_probe(card)) {
1805 gelic_card_free_chain(card, card->rx_chain.head);
1807 gelic_card_free_chain(card, card->tx_chain.head);
1809 free_irq(card->irq, card);
1812 ps3_sb_event_receive_port_destroy(dev, card->irq);
1814 lv1_net_set_interrupt_status_indicator(bus_id(card),
1815 bus_id(card),
1835 struct gelic_card *card = ps3_system_bus_get_drvdata(dev);
1840 gelic_card_set_link_mode(card, GELIC_LV1_ETHER_AUTO_NEG);
1843 gelic_wl_driver_remove(card);
1846 gelic_card_set_irq_mask(card, 0);
1849 gelic_card_disable_rxdmac(card);
1850 gelic_card_disable_txdmac(card);
1853 gelic_card_release_tx_chain(card, 1);
1854 gelic_card_release_rx_chain(card);
1856 gelic_card_free_chain(card, card->tx_top);
1857 gelic_card_free_chain(card, card->rx_top);
1859 netdev0 = card->netdev[GELIC_PORT_ETHERNET_0];
1861 free_irq(card->irq, card);
1863 ps3_sb_event_receive_port_destroy(card->dev, card->irq);
1865 wait_event(card->waitq,
1866 atomic_read(&card->tx_timeout_task_counter) == 0);
1868 lv1_net_set_interrupt_status_indicator(bus_id(card), dev_id(card),