Lines Matching refs:dev

174 	struct fwnet_device *dev;
177 /* guarded by dev->lock */
193 struct fwnet_device *dev;
249 net = neigh->dev;
271 memcpy(haddr, skb->dev->dev_addr, FWNET_ALEN);
450 /* caller must hold dev->lock */
451 static struct fwnet_peer *fwnet_peer_find_by_guid(struct fwnet_device *dev,
456 list_for_each_entry(peer, &dev->peer_list, peer_link)
463 /* caller must hold dev->lock */
464 static struct fwnet_peer *fwnet_peer_find_by_node_id(struct fwnet_device *dev,
469 list_for_each_entry(peer, &dev->peer_list, peer_link)
491 struct fwnet_device *dev;
506 dev = netdev_priv(net);
508 skb->dev = net;
515 guid = cpu_to_be64(dev->card->guid);
569 static int fwnet_incoming_packet(struct fwnet_device *dev, __be32 *buf, int len,
574 struct net_device *net = dev->netdev;
635 spin_lock_irqsave(&dev->lock, flags);
637 peer = fwnet_peer_find_by_node_id(dev, source_node_id, generation);
697 spin_unlock_irqrestore(&dev->lock, flags);
708 spin_unlock_irqrestore(&dev->lock, flags);
718 struct fwnet_device *dev = callback_data;
727 if (offset != dev->handler.offset)
731 else if (fwnet_incoming_packet(dev, payload, length,
733 dev_err(&dev->netdev->dev, "incoming packet failure\n");
760 struct fwnet_device *dev;
769 dev = data;
773 spin_lock_irqsave(&dev->lock, flags);
775 offset = dev->rcv_buffer_size * dev->broadcast_rcv_next_ptr;
776 buf_ptr = dev->broadcast_rcv_buffer_ptrs[dev->broadcast_rcv_next_ptr++];
777 if (dev->broadcast_rcv_next_ptr == dev->num_broadcast_rcv_ptrs)
778 dev->broadcast_rcv_next_ptr = 0;
780 spin_unlock_irqrestore(&dev->lock, flags);
789 fwnet_incoming_packet(dev, buf_ptr + 2,
794 packet.payload_length = dev->rcv_buffer_size;
801 spin_lock_irqsave(&dev->lock, flags);
803 retval = fw_iso_context_queue(dev->broadcast_rcv_context, &packet,
804 &dev->broadcast_rcv_buffer, offset);
806 spin_unlock_irqrestore(&dev->lock, flags);
809 fw_iso_context_queue_flush(dev->broadcast_rcv_context);
811 dev_err(&dev->netdev->dev, "requeue failed\n");
822 /* Caller must hold dev->lock. */
823 static void dec_queued_datagrams(struct fwnet_device *dev)
825 if (--dev->queued_datagrams == FWNET_MIN_QUEUED_DATAGRAMS)
826 netif_wake_queue(dev->netdev);
833 struct fwnet_device *dev = ptask->dev;
838 spin_lock_irqsave(&dev->lock, flags);
845 dec_queued_datagrams(dev);
848 dev->netdev->stats.tx_packets++;
849 dev->netdev->stats.tx_bytes += skb->len;
852 spin_unlock_irqrestore(&dev->lock, flags);
866 dev_err(&dev->netdev->dev,
910 struct fwnet_device *dev = ptask->dev;
914 spin_lock_irqsave(&dev->lock, flags);
922 dec_queued_datagrams(dev);
924 dev->netdev->stats.tx_dropped++;
925 dev->netdev->stats.tx_errors++;
927 spin_unlock_irqrestore(&dev->lock, flags);
944 dev_err(&ptask->dev->netdev->dev,
959 struct fwnet_device *dev;
965 dev = ptask->dev;
991 generation = dev->card->generation;
993 node_id = dev->card->node_id;
1011 fw_send_request(dev->card, &ptask->transaction,
1018 spin_lock_irqsave(&dev->lock, flags);
1025 dec_queued_datagrams(dev);
1027 spin_unlock_irqrestore(&dev->lock, flags);
1032 fw_send_request(dev->card, &ptask->transaction,
1037 spin_lock_irqsave(&dev->lock, flags);
1044 dec_queued_datagrams(dev);
1046 spin_unlock_irqrestore(&dev->lock, flags);
1048 netif_trans_update(dev->netdev);
1056 static void fwnet_fifo_stop(struct fwnet_device *dev)
1058 if (dev->local_fifo == FWNET_NO_FIFO_ADDR)
1061 fw_core_remove_address_handler(&dev->handler);
1062 dev->local_fifo = FWNET_NO_FIFO_ADDR;
1065 static int fwnet_fifo_start(struct fwnet_device *dev)
1069 if (dev->local_fifo != FWNET_NO_FIFO_ADDR)
1072 dev->handler.length = 4096;
1073 dev->handler.address_callback = fwnet_receive_packet;
1074 dev->handler.callback_data = dev;
1076 retval = fw_core_add_address_handler(&dev->handler,
1081 dev->local_fifo = dev->handler.offset;
1086 static void __fwnet_broadcast_stop(struct fwnet_device *dev)
1090 if (dev->broadcast_state != FWNET_BROADCAST_ERROR) {
1092 kunmap(dev->broadcast_rcv_buffer.pages[u]);
1093 fw_iso_buffer_destroy(&dev->broadcast_rcv_buffer, dev->card);
1095 if (dev->broadcast_rcv_context) {
1096 fw_iso_context_destroy(dev->broadcast_rcv_context);
1097 dev->broadcast_rcv_context = NULL;
1099 kfree(dev->broadcast_rcv_buffer_ptrs);
1100 dev->broadcast_rcv_buffer_ptrs = NULL;
1101 dev->broadcast_state = FWNET_BROADCAST_ERROR;
1104 static void fwnet_broadcast_stop(struct fwnet_device *dev)
1106 if (dev->broadcast_state == FWNET_BROADCAST_ERROR)
1108 fw_iso_context_stop(dev->broadcast_rcv_context);
1109 __fwnet_broadcast_stop(dev);
1112 static int fwnet_broadcast_start(struct fwnet_device *dev)
1123 if (dev->broadcast_state != FWNET_BROADCAST_ERROR)
1126 max_receive = 1U << (dev->card->max_receive + 1);
1134 dev->broadcast_rcv_buffer_ptrs = ptrptr;
1136 context = fw_iso_context_create(dev->card, FW_ISO_CONTEXT_RECEIVE,
1138 dev->card->link_speed, 8,
1139 fwnet_receive_broadcast, dev);
1145 retval = fw_iso_buffer_init(&dev->broadcast_rcv_buffer, dev->card,
1150 dev->broadcast_state = FWNET_BROADCAST_STOPPED;
1156 ptr = kmap(dev->broadcast_rcv_buffer.pages[u]);
1160 dev->broadcast_rcv_context = context;
1172 &dev->broadcast_rcv_buffer, offset);
1178 dev->num_broadcast_rcv_ptrs = num_packets;
1179 dev->rcv_buffer_size = max_receive;
1180 dev->broadcast_rcv_next_ptr = 0U;
1187 dev->broadcast_xmt_max_payload = IEEE1394_MAX_PAYLOAD_S100
1189 dev->broadcast_state = FWNET_BROADCAST_RUNNING;
1194 __fwnet_broadcast_stop(dev);
1198 static void set_carrier_state(struct fwnet_device *dev)
1200 if (dev->peer_count > 1)
1201 netif_carrier_on(dev->netdev);
1203 netif_carrier_off(dev->netdev);
1209 struct fwnet_device *dev = netdev_priv(net);
1212 ret = fwnet_broadcast_start(dev);
1218 spin_lock_irq(&dev->lock);
1219 set_carrier_state(dev);
1220 spin_unlock_irq(&dev->lock);
1228 struct fwnet_device *dev = netdev_priv(net);
1231 fwnet_broadcast_stop(dev);
1239 struct fwnet_device *dev = netdev_priv(net);
1249 spin_lock_irqsave(&dev->lock, flags);
1252 if (netif_queue_stopped(dev->netdev)) {
1253 spin_unlock_irqrestore(&dev->lock, flags);
1292 max_payload = dev->broadcast_xmt_max_payload;
1293 datagram_label_ptr = &dev->broadcast_xmt_datagramlabel;
1304 peer = fwnet_peer_find_by_guid(dev, be64_to_cpu(guid));
1322 ptask->dev = dev;
1340 if (++dev->queued_datagrams == FWNET_MAX_QUEUED_DATAGRAMS)
1341 netif_stop_queue(dev->netdev);
1343 spin_unlock_irqrestore(&dev->lock, flags);
1353 spin_unlock_irqrestore(&dev->lock, flags);
1401 struct fwnet_device *dev;
1403 list_for_each_entry(dev, &fwnet_device_list, dev_link)
1404 if (dev->card == card)
1405 return dev;
1410 static int fwnet_add_peer(struct fwnet_device *dev,
1421 peer->dev = dev;
1433 spin_lock_irq(&dev->lock);
1434 list_add_tail(&peer->peer_link, &dev->peer_list);
1435 dev->peer_count++;
1436 set_carrier_state(dev);
1437 spin_unlock_irq(&dev->lock);
1449 struct fwnet_device *dev;
1455 dev = fwnet_dev_find(card);
1456 if (dev) {
1457 net = dev->netdev;
1461 net = alloc_netdev(sizeof(*dev), "firewire%d", NET_NAME_UNKNOWN,
1470 dev = netdev_priv(net);
1472 spin_lock_init(&dev->lock);
1473 dev->broadcast_state = FWNET_BROADCAST_ERROR;
1474 dev->broadcast_rcv_context = NULL;
1475 dev->broadcast_xmt_max_payload = 0;
1476 dev->broadcast_xmt_datagramlabel = 0;
1477 dev->local_fifo = FWNET_NO_FIFO_ADDR;
1478 dev->queued_datagrams = 0;
1479 INIT_LIST_HEAD(&dev->peer_list);
1480 dev->card = card;
1481 dev->netdev = net;
1483 ret = fwnet_fifo_start(dev);
1486 dev->local_fifo = dev->handler.offset;
1500 ha->uc.max_rec = dev->card->max_receive;
1501 ha->uc.sspd = dev->card->link_speed;
1502 put_unaligned_be16(dev->local_fifo >> 32, &ha->uc.fifo_hi);
1503 put_unaligned_be32(dev->local_fifo & 0xffffffff, &ha->uc.fifo_lo);
1511 list_add_tail(&dev->dev_link, &fwnet_device_list);
1512 dev_notice(&net->dev, "IP over IEEE 1394 on card %s\n",
1515 ret = fwnet_add_peer(dev, unit, device);
1518 list_del(&dev->dev_link);
1520 fwnet_fifo_stop(dev);
1541 spin_lock_irq(&peer->dev->lock);
1544 spin_unlock_irq(&peer->dev->lock);
1547 static void fwnet_remove_peer(struct fwnet_peer *peer, struct fwnet_device *dev)
1551 spin_lock_irq(&dev->lock);
1553 dev->peer_count--;
1554 set_carrier_state(dev);
1555 spin_unlock_irq(&dev->lock);
1566 struct fwnet_device *dev = peer->dev;
1572 net = dev->netdev;
1574 fwnet_remove_peer(peer, dev);
1576 if (list_empty(&dev->peer_list)) {
1579 fwnet_fifo_stop(dev);
1581 for (i = 0; dev->queued_datagrams && i < 5; i++)
1583 WARN_ON(dev->queued_datagrams);
1584 list_del(&dev->dev_link);