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()
156 rrpriv->tx_ring = tmpptr; in rr_init_one()
157 rrpriv->tx_ring_dma = ring_dma; in rr_init_one()
166 rrpriv->rx_ring = tmpptr; in rr_init_one()
167 rrpriv->rx_ring_dma = ring_dma; in rr_init_one()
176 rrpriv->evt_ring = tmpptr; in rr_init_one()
177 rrpriv->evt_ring_dma = ring_dma; in rr_init_one()
188 writel(readl(&rrpriv->regs->HostCtrl) | NO_SWAP, in rr_init_one()
189 &rrpriv->regs->HostCtrl); in rr_init_one()
203 if (rrpriv->evt_ring) in rr_init_one()
204 dma_free_coherent(&pdev->dev, EVT_RING_SIZE, rrpriv->evt_ring, in rr_init_one()
205 rrpriv->evt_ring_dma); in rr_init_one()
206 if (rrpriv->rx_ring) in rr_init_one()
207 dma_free_coherent(&pdev->dev, RX_TOTAL_SIZE, rrpriv->rx_ring, in rr_init_one()
208 rrpriv->rx_ring_dma); in rr_init_one()
209 if (rrpriv->tx_ring) in rr_init_one()
210 dma_free_coherent(&pdev->dev, TX_TOTAL_SIZE, rrpriv->tx_ring, in rr_init_one()
211 rrpriv->tx_ring_dma); in rr_init_one()
212 if (rrpriv->regs) in rr_init_one()
213 pci_iounmap(pdev, rrpriv->regs); in rr_init_one()
252 static void rr_issue_cmd(struct rr_private *rrpriv, struct cmd *cmd) in rr_issue_cmd() argument
257 regs = rrpriv->regs; in rr_issue_cmd()
270 idx = rrpriv->info->cmd_ctrl.pi; in rr_issue_cmd()
276 rrpriv->info->cmd_ctrl.pi = idx; in rr_issue_cmd()
290 struct rr_private *rrpriv; in rr_reset() local
295 rrpriv = netdev_priv(dev); in rr_reset()
296 regs = rrpriv->regs; in rr_reset()
367 rrpriv->info->evt_ctrl.pi = 0; in rr_reset()
378 start_pc = rr_read_eeprom_word(rrpriv, in rr_reset()
400 static unsigned int rr_read_eeprom(struct rr_private *rrpriv, in rr_read_eeprom() argument
405 struct rr_regs __iomem *regs = rrpriv->regs; in rr_read_eeprom()
435 static u32 rr_read_eeprom_word(struct rr_private *rrpriv, in rr_read_eeprom_word() argument
440 if ((rr_read_eeprom(rrpriv, offset, in rr_read_eeprom_word()
452 static unsigned int write_eeprom(struct rr_private *rrpriv, in write_eeprom() argument
457 struct rr_regs __iomem *regs = rrpriv->regs; in write_eeprom()
507 struct rr_private *rrpriv; in rr_init() local
511 rrpriv = netdev_priv(dev); in rr_init()
512 regs = rrpriv->regs; in rr_init()
515 rrpriv->fw_rev = rev; in rr_init()
543 htons(rr_read_eeprom_word(rrpriv, offsetof(struct eeprom, manf.BoardULA))); in rr_init()
545 htonl(rr_read_eeprom_word(rrpriv, offsetof(struct eeprom, manf.BoardULA[4]))); in rr_init()
550 sram_size = rr_read_eeprom_word(rrpriv, 8); in rr_init()
559 struct rr_private *rrpriv; in rr_init1() local
567 rrpriv = netdev_priv(dev); in rr_init1()
568 regs = rrpriv->regs; in rr_init1()
570 spin_lock_irqsave(&rrpriv->lock, flags); in rr_init1()
579 spin_unlock_irqrestore(&rrpriv->lock, flags); in rr_init1()
584 set_rxaddr(regs, rrpriv->rx_ctrl_dma); in rr_init1()
585 set_infoaddr(regs, rrpriv->info_dma); in rr_init1()
587 rrpriv->info->evt_ctrl.entry_size = sizeof(struct event); in rr_init1()
588 rrpriv->info->evt_ctrl.entries = EVT_RING_ENTRIES; in rr_init1()
589 rrpriv->info->evt_ctrl.mode = 0; in rr_init1()
590 rrpriv->info->evt_ctrl.pi = 0; in rr_init1()
591 set_rraddr(&rrpriv->info->evt_ctrl.rngptr, rrpriv->evt_ring_dma); in rr_init1()
593 rrpriv->info->cmd_ctrl.entry_size = sizeof(struct cmd); in rr_init1()
594 rrpriv->info->cmd_ctrl.entries = CMD_RING_ENTRIES; in rr_init1()
595 rrpriv->info->cmd_ctrl.mode = 0; in rr_init1()
596 rrpriv->info->cmd_ctrl.pi = 15; in rr_init1()
603 rrpriv->tx_ring[i].size = 0; in rr_init1()
604 set_rraddr(&rrpriv->tx_ring[i].addr, 0); in rr_init1()
605 rrpriv->tx_skbuff[i] = NULL; in rr_init1()
607 rrpriv->info->tx_ctrl.entry_size = sizeof(struct tx_desc); in rr_init1()
608 rrpriv->info->tx_ctrl.entries = TX_RING_ENTRIES; in rr_init1()
609 rrpriv->info->tx_ctrl.mode = 0; in rr_init1()
610 rrpriv->info->tx_ctrl.pi = 0; in rr_init1()
611 set_rraddr(&rrpriv->info->tx_ctrl.rngptr, rrpriv->tx_ring_dma); in rr_init1()
619 rrpriv->tx_full = 0; in rr_init1()
620 rrpriv->cur_rx = 0; in rr_init1()
621 rrpriv->dirty_rx = rrpriv->dirty_tx = 0; in rr_init1()
635 rrpriv->fw_running = 0; in rr_init1()
642 spin_unlock_irqrestore(&rrpriv->lock, flags); in rr_init1()
648 rrpriv->rx_ring[i].mode = 0; in rr_init1()
656 rrpriv->rx_skbuff[i] = skb; in rr_init1()
657 addr = dma_map_single(&rrpriv->pci_dev->dev, skb->data, in rr_init1()
666 set_rraddr(&rrpriv->rx_ring[i].addr, addr); in rr_init1()
667 rrpriv->rx_ring[i].size = dev->mtu + HIPPI_HLEN; in rr_init1()
670 rrpriv->rx_ctrl[4].entry_size = sizeof(struct rx_desc); in rr_init1()
671 rrpriv->rx_ctrl[4].entries = RX_RING_ENTRIES; in rr_init1()
672 rrpriv->rx_ctrl[4].mode = 8; in rr_init1()
673 rrpriv->rx_ctrl[4].pi = 0; in rr_init1()
675 set_rraddr(&rrpriv->rx_ctrl[4].rngptr, rrpriv->rx_ring_dma); in rr_init1()
686 rr_issue_cmd(rrpriv, &cmd); in rr_init1()
692 while (time_before(jiffies, myjif) && !rrpriv->fw_running) in rr_init1()
705 struct sk_buff *skb = rrpriv->rx_skbuff[i]; in rr_init1()
708 dma_unmap_single(&rrpriv->pci_dev->dev, in rr_init1()
709 rrpriv->rx_ring[i].addr.addrlo, in rr_init1()
712 rrpriv->rx_ring[i].size = 0; in rr_init1()
713 set_rraddr(&rrpriv->rx_ring[i].addr, 0); in rr_init1()
715 rrpriv->rx_skbuff[i] = NULL; in rr_init1()
729 struct rr_private *rrpriv; in rr_handle_event() local
733 rrpriv = netdev_priv(dev); in rr_handle_event()
734 regs = rrpriv->regs; in rr_handle_event()
737 switch (rrpriv->evt_ring[eidx].code){ in rr_handle_event()
743 rrpriv->fw_running = 1; in rr_handle_event()
910 u16 index = rrpriv->evt_ring[eidx].index; in rr_handle_event()
913 rrpriv->rx_ring[index].mode |= in rr_handle_event()
919 dev->name, rrpriv->evt_ring[eidx].code); in rr_handle_event()
924 rrpriv->info->evt_ctrl.pi = eidx; in rr_handle_event()
932 struct rr_private *rrpriv = netdev_priv(dev); in rx_int() local
933 struct rr_regs __iomem *regs = rrpriv->regs; in rx_int()
939 desc = &(rrpriv->rx_ring[index]); in rx_int()
945 if ( (rrpriv->rx_ring[index].mode & PACKET_BAD) == PACKET_BAD){ in rx_int()
953 rx_skb = rrpriv->rx_skbuff[index]; in rx_int()
962 dma_sync_single_for_cpu(&rrpriv->pci_dev->dev, in rx_int()
970 dma_sync_single_for_device(&rrpriv->pci_dev->dev, in rx_int()
983 dma_unmap_single(&rrpriv->pci_dev->dev, in rx_int()
989 rrpriv->rx_skbuff[index] = newskb; in rx_int()
990 addr = dma_map_single(&rrpriv->pci_dev->dev, in rx_int()
1019 rrpriv->cur_rx = index; in rx_int()
1026 struct rr_private *rrpriv; in rr_interrupt() local
1031 rrpriv = netdev_priv(dev); in rr_interrupt()
1032 regs = rrpriv->regs; in rr_interrupt()
1037 spin_lock(&rrpriv->lock); in rr_interrupt()
1046 prodidx, rrpriv->info->evt_ctrl.pi); in rr_interrupt()
1054 eidx = rrpriv->info->evt_ctrl.pi; in rr_interrupt()
1058 rxindex = rrpriv->cur_rx; in rr_interrupt()
1062 txcon = rrpriv->dirty_tx; in rr_interrupt()
1068 if(rrpriv->tx_skbuff[txcon]){ in rr_interrupt()
1072 desc = &(rrpriv->tx_ring[txcon]); in rr_interrupt()
1073 skb = rrpriv->tx_skbuff[txcon]; in rr_interrupt()
1078 dma_unmap_single(&rrpriv->pci_dev->dev, in rr_interrupt()
1083 rrpriv->tx_skbuff[txcon] = NULL; in rr_interrupt()
1085 set_rraddr(&rrpriv->tx_ring[txcon].addr, 0); in rr_interrupt()
1092 rrpriv->dirty_tx = txcon; in rr_interrupt()
1093 if (rrpriv->tx_full && rr_if_busy(dev) && in rr_interrupt()
1094 (((rrpriv->info->tx_ctrl.pi + 1) % TX_RING_ENTRIES) in rr_interrupt()
1095 != rrpriv->dirty_tx)){ in rr_interrupt()
1096 rrpriv->tx_full = 0; in rr_interrupt()
1105 spin_unlock(&rrpriv->lock); in rr_interrupt()
1109 static inline void rr_raz_tx(struct rr_private *rrpriv, in rr_raz_tx() argument
1115 struct sk_buff *skb = rrpriv->tx_skbuff[i]; in rr_raz_tx()
1118 struct tx_desc *desc = &(rrpriv->tx_ring[i]); in rr_raz_tx()
1120 dma_unmap_single(&rrpriv->pci_dev->dev, in rr_raz_tx()
1126 rrpriv->tx_skbuff[i] = NULL; in rr_raz_tx()
1132 static inline void rr_raz_rx(struct rr_private *rrpriv, in rr_raz_rx() argument
1138 struct sk_buff *skb = rrpriv->rx_skbuff[i]; in rr_raz_rx()
1141 struct rx_desc *desc = &(rrpriv->rx_ring[i]); in rr_raz_rx()
1143 dma_unmap_single(&rrpriv->pci_dev->dev, in rr_raz_rx()
1150 rrpriv->rx_skbuff[i] = NULL; in rr_raz_rx()
1157 struct rr_private *rrpriv = from_timer(rrpriv, t, timer); in rr_timer() local
1158 struct net_device *dev = pci_get_drvdata(rrpriv->pci_dev); in rr_timer()
1159 struct rr_regs __iomem *regs = rrpriv->regs; in rr_timer()
1164 memset(rrpriv->rx_ctrl, 0, 256 * sizeof(struct ring_ctrl)); in rr_timer()
1165 memset(rrpriv->info, 0, sizeof(struct rr_info)); in rr_timer()
1168 rr_raz_tx(rrpriv, dev); in rr_timer()
1169 rr_raz_rx(rrpriv, dev); in rr_timer()
1172 spin_lock_irqsave(&rrpriv->lock, flags); in rr_timer()
1175 spin_unlock_irqrestore(&rrpriv->lock, flags); in rr_timer()
1178 rrpriv->timer.expires = RUN_AT(5*HZ); in rr_timer()
1179 add_timer(&rrpriv->timer); in rr_timer()
1185 struct rr_private *rrpriv = netdev_priv(dev); in rr_open() local
1186 struct pci_dev *pdev = rrpriv->pci_dev; in rr_open()
1192 regs = rrpriv->regs; in rr_open()
1194 if (rrpriv->fw_rev < 0x00020000) { in rr_open()
1201 rrpriv->rx_ctrl = dma_alloc_coherent(&pdev->dev, in rr_open()
1204 if (!rrpriv->rx_ctrl) { in rr_open()
1208 rrpriv->rx_ctrl_dma = dma_addr; in rr_open()
1210 rrpriv->info = dma_alloc_coherent(&pdev->dev, sizeof(struct rr_info), in rr_open()
1212 if (!rrpriv->info) { in rr_open()
1216 rrpriv->info_dma = dma_addr; in rr_open()
1219 spin_lock_irqsave(&rrpriv->lock, flags); in rr_open()
1222 spin_unlock_irqrestore(&rrpriv->lock, flags); in rr_open()
1236 timer_setup(&rrpriv->timer, rr_timer, 0); in rr_open()
1237 rrpriv->timer.expires = RUN_AT(5*HZ); /* 5 sec. watchdog */ in rr_open()
1238 add_timer(&rrpriv->timer); in rr_open()
1245 spin_lock_irqsave(&rrpriv->lock, flags); in rr_open()
1247 spin_unlock_irqrestore(&rrpriv->lock, flags); in rr_open()
1249 if (rrpriv->info) { in rr_open()
1251 rrpriv->info, rrpriv->info_dma); in rr_open()
1252 rrpriv->info = NULL; in rr_open()
1254 if (rrpriv->rx_ctrl) { in rr_open()
1256 rrpriv->rx_ctrl, rrpriv->rx_ctrl_dma); in rr_open()
1257 rrpriv->rx_ctrl = NULL; in rr_open()
1268 struct rr_private *rrpriv; in rr_dump() local
1274 rrpriv = netdev_priv(dev); in rr_dump()
1275 regs = rrpriv->regs; in rr_dump()
1282 rrpriv->info->tx_ctrl.pi); in rr_dump()
1287 cons = rrpriv->dirty_tx; in rr_dump()
1291 if (rrpriv->tx_skbuff[index]){ in rr_dump()
1292 len = min_t(int, 0x80, rrpriv->tx_skbuff[index]->len); in rr_dump()
1293 …x %i is valid - dumping data (0x%x bytes - DMA len 0x%x)\n", index, len, rrpriv->tx_ring[index].si… in rr_dump()
1297 printk("%02x ", (unsigned char) rrpriv->tx_skbuff[index]->data[i]); in rr_dump()
1302 if (rrpriv->tx_skbuff[cons]){ in rr_dump()
1303 len = min_t(int, 0x80, rrpriv->tx_skbuff[cons]->len); in rr_dump()
1304 …%i is valid - dumping data (0x%x bytes - skbuff len 0x%x)\n", cons, len, rrpriv->tx_skbuff[cons]->… in rr_dump()
1306 rrpriv->tx_ring[cons].mode, in rr_dump()
1307 rrpriv->tx_ring[cons].size, in rr_dump()
1308 (unsigned long long) rrpriv->tx_ring[cons].addr.addrlo, in rr_dump()
1309 rrpriv->tx_skbuff[cons]->data, in rr_dump()
1310 (unsigned int)rrpriv->tx_skbuff[cons]->truesize); in rr_dump()
1314 printk("%02x ", (unsigned char)rrpriv->tx_ring[cons].size); in rr_dump()
1322 rrpriv->tx_ring[i].mode, in rr_dump()
1323 rrpriv->tx_ring[i].size, in rr_dump()
1324 (unsigned long long) rrpriv->tx_ring[i].addr.addrlo); in rr_dump()
1331 struct rr_private *rrpriv = netdev_priv(dev); in rr_close() local
1332 struct rr_regs __iomem *regs = rrpriv->regs; in rr_close()
1333 struct pci_dev *pdev = rrpriv->pci_dev; in rr_close()
1345 spin_lock_irqsave(&rrpriv->lock, flags); in rr_close()
1357 rrpriv->fw_running = 0; in rr_close()
1359 spin_unlock_irqrestore(&rrpriv->lock, flags); in rr_close()
1360 del_timer_sync(&rrpriv->timer); in rr_close()
1361 spin_lock_irqsave(&rrpriv->lock, flags); in rr_close()
1372 rrpriv->info->tx_ctrl.entries = 0; in rr_close()
1373 rrpriv->info->cmd_ctrl.pi = 0; in rr_close()
1374 rrpriv->info->evt_ctrl.pi = 0; in rr_close()
1375 rrpriv->rx_ctrl[4].entries = 0; in rr_close()
1377 rr_raz_tx(rrpriv, dev); in rr_close()
1378 rr_raz_rx(rrpriv, dev); in rr_close()
1381 rrpriv->rx_ctrl, rrpriv->rx_ctrl_dma); in rr_close()
1382 rrpriv->rx_ctrl = NULL; in rr_close()
1384 dma_free_coherent(&pdev->dev, sizeof(struct rr_info), rrpriv->info, in rr_close()
1385 rrpriv->info_dma); in rr_close()
1386 rrpriv->info = NULL; in rr_close()
1388 spin_unlock_irqrestore(&rrpriv->lock, flags); in rr_close()
1398 struct rr_private *rrpriv = netdev_priv(dev); in rr_start_xmit() local
1399 struct rr_regs __iomem *regs = rrpriv->regs; in rr_start_xmit()
1438 spin_lock_irqsave(&rrpriv->lock, flags); in rr_start_xmit()
1440 txctrl = &rrpriv->info->tx_ctrl; in rr_start_xmit()
1444 rrpriv->tx_skbuff[index] = skb; in rr_start_xmit()
1445 set_rraddr(&rrpriv->tx_ring[index].addr, in rr_start_xmit()
1446 dma_map_single(&rrpriv->pci_dev->dev, skb->data, len + 8, DMA_TO_DEVICE)); in rr_start_xmit()
1447 rrpriv->tx_ring[index].size = len + 8; /* include IFIELD */ in rr_start_xmit()
1448 rrpriv->tx_ring[index].mode = PACKET_START | PACKET_END; in rr_start_xmit()
1453 if (txctrl->pi == rrpriv->dirty_tx){ in rr_start_xmit()
1454 rrpriv->tx_full = 1; in rr_start_xmit()
1458 spin_unlock_irqrestore(&rrpriv->lock, flags); in rr_start_xmit()
1473 struct rr_private *rrpriv; in rr_load_firmware() local
1480 rrpriv = netdev_priv(dev); in rr_load_firmware()
1481 regs = rrpriv->regs; in rr_load_firmware()
1506 sram_size = rr_read_eeprom_word(rrpriv, 8); in rr_load_firmware()
1517 eptr = rr_read_eeprom_word(rrpriv, in rr_load_firmware()
1521 p2len = rr_read_eeprom_word(rrpriv, 0x83*4); in rr_load_firmware()
1523 p2size = rr_read_eeprom_word(rrpriv, 0x84*4); in rr_load_firmware()
1531 revision = rr_read_eeprom_word(rrpriv, in rr_load_firmware()
1540 nr_seg = rr_read_eeprom_word(rrpriv, eptr); in rr_load_firmware()
1547 sptr = rr_read_eeprom_word(rrpriv, eptr); in rr_load_firmware()
1549 len = rr_read_eeprom_word(rrpriv, eptr); in rr_load_firmware()
1551 segptr = rr_read_eeprom_word(rrpriv, eptr); in rr_load_firmware()
1559 tmp = rr_read_eeprom_word(rrpriv, segptr); in rr_load_firmware()
1579 struct rr_private *rrpriv; in rr_siocdevprivate() local
1585 rrpriv = netdev_priv(dev); in rr_siocdevprivate()
1597 if (rrpriv->fw_running){ in rr_siocdevprivate()
1603 spin_lock_irqsave(&rrpriv->lock, flags); in rr_siocdevprivate()
1604 i = rr_read_eeprom(rrpriv, 0, image, EEPROM_BYTES); in rr_siocdevprivate()
1605 spin_unlock_irqrestore(&rrpriv->lock, flags); in rr_siocdevprivate()
1634 if (rrpriv->fw_running){ in rr_siocdevprivate()
1642 spin_lock_irqsave(&rrpriv->lock, flags); in rr_siocdevprivate()
1643 error = write_eeprom(rrpriv, 0, image, EEPROM_BYTES); in rr_siocdevprivate()
1648 i = rr_read_eeprom(rrpriv, 0, oldimage, EEPROM_BYTES); in rr_siocdevprivate()
1649 spin_unlock_irqrestore(&rrpriv->lock, flags); in rr_siocdevprivate()