Lines Matching refs:rrpriv

91 	struct rr_private *rrpriv;  in rr_init_one()  local
106 rrpriv = netdev_priv(dev); in rr_init_one()
116 rrpriv->pci_dev = pdev; in rr_init_one()
118 spin_lock_init(&rrpriv->lock); in rr_init_one()
146 rrpriv->regs = pci_iomap(pdev, 0, 0x1000); in rr_init_one()
147 if (!rrpriv->regs) { in rr_init_one()
155 rrpriv->tx_ring = tmpptr; in rr_init_one()
156 rrpriv->tx_ring_dma = ring_dma; in rr_init_one()
164 rrpriv->rx_ring = tmpptr; in rr_init_one()
165 rrpriv->rx_ring_dma = ring_dma; in rr_init_one()
173 rrpriv->evt_ring = tmpptr; in rr_init_one()
174 rrpriv->evt_ring_dma = ring_dma; in rr_init_one()
185 writel(readl(&rrpriv->regs->HostCtrl) | NO_SWAP, in rr_init_one()
186 &rrpriv->regs->HostCtrl); in rr_init_one()
200 if (rrpriv->evt_ring) in rr_init_one()
201 pci_free_consistent(pdev, EVT_RING_SIZE, rrpriv->evt_ring, in rr_init_one()
202 rrpriv->evt_ring_dma); in rr_init_one()
203 if (rrpriv->rx_ring) in rr_init_one()
204 pci_free_consistent(pdev, RX_TOTAL_SIZE, rrpriv->rx_ring, in rr_init_one()
205 rrpriv->rx_ring_dma); in rr_init_one()
206 if (rrpriv->tx_ring) in rr_init_one()
207 pci_free_consistent(pdev, TX_TOTAL_SIZE, rrpriv->tx_ring, in rr_init_one()
208 rrpriv->tx_ring_dma); in rr_init_one()
209 if (rrpriv->regs) in rr_init_one()
210 pci_iounmap(pdev, rrpriv->regs); in rr_init_one()
248 static void rr_issue_cmd(struct rr_private *rrpriv, struct cmd *cmd) in rr_issue_cmd() argument
253 regs = rrpriv->regs; in rr_issue_cmd()
266 idx = rrpriv->info->cmd_ctrl.pi; in rr_issue_cmd()
272 rrpriv->info->cmd_ctrl.pi = idx; in rr_issue_cmd()
286 struct rr_private *rrpriv; in rr_reset() local
291 rrpriv = netdev_priv(dev); in rr_reset()
292 regs = rrpriv->regs; in rr_reset()
363 rrpriv->info->evt_ctrl.pi = 0; in rr_reset()
374 start_pc = rr_read_eeprom_word(rrpriv, in rr_reset()
396 static unsigned int rr_read_eeprom(struct rr_private *rrpriv, in rr_read_eeprom() argument
401 struct rr_regs __iomem *regs = rrpriv->regs; in rr_read_eeprom()
431 static u32 rr_read_eeprom_word(struct rr_private *rrpriv, in rr_read_eeprom_word() argument
436 if ((rr_read_eeprom(rrpriv, offset, in rr_read_eeprom_word()
448 static unsigned int write_eeprom(struct rr_private *rrpriv, in write_eeprom() argument
453 struct rr_regs __iomem *regs = rrpriv->regs; in write_eeprom()
502 struct rr_private *rrpriv; in rr_init() local
506 rrpriv = netdev_priv(dev); in rr_init()
507 regs = rrpriv->regs; in rr_init()
510 rrpriv->fw_rev = rev; in rr_init()
538 htons(rr_read_eeprom_word(rrpriv, offsetof(struct eeprom, manf.BoardULA))); in rr_init()
540 htonl(rr_read_eeprom_word(rrpriv, offsetof(struct eeprom, manf.BoardULA[4]))); in rr_init()
544 sram_size = rr_read_eeprom_word(rrpriv, 8); in rr_init()
553 struct rr_private *rrpriv; in rr_init1() local
561 rrpriv = netdev_priv(dev); in rr_init1()
562 regs = rrpriv->regs; in rr_init1()
564 spin_lock_irqsave(&rrpriv->lock, flags); in rr_init1()
573 spin_unlock_irqrestore(&rrpriv->lock, flags); in rr_init1()
578 set_rxaddr(regs, rrpriv->rx_ctrl_dma); in rr_init1()
579 set_infoaddr(regs, rrpriv->info_dma); in rr_init1()
581 rrpriv->info->evt_ctrl.entry_size = sizeof(struct event); in rr_init1()
582 rrpriv->info->evt_ctrl.entries = EVT_RING_ENTRIES; in rr_init1()
583 rrpriv->info->evt_ctrl.mode = 0; in rr_init1()
584 rrpriv->info->evt_ctrl.pi = 0; in rr_init1()
585 set_rraddr(&rrpriv->info->evt_ctrl.rngptr, rrpriv->evt_ring_dma); in rr_init1()
587 rrpriv->info->cmd_ctrl.entry_size = sizeof(struct cmd); in rr_init1()
588 rrpriv->info->cmd_ctrl.entries = CMD_RING_ENTRIES; in rr_init1()
589 rrpriv->info->cmd_ctrl.mode = 0; in rr_init1()
590 rrpriv->info->cmd_ctrl.pi = 15; in rr_init1()
597 rrpriv->tx_ring[i].size = 0; in rr_init1()
598 set_rraddr(&rrpriv->tx_ring[i].addr, 0); in rr_init1()
599 rrpriv->tx_skbuff[i] = NULL; in rr_init1()
601 rrpriv->info->tx_ctrl.entry_size = sizeof(struct tx_desc); in rr_init1()
602 rrpriv->info->tx_ctrl.entries = TX_RING_ENTRIES; in rr_init1()
603 rrpriv->info->tx_ctrl.mode = 0; in rr_init1()
604 rrpriv->info->tx_ctrl.pi = 0; in rr_init1()
605 set_rraddr(&rrpriv->info->tx_ctrl.rngptr, rrpriv->tx_ring_dma); in rr_init1()
613 rrpriv->tx_full = 0; in rr_init1()
614 rrpriv->cur_rx = 0; in rr_init1()
615 rrpriv->dirty_rx = rrpriv->dirty_tx = 0; in rr_init1()
629 rrpriv->fw_running = 0; in rr_init1()
636 spin_unlock_irqrestore(&rrpriv->lock, flags); in rr_init1()
642 rrpriv->rx_ring[i].mode = 0; in rr_init1()
650 rrpriv->rx_skbuff[i] = skb; in rr_init1()
651 addr = pci_map_single(rrpriv->pci_dev, skb->data, in rr_init1()
660 set_rraddr(&rrpriv->rx_ring[i].addr, addr); in rr_init1()
661 rrpriv->rx_ring[i].size = dev->mtu + HIPPI_HLEN; in rr_init1()
664 rrpriv->rx_ctrl[4].entry_size = sizeof(struct rx_desc); in rr_init1()
665 rrpriv->rx_ctrl[4].entries = RX_RING_ENTRIES; in rr_init1()
666 rrpriv->rx_ctrl[4].mode = 8; in rr_init1()
667 rrpriv->rx_ctrl[4].pi = 0; in rr_init1()
669 set_rraddr(&rrpriv->rx_ctrl[4].rngptr, rrpriv->rx_ring_dma); in rr_init1()
680 rr_issue_cmd(rrpriv, &cmd); in rr_init1()
686 while (time_before(jiffies, myjif) && !rrpriv->fw_running) in rr_init1()
699 struct sk_buff *skb = rrpriv->rx_skbuff[i]; in rr_init1()
702 pci_unmap_single(rrpriv->pci_dev, in rr_init1()
703 rrpriv->rx_ring[i].addr.addrlo, in rr_init1()
706 rrpriv->rx_ring[i].size = 0; in rr_init1()
707 set_rraddr(&rrpriv->rx_ring[i].addr, 0); in rr_init1()
709 rrpriv->rx_skbuff[i] = NULL; in rr_init1()
723 struct rr_private *rrpriv; in rr_handle_event() local
727 rrpriv = netdev_priv(dev); in rr_handle_event()
728 regs = rrpriv->regs; in rr_handle_event()
731 switch (rrpriv->evt_ring[eidx].code){ in rr_handle_event()
737 rrpriv->fw_running = 1; in rr_handle_event()
904 u16 index = rrpriv->evt_ring[eidx].index; in rr_handle_event()
907 rrpriv->rx_ring[index].mode |= in rr_handle_event()
913 dev->name, rrpriv->evt_ring[eidx].code); in rr_handle_event()
918 rrpriv->info->evt_ctrl.pi = eidx; in rr_handle_event()
926 struct rr_private *rrpriv = netdev_priv(dev); in rx_int() local
927 struct rr_regs __iomem *regs = rrpriv->regs; in rx_int()
933 desc = &(rrpriv->rx_ring[index]); in rx_int()
939 if ( (rrpriv->rx_ring[index].mode & PACKET_BAD) == PACKET_BAD){ in rx_int()
947 rx_skb = rrpriv->rx_skbuff[index]; in rx_int()
956 pci_dma_sync_single_for_cpu(rrpriv->pci_dev, in rx_int()
964 pci_dma_sync_single_for_device(rrpriv->pci_dev, in rx_int()
977 pci_unmap_single(rrpriv->pci_dev, in rx_int()
982 rrpriv->rx_skbuff[index] = newskb; in rx_int()
983 addr = pci_map_single(rrpriv->pci_dev, in rx_int()
1012 rrpriv->cur_rx = index; in rx_int()
1019 struct rr_private *rrpriv; in rr_interrupt() local
1024 rrpriv = netdev_priv(dev); in rr_interrupt()
1025 regs = rrpriv->regs; in rr_interrupt()
1030 spin_lock(&rrpriv->lock); in rr_interrupt()
1039 prodidx, rrpriv->info->evt_ctrl.pi); in rr_interrupt()
1047 eidx = rrpriv->info->evt_ctrl.pi; in rr_interrupt()
1051 rxindex = rrpriv->cur_rx; in rr_interrupt()
1055 txcon = rrpriv->dirty_tx; in rr_interrupt()
1061 if(rrpriv->tx_skbuff[txcon]){ in rr_interrupt()
1065 desc = &(rrpriv->tx_ring[txcon]); in rr_interrupt()
1066 skb = rrpriv->tx_skbuff[txcon]; in rr_interrupt()
1071 pci_unmap_single(rrpriv->pci_dev, in rr_interrupt()
1076 rrpriv->tx_skbuff[txcon] = NULL; in rr_interrupt()
1078 set_rraddr(&rrpriv->tx_ring[txcon].addr, 0); in rr_interrupt()
1085 rrpriv->dirty_tx = txcon; in rr_interrupt()
1086 if (rrpriv->tx_full && rr_if_busy(dev) && in rr_interrupt()
1087 (((rrpriv->info->tx_ctrl.pi + 1) % TX_RING_ENTRIES) in rr_interrupt()
1088 != rrpriv->dirty_tx)){ in rr_interrupt()
1089 rrpriv->tx_full = 0; in rr_interrupt()
1098 spin_unlock(&rrpriv->lock); in rr_interrupt()
1102 static inline void rr_raz_tx(struct rr_private *rrpriv, in rr_raz_tx() argument
1108 struct sk_buff *skb = rrpriv->tx_skbuff[i]; in rr_raz_tx()
1111 struct tx_desc *desc = &(rrpriv->tx_ring[i]); in rr_raz_tx()
1113 pci_unmap_single(rrpriv->pci_dev, desc->addr.addrlo, in rr_raz_tx()
1118 rrpriv->tx_skbuff[i] = NULL; in rr_raz_tx()
1124 static inline void rr_raz_rx(struct rr_private *rrpriv, in rr_raz_rx() argument
1130 struct sk_buff *skb = rrpriv->rx_skbuff[i]; in rr_raz_rx()
1133 struct rx_desc *desc = &(rrpriv->rx_ring[i]); in rr_raz_rx()
1135 pci_unmap_single(rrpriv->pci_dev, desc->addr.addrlo, in rr_raz_rx()
1140 rrpriv->rx_skbuff[i] = NULL; in rr_raz_rx()
1147 struct rr_private *rrpriv = from_timer(rrpriv, t, timer); in rr_timer() local
1148 struct net_device *dev = pci_get_drvdata(rrpriv->pci_dev); in rr_timer()
1149 struct rr_regs __iomem *regs = rrpriv->regs; in rr_timer()
1154 memset(rrpriv->rx_ctrl, 0, 256 * sizeof(struct ring_ctrl)); in rr_timer()
1155 memset(rrpriv->info, 0, sizeof(struct rr_info)); in rr_timer()
1158 rr_raz_tx(rrpriv, dev); in rr_timer()
1159 rr_raz_rx(rrpriv, dev); in rr_timer()
1162 spin_lock_irqsave(&rrpriv->lock, flags); in rr_timer()
1165 spin_unlock_irqrestore(&rrpriv->lock, flags); in rr_timer()
1168 rrpriv->timer.expires = RUN_AT(5*HZ); in rr_timer()
1169 add_timer(&rrpriv->timer); in rr_timer()
1175 struct rr_private *rrpriv = netdev_priv(dev); in rr_open() local
1176 struct pci_dev *pdev = rrpriv->pci_dev; in rr_open()
1182 regs = rrpriv->regs; in rr_open()
1184 if (rrpriv->fw_rev < 0x00020000) { in rr_open()
1191 rrpriv->rx_ctrl = pci_alloc_consistent(pdev, in rr_open()
1194 if (!rrpriv->rx_ctrl) { in rr_open()
1198 rrpriv->rx_ctrl_dma = dma_addr; in rr_open()
1200 rrpriv->info = pci_alloc_consistent(pdev, sizeof(struct rr_info), in rr_open()
1202 if (!rrpriv->info) { in rr_open()
1206 rrpriv->info_dma = dma_addr; in rr_open()
1209 spin_lock_irqsave(&rrpriv->lock, flags); in rr_open()
1212 spin_unlock_irqrestore(&rrpriv->lock, flags); in rr_open()
1226 timer_setup(&rrpriv->timer, rr_timer, 0); in rr_open()
1227 rrpriv->timer.expires = RUN_AT(5*HZ); /* 5 sec. watchdog */ in rr_open()
1228 add_timer(&rrpriv->timer); in rr_open()
1235 spin_lock_irqsave(&rrpriv->lock, flags); in rr_open()
1237 spin_unlock_irqrestore(&rrpriv->lock, flags); in rr_open()
1239 if (rrpriv->info) { in rr_open()
1240 pci_free_consistent(pdev, sizeof(struct rr_info), rrpriv->info, in rr_open()
1241 rrpriv->info_dma); in rr_open()
1242 rrpriv->info = NULL; in rr_open()
1244 if (rrpriv->rx_ctrl) { in rr_open()
1246 rrpriv->rx_ctrl, rrpriv->rx_ctrl_dma); in rr_open()
1247 rrpriv->rx_ctrl = NULL; in rr_open()
1258 struct rr_private *rrpriv; in rr_dump() local
1264 rrpriv = netdev_priv(dev); in rr_dump()
1265 regs = rrpriv->regs; in rr_dump()
1272 rrpriv->info->tx_ctrl.pi); in rr_dump()
1277 cons = rrpriv->dirty_tx; in rr_dump()
1281 if (rrpriv->tx_skbuff[index]){ in rr_dump()
1282 len = min_t(int, 0x80, rrpriv->tx_skbuff[index]->len); in rr_dump()
1283 …x %i is valid - dumping data (0x%x bytes - DMA len 0x%x)\n", index, len, rrpriv->tx_ring[index].si… in rr_dump()
1287 printk("%02x ", (unsigned char) rrpriv->tx_skbuff[index]->data[i]); in rr_dump()
1292 if (rrpriv->tx_skbuff[cons]){ in rr_dump()
1293 len = min_t(int, 0x80, rrpriv->tx_skbuff[cons]->len); in rr_dump()
1294 …%i is valid - dumping data (0x%x bytes - skbuff len 0x%x)\n", cons, len, rrpriv->tx_skbuff[cons]->… in rr_dump()
1296 rrpriv->tx_ring[cons].mode, in rr_dump()
1297 rrpriv->tx_ring[cons].size, in rr_dump()
1298 (unsigned long long) rrpriv->tx_ring[cons].addr.addrlo, in rr_dump()
1299 rrpriv->tx_skbuff[cons]->data, in rr_dump()
1300 (unsigned int)rrpriv->tx_skbuff[cons]->truesize); in rr_dump()
1304 printk("%02x ", (unsigned char)rrpriv->tx_ring[cons].size); in rr_dump()
1312 rrpriv->tx_ring[i].mode, in rr_dump()
1313 rrpriv->tx_ring[i].size, in rr_dump()
1314 (unsigned long long) rrpriv->tx_ring[i].addr.addrlo); in rr_dump()
1321 struct rr_private *rrpriv = netdev_priv(dev); in rr_close() local
1322 struct rr_regs __iomem *regs = rrpriv->regs; in rr_close()
1323 struct pci_dev *pdev = rrpriv->pci_dev; in rr_close()
1335 spin_lock_irqsave(&rrpriv->lock, flags); in rr_close()
1347 rrpriv->fw_running = 0; in rr_close()
1349 del_timer_sync(&rrpriv->timer); in rr_close()
1360 rrpriv->info->tx_ctrl.entries = 0; in rr_close()
1361 rrpriv->info->cmd_ctrl.pi = 0; in rr_close()
1362 rrpriv->info->evt_ctrl.pi = 0; in rr_close()
1363 rrpriv->rx_ctrl[4].entries = 0; in rr_close()
1365 rr_raz_tx(rrpriv, dev); in rr_close()
1366 rr_raz_rx(rrpriv, dev); in rr_close()
1369 rrpriv->rx_ctrl, rrpriv->rx_ctrl_dma); in rr_close()
1370 rrpriv->rx_ctrl = NULL; in rr_close()
1372 pci_free_consistent(pdev, sizeof(struct rr_info), rrpriv->info, in rr_close()
1373 rrpriv->info_dma); in rr_close()
1374 rrpriv->info = NULL; in rr_close()
1376 spin_unlock_irqrestore(&rrpriv->lock, flags); in rr_close()
1386 struct rr_private *rrpriv = netdev_priv(dev); in rr_start_xmit() local
1387 struct rr_regs __iomem *regs = rrpriv->regs; in rr_start_xmit()
1426 spin_lock_irqsave(&rrpriv->lock, flags); in rr_start_xmit()
1428 txctrl = &rrpriv->info->tx_ctrl; in rr_start_xmit()
1432 rrpriv->tx_skbuff[index] = skb; in rr_start_xmit()
1433 set_rraddr(&rrpriv->tx_ring[index].addr, pci_map_single( in rr_start_xmit()
1434 rrpriv->pci_dev, skb->data, len + 8, PCI_DMA_TODEVICE)); in rr_start_xmit()
1435 rrpriv->tx_ring[index].size = len + 8; /* include IFIELD */ in rr_start_xmit()
1436 rrpriv->tx_ring[index].mode = PACKET_START | PACKET_END; in rr_start_xmit()
1441 if (txctrl->pi == rrpriv->dirty_tx){ in rr_start_xmit()
1442 rrpriv->tx_full = 1; in rr_start_xmit()
1446 spin_unlock_irqrestore(&rrpriv->lock, flags); in rr_start_xmit()
1461 struct rr_private *rrpriv; in rr_load_firmware() local
1468 rrpriv = netdev_priv(dev); in rr_load_firmware()
1469 regs = rrpriv->regs; in rr_load_firmware()
1494 sram_size = rr_read_eeprom_word(rrpriv, 8); in rr_load_firmware()
1505 eptr = rr_read_eeprom_word(rrpriv, in rr_load_firmware()
1509 p2len = rr_read_eeprom_word(rrpriv, 0x83*4); in rr_load_firmware()
1511 p2size = rr_read_eeprom_word(rrpriv, 0x84*4); in rr_load_firmware()
1519 revision = rr_read_eeprom_word(rrpriv, in rr_load_firmware()
1528 nr_seg = rr_read_eeprom_word(rrpriv, eptr); in rr_load_firmware()
1535 sptr = rr_read_eeprom_word(rrpriv, eptr); in rr_load_firmware()
1537 len = rr_read_eeprom_word(rrpriv, eptr); in rr_load_firmware()
1539 segptr = rr_read_eeprom_word(rrpriv, eptr); in rr_load_firmware()
1547 tmp = rr_read_eeprom_word(rrpriv, segptr); in rr_load_firmware()
1566 struct rr_private *rrpriv; in rr_ioctl() local
1572 rrpriv = netdev_priv(dev); in rr_ioctl()
1584 if (rrpriv->fw_running){ in rr_ioctl()
1590 spin_lock_irqsave(&rrpriv->lock, flags); in rr_ioctl()
1591 i = rr_read_eeprom(rrpriv, 0, image, EEPROM_BYTES); in rr_ioctl()
1592 spin_unlock_irqrestore(&rrpriv->lock, flags); in rr_ioctl()
1621 if (rrpriv->fw_running){ in rr_ioctl()
1629 spin_lock_irqsave(&rrpriv->lock, flags); in rr_ioctl()
1630 error = write_eeprom(rrpriv, 0, image, EEPROM_BYTES); in rr_ioctl()
1635 i = rr_read_eeprom(rrpriv, 0, oldimage, EEPROM_BYTES); in rr_ioctl()
1636 spin_unlock_irqrestore(&rrpriv->lock, flags); in rr_ioctl()