Lines Matching refs:rrpriv
97 struct rr_private *rrpriv; in rr_init_one() local
112 rrpriv = netdev_priv(dev); in rr_init_one()
123 rrpriv->pci_dev = pdev; in rr_init_one()
125 spin_lock_init(&rrpriv->lock); in rr_init_one()
156 rrpriv->regs = ioremap(dev->base_addr, 0x1000); in rr_init_one()
158 if (!rrpriv->regs){ in rr_init_one()
166 rrpriv->tx_ring = tmpptr; in rr_init_one()
167 rrpriv->tx_ring_dma = ring_dma; in rr_init_one()
175 rrpriv->rx_ring = tmpptr; in rr_init_one()
176 rrpriv->rx_ring_dma = ring_dma; in rr_init_one()
184 rrpriv->evt_ring = tmpptr; in rr_init_one()
185 rrpriv->evt_ring_dma = ring_dma; in rr_init_one()
196 writel(readl(&rrpriv->regs->HostCtrl) | NO_SWAP, in rr_init_one()
197 &rrpriv->regs->HostCtrl); in rr_init_one()
213 if (rrpriv->rx_ring) in rr_init_one()
214 pci_free_consistent(pdev, RX_TOTAL_SIZE, rrpriv->rx_ring, in rr_init_one()
215 rrpriv->rx_ring_dma); in rr_init_one()
216 if (rrpriv->tx_ring) in rr_init_one()
217 pci_free_consistent(pdev, TX_TOTAL_SIZE, rrpriv->tx_ring, in rr_init_one()
218 rrpriv->tx_ring_dma); in rr_init_one()
219 if (rrpriv->regs) in rr_init_one()
220 iounmap(rrpriv->regs); in rr_init_one()
264 static void rr_issue_cmd(struct rr_private *rrpriv, struct cmd *cmd) in rr_issue_cmd() argument
269 regs = rrpriv->regs; in rr_issue_cmd()
282 idx = rrpriv->info->cmd_ctrl.pi; in rr_issue_cmd()
288 rrpriv->info->cmd_ctrl.pi = idx; in rr_issue_cmd()
302 struct rr_private *rrpriv; in rr_reset() local
307 rrpriv = netdev_priv(dev); in rr_reset()
308 regs = rrpriv->regs; in rr_reset()
379 rrpriv->info->evt_ctrl.pi = 0; in rr_reset()
390 start_pc = rr_read_eeprom_word(rrpriv, in rr_reset()
412 static unsigned int rr_read_eeprom(struct rr_private *rrpriv, in rr_read_eeprom() argument
417 struct rr_regs __iomem *regs = rrpriv->regs; in rr_read_eeprom()
447 static u32 rr_read_eeprom_word(struct rr_private *rrpriv, in rr_read_eeprom_word() argument
452 if ((rr_read_eeprom(rrpriv, offset, in rr_read_eeprom_word()
464 static unsigned int write_eeprom(struct rr_private *rrpriv, in write_eeprom() argument
469 struct rr_regs __iomem *regs = rrpriv->regs; in write_eeprom()
518 struct rr_private *rrpriv; in rr_init() local
522 rrpriv = netdev_priv(dev); in rr_init()
523 regs = rrpriv->regs; in rr_init()
526 rrpriv->fw_rev = rev; in rr_init()
554 htons(rr_read_eeprom_word(rrpriv, offsetof(struct eeprom, manf.BoardULA))); in rr_init()
556 htonl(rr_read_eeprom_word(rrpriv, offsetof(struct eeprom, manf.BoardULA[4]))); in rr_init()
560 sram_size = rr_read_eeprom_word(rrpriv, 8); in rr_init()
569 struct rr_private *rrpriv; in rr_init1() local
577 rrpriv = netdev_priv(dev); in rr_init1()
578 regs = rrpriv->regs; in rr_init1()
580 spin_lock_irqsave(&rrpriv->lock, flags); in rr_init1()
589 spin_unlock_irqrestore(&rrpriv->lock, flags); in rr_init1()
594 set_rxaddr(regs, rrpriv->rx_ctrl_dma); in rr_init1()
595 set_infoaddr(regs, rrpriv->info_dma); in rr_init1()
597 rrpriv->info->evt_ctrl.entry_size = sizeof(struct event); in rr_init1()
598 rrpriv->info->evt_ctrl.entries = EVT_RING_ENTRIES; in rr_init1()
599 rrpriv->info->evt_ctrl.mode = 0; in rr_init1()
600 rrpriv->info->evt_ctrl.pi = 0; in rr_init1()
601 set_rraddr(&rrpriv->info->evt_ctrl.rngptr, rrpriv->evt_ring_dma); in rr_init1()
603 rrpriv->info->cmd_ctrl.entry_size = sizeof(struct cmd); in rr_init1()
604 rrpriv->info->cmd_ctrl.entries = CMD_RING_ENTRIES; in rr_init1()
605 rrpriv->info->cmd_ctrl.mode = 0; in rr_init1()
606 rrpriv->info->cmd_ctrl.pi = 15; in rr_init1()
613 rrpriv->tx_ring[i].size = 0; in rr_init1()
614 set_rraddr(&rrpriv->tx_ring[i].addr, 0); in rr_init1()
615 rrpriv->tx_skbuff[i] = NULL; in rr_init1()
617 rrpriv->info->tx_ctrl.entry_size = sizeof(struct tx_desc); in rr_init1()
618 rrpriv->info->tx_ctrl.entries = TX_RING_ENTRIES; in rr_init1()
619 rrpriv->info->tx_ctrl.mode = 0; in rr_init1()
620 rrpriv->info->tx_ctrl.pi = 0; in rr_init1()
621 set_rraddr(&rrpriv->info->tx_ctrl.rngptr, rrpriv->tx_ring_dma); in rr_init1()
629 rrpriv->tx_full = 0; in rr_init1()
630 rrpriv->cur_rx = 0; in rr_init1()
631 rrpriv->dirty_rx = rrpriv->dirty_tx = 0; in rr_init1()
645 rrpriv->fw_running = 0; in rr_init1()
652 spin_unlock_irqrestore(&rrpriv->lock, flags); in rr_init1()
658 rrpriv->rx_ring[i].mode = 0; in rr_init1()
666 rrpriv->rx_skbuff[i] = skb; in rr_init1()
667 addr = pci_map_single(rrpriv->pci_dev, skb->data, in rr_init1()
676 set_rraddr(&rrpriv->rx_ring[i].addr, addr); in rr_init1()
677 rrpriv->rx_ring[i].size = dev->mtu + HIPPI_HLEN; in rr_init1()
680 rrpriv->rx_ctrl[4].entry_size = sizeof(struct rx_desc); in rr_init1()
681 rrpriv->rx_ctrl[4].entries = RX_RING_ENTRIES; in rr_init1()
682 rrpriv->rx_ctrl[4].mode = 8; in rr_init1()
683 rrpriv->rx_ctrl[4].pi = 0; in rr_init1()
685 set_rraddr(&rrpriv->rx_ctrl[4].rngptr, rrpriv->rx_ring_dma); in rr_init1()
696 rr_issue_cmd(rrpriv, &cmd); in rr_init1()
702 while (time_before(jiffies, myjif) && !rrpriv->fw_running) in rr_init1()
715 struct sk_buff *skb = rrpriv->rx_skbuff[i]; in rr_init1()
718 pci_unmap_single(rrpriv->pci_dev, in rr_init1()
719 rrpriv->rx_ring[i].addr.addrlo, in rr_init1()
722 rrpriv->rx_ring[i].size = 0; in rr_init1()
723 set_rraddr(&rrpriv->rx_ring[i].addr, 0); in rr_init1()
725 rrpriv->rx_skbuff[i] = NULL; in rr_init1()
739 struct rr_private *rrpriv; in rr_handle_event() local
743 rrpriv = netdev_priv(dev); in rr_handle_event()
744 regs = rrpriv->regs; in rr_handle_event()
747 switch (rrpriv->evt_ring[eidx].code){ in rr_handle_event()
753 rrpriv->fw_running = 1; in rr_handle_event()
920 u16 index = rrpriv->evt_ring[eidx].index; in rr_handle_event()
923 rrpriv->rx_ring[index].mode |= in rr_handle_event()
929 dev->name, rrpriv->evt_ring[eidx].code); in rr_handle_event()
934 rrpriv->info->evt_ctrl.pi = eidx; in rr_handle_event()
942 struct rr_private *rrpriv = netdev_priv(dev); in rx_int() local
943 struct rr_regs __iomem *regs = rrpriv->regs; in rx_int()
949 desc = &(rrpriv->rx_ring[index]); in rx_int()
955 if ( (rrpriv->rx_ring[index].mode & PACKET_BAD) == PACKET_BAD){ in rx_int()
963 rx_skb = rrpriv->rx_skbuff[index]; in rx_int()
972 pci_dma_sync_single_for_cpu(rrpriv->pci_dev, in rx_int()
980 pci_dma_sync_single_for_device(rrpriv->pci_dev, in rx_int()
993 pci_unmap_single(rrpriv->pci_dev, in rx_int()
998 rrpriv->rx_skbuff[index] = newskb; in rx_int()
999 addr = pci_map_single(rrpriv->pci_dev, in rx_int()
1028 rrpriv->cur_rx = index; in rx_int()
1035 struct rr_private *rrpriv; in rr_interrupt() local
1040 rrpriv = netdev_priv(dev); in rr_interrupt()
1041 regs = rrpriv->regs; in rr_interrupt()
1046 spin_lock(&rrpriv->lock); in rr_interrupt()
1055 prodidx, rrpriv->info->evt_ctrl.pi); in rr_interrupt()
1063 eidx = rrpriv->info->evt_ctrl.pi; in rr_interrupt()
1067 rxindex = rrpriv->cur_rx; in rr_interrupt()
1071 txcon = rrpriv->dirty_tx; in rr_interrupt()
1077 if(rrpriv->tx_skbuff[txcon]){ in rr_interrupt()
1081 desc = &(rrpriv->tx_ring[txcon]); in rr_interrupt()
1082 skb = rrpriv->tx_skbuff[txcon]; in rr_interrupt()
1087 pci_unmap_single(rrpriv->pci_dev, in rr_interrupt()
1092 rrpriv->tx_skbuff[txcon] = NULL; in rr_interrupt()
1094 set_rraddr(&rrpriv->tx_ring[txcon].addr, 0); in rr_interrupt()
1101 rrpriv->dirty_tx = txcon; in rr_interrupt()
1102 if (rrpriv->tx_full && rr_if_busy(dev) && in rr_interrupt()
1103 (((rrpriv->info->tx_ctrl.pi + 1) % TX_RING_ENTRIES) in rr_interrupt()
1104 != rrpriv->dirty_tx)){ in rr_interrupt()
1105 rrpriv->tx_full = 0; in rr_interrupt()
1114 spin_unlock(&rrpriv->lock); in rr_interrupt()
1118 static inline void rr_raz_tx(struct rr_private *rrpriv, in rr_raz_tx() argument
1124 struct sk_buff *skb = rrpriv->tx_skbuff[i]; in rr_raz_tx()
1127 struct tx_desc *desc = &(rrpriv->tx_ring[i]); in rr_raz_tx()
1129 pci_unmap_single(rrpriv->pci_dev, desc->addr.addrlo, in rr_raz_tx()
1134 rrpriv->tx_skbuff[i] = NULL; in rr_raz_tx()
1140 static inline void rr_raz_rx(struct rr_private *rrpriv, in rr_raz_rx() argument
1146 struct sk_buff *skb = rrpriv->rx_skbuff[i]; in rr_raz_rx()
1149 struct rx_desc *desc = &(rrpriv->rx_ring[i]); in rr_raz_rx()
1151 pci_unmap_single(rrpriv->pci_dev, desc->addr.addrlo, in rr_raz_rx()
1156 rrpriv->rx_skbuff[i] = NULL; in rr_raz_rx()
1164 struct rr_private *rrpriv = netdev_priv(dev); in rr_timer() local
1165 struct rr_regs __iomem *regs = rrpriv->regs; in rr_timer()
1170 memset(rrpriv->rx_ctrl, 0, 256 * sizeof(struct ring_ctrl)); in rr_timer()
1171 memset(rrpriv->info, 0, sizeof(struct rr_info)); in rr_timer()
1174 rr_raz_tx(rrpriv, dev); in rr_timer()
1175 rr_raz_rx(rrpriv, dev); in rr_timer()
1178 spin_lock_irqsave(&rrpriv->lock, flags); in rr_timer()
1181 spin_unlock_irqrestore(&rrpriv->lock, flags); in rr_timer()
1184 rrpriv->timer.expires = RUN_AT(5*HZ); in rr_timer()
1185 add_timer(&rrpriv->timer); in rr_timer()
1191 struct rr_private *rrpriv = netdev_priv(dev); in rr_open() local
1192 struct pci_dev *pdev = rrpriv->pci_dev; in rr_open()
1198 regs = rrpriv->regs; in rr_open()
1200 if (rrpriv->fw_rev < 0x00020000) { in rr_open()
1207 rrpriv->rx_ctrl = pci_alloc_consistent(pdev, in rr_open()
1210 if (!rrpriv->rx_ctrl) { in rr_open()
1214 rrpriv->rx_ctrl_dma = dma_addr; in rr_open()
1215 memset(rrpriv->rx_ctrl, 0, 256*sizeof(struct ring_ctrl)); in rr_open()
1217 rrpriv->info = pci_alloc_consistent(pdev, sizeof(struct rr_info), in rr_open()
1219 if (!rrpriv->info) { in rr_open()
1223 rrpriv->info_dma = dma_addr; in rr_open()
1224 memset(rrpriv->info, 0, sizeof(struct rr_info)); in rr_open()
1227 spin_lock_irqsave(&rrpriv->lock, flags); in rr_open()
1230 spin_unlock_irqrestore(&rrpriv->lock, flags); in rr_open()
1244 init_timer(&rrpriv->timer); in rr_open()
1245 rrpriv->timer.expires = RUN_AT(5*HZ); /* 5 sec. watchdog */ in rr_open()
1246 rrpriv->timer.data = (unsigned long)dev; in rr_open()
1247 rrpriv->timer.function = &rr_timer; /* timer handler */ in rr_open()
1248 add_timer(&rrpriv->timer); in rr_open()
1255 spin_lock_irqsave(&rrpriv->lock, flags); in rr_open()
1257 spin_unlock_irqrestore(&rrpriv->lock, flags); in rr_open()
1259 if (rrpriv->info) { in rr_open()
1260 pci_free_consistent(pdev, sizeof(struct rr_info), rrpriv->info, in rr_open()
1261 rrpriv->info_dma); in rr_open()
1262 rrpriv->info = NULL; in rr_open()
1264 if (rrpriv->rx_ctrl) { in rr_open()
1266 rrpriv->rx_ctrl, rrpriv->rx_ctrl_dma); in rr_open()
1267 rrpriv->rx_ctrl = NULL; in rr_open()
1278 struct rr_private *rrpriv; in rr_dump() local
1284 rrpriv = netdev_priv(dev); in rr_dump()
1285 regs = rrpriv->regs; in rr_dump()
1292 rrpriv->info->tx_ctrl.pi); in rr_dump()
1297 cons = rrpriv->dirty_tx; in rr_dump()
1301 if (rrpriv->tx_skbuff[index]){ in rr_dump()
1302 len = min_t(int, 0x80, rrpriv->tx_skbuff[index]->len); in rr_dump()
1303 …x %i is valid - dumping data (0x%x bytes - DMA len 0x%x)\n", index, len, rrpriv->tx_ring[index].si… in rr_dump()
1307 printk("%02x ", (unsigned char) rrpriv->tx_skbuff[index]->data[i]); in rr_dump()
1312 if (rrpriv->tx_skbuff[cons]){ in rr_dump()
1313 len = min_t(int, 0x80, rrpriv->tx_skbuff[cons]->len); in rr_dump()
1314 …%i is valid - dumping data (0x%x bytes - skbuff len 0x%x)\n", cons, len, rrpriv->tx_skbuff[cons]->… in rr_dump()
1316 rrpriv->tx_ring[cons].mode, in rr_dump()
1317 rrpriv->tx_ring[cons].size, in rr_dump()
1318 (unsigned long long) rrpriv->tx_ring[cons].addr.addrlo, in rr_dump()
1319 (unsigned long)rrpriv->tx_skbuff[cons]->data, in rr_dump()
1320 (unsigned int)rrpriv->tx_skbuff[cons]->truesize); in rr_dump()
1324 printk("%02x ", (unsigned char)rrpriv->tx_ring[cons].size); in rr_dump()
1332 rrpriv->tx_ring[i].mode, in rr_dump()
1333 rrpriv->tx_ring[i].size, in rr_dump()
1334 (unsigned long long) rrpriv->tx_ring[i].addr.addrlo); in rr_dump()
1341 struct rr_private *rrpriv; in rr_close() local
1349 rrpriv = netdev_priv(dev); in rr_close()
1350 regs = rrpriv->regs; in rr_close()
1356 spin_lock_irqsave(&rrpriv->lock, flags); in rr_close()
1368 rrpriv->fw_running = 0; in rr_close()
1370 del_timer_sync(&rrpriv->timer); in rr_close()
1381 rrpriv->info->tx_ctrl.entries = 0; in rr_close()
1382 rrpriv->info->cmd_ctrl.pi = 0; in rr_close()
1383 rrpriv->info->evt_ctrl.pi = 0; in rr_close()
1384 rrpriv->rx_ctrl[4].entries = 0; in rr_close()
1386 rr_raz_tx(rrpriv, dev); in rr_close()
1387 rr_raz_rx(rrpriv, dev); in rr_close()
1389 pci_free_consistent(rrpriv->pci_dev, 256 * sizeof(struct ring_ctrl), in rr_close()
1390 rrpriv->rx_ctrl, rrpriv->rx_ctrl_dma); in rr_close()
1391 rrpriv->rx_ctrl = NULL; in rr_close()
1393 pci_free_consistent(rrpriv->pci_dev, sizeof(struct rr_info), in rr_close()
1394 rrpriv->info, rrpriv->info_dma); in rr_close()
1395 rrpriv->info = NULL; in rr_close()
1398 spin_unlock_irqrestore(&rrpriv->lock, flags); in rr_close()
1406 struct rr_private *rrpriv = netdev_priv(dev); in rr_start_xmit() local
1407 struct rr_regs __iomem *regs = rrpriv->regs; in rr_start_xmit()
1446 spin_lock_irqsave(&rrpriv->lock, flags); in rr_start_xmit()
1448 txctrl = &rrpriv->info->tx_ctrl; in rr_start_xmit()
1452 rrpriv->tx_skbuff[index] = skb; in rr_start_xmit()
1453 set_rraddr(&rrpriv->tx_ring[index].addr, pci_map_single( in rr_start_xmit()
1454 rrpriv->pci_dev, skb->data, len + 8, PCI_DMA_TODEVICE)); in rr_start_xmit()
1455 rrpriv->tx_ring[index].size = len + 8; /* include IFIELD */ in rr_start_xmit()
1456 rrpriv->tx_ring[index].mode = PACKET_START | PACKET_END; in rr_start_xmit()
1461 if (txctrl->pi == rrpriv->dirty_tx){ in rr_start_xmit()
1462 rrpriv->tx_full = 1; in rr_start_xmit()
1466 spin_unlock_irqrestore(&rrpriv->lock, flags); in rr_start_xmit()
1482 struct rr_private *rrpriv; in rr_load_firmware() local
1489 rrpriv = netdev_priv(dev); in rr_load_firmware()
1490 regs = rrpriv->regs; in rr_load_firmware()
1515 sram_size = rr_read_eeprom_word(rrpriv, 8); in rr_load_firmware()
1526 eptr = rr_read_eeprom_word(rrpriv, in rr_load_firmware()
1530 p2len = rr_read_eeprom_word(rrpriv, 0x83*4); in rr_load_firmware()
1532 p2size = rr_read_eeprom_word(rrpriv, 0x84*4); in rr_load_firmware()
1540 revision = rr_read_eeprom_word(rrpriv, in rr_load_firmware()
1549 nr_seg = rr_read_eeprom_word(rrpriv, eptr); in rr_load_firmware()
1556 sptr = rr_read_eeprom_word(rrpriv, eptr); in rr_load_firmware()
1558 len = rr_read_eeprom_word(rrpriv, eptr); in rr_load_firmware()
1560 segptr = rr_read_eeprom_word(rrpriv, eptr); in rr_load_firmware()
1568 tmp = rr_read_eeprom_word(rrpriv, segptr); in rr_load_firmware()
1587 struct rr_private *rrpriv; in rr_ioctl() local
1593 rrpriv = netdev_priv(dev); in rr_ioctl()
1609 if (rrpriv->fw_running){ in rr_ioctl()
1615 spin_lock_irqsave(&rrpriv->lock, flags); in rr_ioctl()
1616 i = rr_read_eeprom(rrpriv, 0, image, EEPROM_BYTES); in rr_ioctl()
1617 spin_unlock_irqrestore(&rrpriv->lock, flags); in rr_ioctl()
1651 if (rrpriv->fw_running){ in rr_ioctl()
1659 spin_lock_irqsave(&rrpriv->lock, flags); in rr_ioctl()
1660 error = write_eeprom(rrpriv, 0, image, EEPROM_BYTES); in rr_ioctl()
1665 i = rr_read_eeprom(rrpriv, 0, oldimage, EEPROM_BYTES); in rr_ioctl()
1666 spin_unlock_irqrestore(&rrpriv->lock, flags); in rr_ioctl()