Lines Matching refs:rrpriv

95 	struct rr_private *rrpriv;  in rr_init_one()  local
110 rrpriv = netdev_priv(dev); in rr_init_one()
120 rrpriv->pci_dev = pdev; in rr_init_one()
122 spin_lock_init(&rrpriv->lock); in rr_init_one()
150 rrpriv->regs = pci_iomap(pdev, 0, 0x1000); in rr_init_one()
151 if (!rrpriv->regs) { in rr_init_one()
159 rrpriv->tx_ring = tmpptr; in rr_init_one()
160 rrpriv->tx_ring_dma = ring_dma; in rr_init_one()
168 rrpriv->rx_ring = tmpptr; in rr_init_one()
169 rrpriv->rx_ring_dma = ring_dma; in rr_init_one()
177 rrpriv->evt_ring = tmpptr; in rr_init_one()
178 rrpriv->evt_ring_dma = ring_dma; in rr_init_one()
189 writel(readl(&rrpriv->regs->HostCtrl) | NO_SWAP, in rr_init_one()
190 &rrpriv->regs->HostCtrl); in rr_init_one()
204 if (rrpriv->evt_ring) in rr_init_one()
205 pci_free_consistent(pdev, EVT_RING_SIZE, rrpriv->evt_ring, in rr_init_one()
206 rrpriv->evt_ring_dma); in rr_init_one()
207 if (rrpriv->rx_ring) in rr_init_one()
208 pci_free_consistent(pdev, RX_TOTAL_SIZE, rrpriv->rx_ring, in rr_init_one()
209 rrpriv->rx_ring_dma); in rr_init_one()
210 if (rrpriv->tx_ring) in rr_init_one()
211 pci_free_consistent(pdev, TX_TOTAL_SIZE, rrpriv->tx_ring, in rr_init_one()
212 rrpriv->tx_ring_dma); in rr_init_one()
213 if (rrpriv->regs) in rr_init_one()
214 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()
506 struct rr_private *rrpriv; in rr_init() local
510 rrpriv = netdev_priv(dev); in rr_init()
511 regs = rrpriv->regs; in rr_init()
514 rrpriv->fw_rev = rev; in rr_init()
542 htons(rr_read_eeprom_word(rrpriv, offsetof(struct eeprom, manf.BoardULA))); in rr_init()
544 htonl(rr_read_eeprom_word(rrpriv, offsetof(struct eeprom, manf.BoardULA[4]))); in rr_init()
548 sram_size = rr_read_eeprom_word(rrpriv, 8); in rr_init()
557 struct rr_private *rrpriv; in rr_init1() local
565 rrpriv = netdev_priv(dev); in rr_init1()
566 regs = rrpriv->regs; in rr_init1()
568 spin_lock_irqsave(&rrpriv->lock, flags); in rr_init1()
577 spin_unlock_irqrestore(&rrpriv->lock, flags); in rr_init1()
582 set_rxaddr(regs, rrpriv->rx_ctrl_dma); in rr_init1()
583 set_infoaddr(regs, rrpriv->info_dma); in rr_init1()
585 rrpriv->info->evt_ctrl.entry_size = sizeof(struct event); in rr_init1()
586 rrpriv->info->evt_ctrl.entries = EVT_RING_ENTRIES; in rr_init1()
587 rrpriv->info->evt_ctrl.mode = 0; in rr_init1()
588 rrpriv->info->evt_ctrl.pi = 0; in rr_init1()
589 set_rraddr(&rrpriv->info->evt_ctrl.rngptr, rrpriv->evt_ring_dma); in rr_init1()
591 rrpriv->info->cmd_ctrl.entry_size = sizeof(struct cmd); in rr_init1()
592 rrpriv->info->cmd_ctrl.entries = CMD_RING_ENTRIES; in rr_init1()
593 rrpriv->info->cmd_ctrl.mode = 0; in rr_init1()
594 rrpriv->info->cmd_ctrl.pi = 15; in rr_init1()
601 rrpriv->tx_ring[i].size = 0; in rr_init1()
602 set_rraddr(&rrpriv->tx_ring[i].addr, 0); in rr_init1()
603 rrpriv->tx_skbuff[i] = NULL; in rr_init1()
605 rrpriv->info->tx_ctrl.entry_size = sizeof(struct tx_desc); in rr_init1()
606 rrpriv->info->tx_ctrl.entries = TX_RING_ENTRIES; in rr_init1()
607 rrpriv->info->tx_ctrl.mode = 0; in rr_init1()
608 rrpriv->info->tx_ctrl.pi = 0; in rr_init1()
609 set_rraddr(&rrpriv->info->tx_ctrl.rngptr, rrpriv->tx_ring_dma); in rr_init1()
617 rrpriv->tx_full = 0; in rr_init1()
618 rrpriv->cur_rx = 0; in rr_init1()
619 rrpriv->dirty_rx = rrpriv->dirty_tx = 0; in rr_init1()
633 rrpriv->fw_running = 0; in rr_init1()
640 spin_unlock_irqrestore(&rrpriv->lock, flags); in rr_init1()
646 rrpriv->rx_ring[i].mode = 0; in rr_init1()
654 rrpriv->rx_skbuff[i] = skb; in rr_init1()
655 addr = pci_map_single(rrpriv->pci_dev, skb->data, in rr_init1()
664 set_rraddr(&rrpriv->rx_ring[i].addr, addr); in rr_init1()
665 rrpriv->rx_ring[i].size = dev->mtu + HIPPI_HLEN; in rr_init1()
668 rrpriv->rx_ctrl[4].entry_size = sizeof(struct rx_desc); in rr_init1()
669 rrpriv->rx_ctrl[4].entries = RX_RING_ENTRIES; in rr_init1()
670 rrpriv->rx_ctrl[4].mode = 8; in rr_init1()
671 rrpriv->rx_ctrl[4].pi = 0; in rr_init1()
673 set_rraddr(&rrpriv->rx_ctrl[4].rngptr, rrpriv->rx_ring_dma); in rr_init1()
684 rr_issue_cmd(rrpriv, &cmd); in rr_init1()
690 while (time_before(jiffies, myjif) && !rrpriv->fw_running) in rr_init1()
703 struct sk_buff *skb = rrpriv->rx_skbuff[i]; in rr_init1()
706 pci_unmap_single(rrpriv->pci_dev, in rr_init1()
707 rrpriv->rx_ring[i].addr.addrlo, in rr_init1()
710 rrpriv->rx_ring[i].size = 0; in rr_init1()
711 set_rraddr(&rrpriv->rx_ring[i].addr, 0); in rr_init1()
713 rrpriv->rx_skbuff[i] = NULL; in rr_init1()
727 struct rr_private *rrpriv; in rr_handle_event() local
731 rrpriv = netdev_priv(dev); in rr_handle_event()
732 regs = rrpriv->regs; in rr_handle_event()
735 switch (rrpriv->evt_ring[eidx].code){ in rr_handle_event()
741 rrpriv->fw_running = 1; in rr_handle_event()
908 u16 index = rrpriv->evt_ring[eidx].index; in rr_handle_event()
911 rrpriv->rx_ring[index].mode |= in rr_handle_event()
917 dev->name, rrpriv->evt_ring[eidx].code); in rr_handle_event()
922 rrpriv->info->evt_ctrl.pi = eidx; in rr_handle_event()
930 struct rr_private *rrpriv = netdev_priv(dev); in rx_int() local
931 struct rr_regs __iomem *regs = rrpriv->regs; in rx_int()
937 desc = &(rrpriv->rx_ring[index]); in rx_int()
943 if ( (rrpriv->rx_ring[index].mode & PACKET_BAD) == PACKET_BAD){ in rx_int()
951 rx_skb = rrpriv->rx_skbuff[index]; in rx_int()
960 pci_dma_sync_single_for_cpu(rrpriv->pci_dev, in rx_int()
968 pci_dma_sync_single_for_device(rrpriv->pci_dev, in rx_int()
981 pci_unmap_single(rrpriv->pci_dev, in rx_int()
986 rrpriv->rx_skbuff[index] = newskb; in rx_int()
987 addr = pci_map_single(rrpriv->pci_dev, in rx_int()
1016 rrpriv->cur_rx = index; in rx_int()
1023 struct rr_private *rrpriv; in rr_interrupt() local
1028 rrpriv = netdev_priv(dev); in rr_interrupt()
1029 regs = rrpriv->regs; in rr_interrupt()
1034 spin_lock(&rrpriv->lock); in rr_interrupt()
1043 prodidx, rrpriv->info->evt_ctrl.pi); in rr_interrupt()
1051 eidx = rrpriv->info->evt_ctrl.pi; in rr_interrupt()
1055 rxindex = rrpriv->cur_rx; in rr_interrupt()
1059 txcon = rrpriv->dirty_tx; in rr_interrupt()
1065 if(rrpriv->tx_skbuff[txcon]){ in rr_interrupt()
1069 desc = &(rrpriv->tx_ring[txcon]); in rr_interrupt()
1070 skb = rrpriv->tx_skbuff[txcon]; in rr_interrupt()
1075 pci_unmap_single(rrpriv->pci_dev, in rr_interrupt()
1080 rrpriv->tx_skbuff[txcon] = NULL; in rr_interrupt()
1082 set_rraddr(&rrpriv->tx_ring[txcon].addr, 0); in rr_interrupt()
1089 rrpriv->dirty_tx = txcon; in rr_interrupt()
1090 if (rrpriv->tx_full && rr_if_busy(dev) && in rr_interrupt()
1091 (((rrpriv->info->tx_ctrl.pi + 1) % TX_RING_ENTRIES) in rr_interrupt()
1092 != rrpriv->dirty_tx)){ in rr_interrupt()
1093 rrpriv->tx_full = 0; in rr_interrupt()
1102 spin_unlock(&rrpriv->lock); in rr_interrupt()
1106 static inline void rr_raz_tx(struct rr_private *rrpriv, in rr_raz_tx() argument
1112 struct sk_buff *skb = rrpriv->tx_skbuff[i]; in rr_raz_tx()
1115 struct tx_desc *desc = &(rrpriv->tx_ring[i]); in rr_raz_tx()
1117 pci_unmap_single(rrpriv->pci_dev, desc->addr.addrlo, in rr_raz_tx()
1122 rrpriv->tx_skbuff[i] = NULL; in rr_raz_tx()
1128 static inline void rr_raz_rx(struct rr_private *rrpriv, in rr_raz_rx() argument
1134 struct sk_buff *skb = rrpriv->rx_skbuff[i]; in rr_raz_rx()
1137 struct rx_desc *desc = &(rrpriv->rx_ring[i]); in rr_raz_rx()
1139 pci_unmap_single(rrpriv->pci_dev, desc->addr.addrlo, in rr_raz_rx()
1144 rrpriv->rx_skbuff[i] = NULL; in rr_raz_rx()
1151 struct rr_private *rrpriv = from_timer(rrpriv, t, timer); in rr_timer() local
1152 struct net_device *dev = pci_get_drvdata(rrpriv->pci_dev); in rr_timer()
1153 struct rr_regs __iomem *regs = rrpriv->regs; in rr_timer()
1158 memset(rrpriv->rx_ctrl, 0, 256 * sizeof(struct ring_ctrl)); in rr_timer()
1159 memset(rrpriv->info, 0, sizeof(struct rr_info)); in rr_timer()
1162 rr_raz_tx(rrpriv, dev); in rr_timer()
1163 rr_raz_rx(rrpriv, dev); in rr_timer()
1166 spin_lock_irqsave(&rrpriv->lock, flags); in rr_timer()
1169 spin_unlock_irqrestore(&rrpriv->lock, flags); in rr_timer()
1172 rrpriv->timer.expires = RUN_AT(5*HZ); in rr_timer()
1173 add_timer(&rrpriv->timer); in rr_timer()
1179 struct rr_private *rrpriv = netdev_priv(dev); in rr_open() local
1180 struct pci_dev *pdev = rrpriv->pci_dev; in rr_open()
1186 regs = rrpriv->regs; in rr_open()
1188 if (rrpriv->fw_rev < 0x00020000) { in rr_open()
1195 rrpriv->rx_ctrl = pci_alloc_consistent(pdev, in rr_open()
1198 if (!rrpriv->rx_ctrl) { in rr_open()
1202 rrpriv->rx_ctrl_dma = dma_addr; in rr_open()
1203 memset(rrpriv->rx_ctrl, 0, 256*sizeof(struct ring_ctrl)); in rr_open()
1205 rrpriv->info = pci_alloc_consistent(pdev, sizeof(struct rr_info), in rr_open()
1207 if (!rrpriv->info) { in rr_open()
1211 rrpriv->info_dma = dma_addr; in rr_open()
1212 memset(rrpriv->info, 0, sizeof(struct rr_info)); in rr_open()
1215 spin_lock_irqsave(&rrpriv->lock, flags); in rr_open()
1218 spin_unlock_irqrestore(&rrpriv->lock, flags); in rr_open()
1232 timer_setup(&rrpriv->timer, rr_timer, 0); in rr_open()
1233 rrpriv->timer.expires = RUN_AT(5*HZ); /* 5 sec. watchdog */ in rr_open()
1234 add_timer(&rrpriv->timer); in rr_open()
1241 spin_lock_irqsave(&rrpriv->lock, flags); in rr_open()
1243 spin_unlock_irqrestore(&rrpriv->lock, flags); in rr_open()
1245 if (rrpriv->info) { in rr_open()
1246 pci_free_consistent(pdev, sizeof(struct rr_info), rrpriv->info, in rr_open()
1247 rrpriv->info_dma); in rr_open()
1248 rrpriv->info = NULL; in rr_open()
1250 if (rrpriv->rx_ctrl) { in rr_open()
1252 rrpriv->rx_ctrl, rrpriv->rx_ctrl_dma); in rr_open()
1253 rrpriv->rx_ctrl = NULL; in rr_open()
1264 struct rr_private *rrpriv; in rr_dump() local
1270 rrpriv = netdev_priv(dev); in rr_dump()
1271 regs = rrpriv->regs; in rr_dump()
1278 rrpriv->info->tx_ctrl.pi); in rr_dump()
1283 cons = rrpriv->dirty_tx; in rr_dump()
1287 if (rrpriv->tx_skbuff[index]){ in rr_dump()
1288 len = min_t(int, 0x80, rrpriv->tx_skbuff[index]->len); in rr_dump()
1289 …x %i is valid - dumping data (0x%x bytes - DMA len 0x%x)\n", index, len, rrpriv->tx_ring[index].si… in rr_dump()
1293 printk("%02x ", (unsigned char) rrpriv->tx_skbuff[index]->data[i]); in rr_dump()
1298 if (rrpriv->tx_skbuff[cons]){ in rr_dump()
1299 len = min_t(int, 0x80, rrpriv->tx_skbuff[cons]->len); in rr_dump()
1300 …%i is valid - dumping data (0x%x bytes - skbuff len 0x%x)\n", cons, len, rrpriv->tx_skbuff[cons]->… in rr_dump()
1302 rrpriv->tx_ring[cons].mode, in rr_dump()
1303 rrpriv->tx_ring[cons].size, in rr_dump()
1304 (unsigned long long) rrpriv->tx_ring[cons].addr.addrlo, in rr_dump()
1305 (unsigned long)rrpriv->tx_skbuff[cons]->data, in rr_dump()
1306 (unsigned int)rrpriv->tx_skbuff[cons]->truesize); in rr_dump()
1310 printk("%02x ", (unsigned char)rrpriv->tx_ring[cons].size); in rr_dump()
1318 rrpriv->tx_ring[i].mode, in rr_dump()
1319 rrpriv->tx_ring[i].size, in rr_dump()
1320 (unsigned long long) rrpriv->tx_ring[i].addr.addrlo); in rr_dump()
1327 struct rr_private *rrpriv = netdev_priv(dev); in rr_close() local
1328 struct rr_regs __iomem *regs = rrpriv->regs; in rr_close()
1329 struct pci_dev *pdev = rrpriv->pci_dev; in rr_close()
1341 spin_lock_irqsave(&rrpriv->lock, flags); in rr_close()
1353 rrpriv->fw_running = 0; in rr_close()
1355 del_timer_sync(&rrpriv->timer); in rr_close()
1366 rrpriv->info->tx_ctrl.entries = 0; in rr_close()
1367 rrpriv->info->cmd_ctrl.pi = 0; in rr_close()
1368 rrpriv->info->evt_ctrl.pi = 0; in rr_close()
1369 rrpriv->rx_ctrl[4].entries = 0; in rr_close()
1371 rr_raz_tx(rrpriv, dev); in rr_close()
1372 rr_raz_rx(rrpriv, dev); in rr_close()
1375 rrpriv->rx_ctrl, rrpriv->rx_ctrl_dma); in rr_close()
1376 rrpriv->rx_ctrl = NULL; in rr_close()
1378 pci_free_consistent(pdev, sizeof(struct rr_info), rrpriv->info, in rr_close()
1379 rrpriv->info_dma); in rr_close()
1380 rrpriv->info = NULL; in rr_close()
1382 spin_unlock_irqrestore(&rrpriv->lock, flags); in rr_close()
1392 struct rr_private *rrpriv = netdev_priv(dev); in rr_start_xmit() local
1393 struct rr_regs __iomem *regs = rrpriv->regs; in rr_start_xmit()
1432 spin_lock_irqsave(&rrpriv->lock, flags); in rr_start_xmit()
1434 txctrl = &rrpriv->info->tx_ctrl; in rr_start_xmit()
1438 rrpriv->tx_skbuff[index] = skb; in rr_start_xmit()
1439 set_rraddr(&rrpriv->tx_ring[index].addr, pci_map_single( in rr_start_xmit()
1440 rrpriv->pci_dev, skb->data, len + 8, PCI_DMA_TODEVICE)); in rr_start_xmit()
1441 rrpriv->tx_ring[index].size = len + 8; /* include IFIELD */ in rr_start_xmit()
1442 rrpriv->tx_ring[index].mode = PACKET_START | PACKET_END; in rr_start_xmit()
1447 if (txctrl->pi == rrpriv->dirty_tx){ in rr_start_xmit()
1448 rrpriv->tx_full = 1; in rr_start_xmit()
1452 spin_unlock_irqrestore(&rrpriv->lock, flags); in rr_start_xmit()
1467 struct rr_private *rrpriv; in rr_load_firmware() local
1474 rrpriv = netdev_priv(dev); in rr_load_firmware()
1475 regs = rrpriv->regs; in rr_load_firmware()
1500 sram_size = rr_read_eeprom_word(rrpriv, 8); in rr_load_firmware()
1511 eptr = rr_read_eeprom_word(rrpriv, in rr_load_firmware()
1515 p2len = rr_read_eeprom_word(rrpriv, 0x83*4); in rr_load_firmware()
1517 p2size = rr_read_eeprom_word(rrpriv, 0x84*4); in rr_load_firmware()
1525 revision = rr_read_eeprom_word(rrpriv, in rr_load_firmware()
1534 nr_seg = rr_read_eeprom_word(rrpriv, eptr); in rr_load_firmware()
1541 sptr = rr_read_eeprom_word(rrpriv, eptr); in rr_load_firmware()
1543 len = rr_read_eeprom_word(rrpriv, eptr); in rr_load_firmware()
1545 segptr = rr_read_eeprom_word(rrpriv, eptr); in rr_load_firmware()
1553 tmp = rr_read_eeprom_word(rrpriv, segptr); in rr_load_firmware()
1572 struct rr_private *rrpriv; in rr_ioctl() local
1578 rrpriv = netdev_priv(dev); in rr_ioctl()
1590 if (rrpriv->fw_running){ in rr_ioctl()
1596 spin_lock_irqsave(&rrpriv->lock, flags); in rr_ioctl()
1597 i = rr_read_eeprom(rrpriv, 0, image, EEPROM_BYTES); in rr_ioctl()
1598 spin_unlock_irqrestore(&rrpriv->lock, flags); in rr_ioctl()
1627 if (rrpriv->fw_running){ in rr_ioctl()
1635 spin_lock_irqsave(&rrpriv->lock, flags); in rr_ioctl()
1636 error = write_eeprom(rrpriv, 0, image, EEPROM_BYTES); in rr_ioctl()
1641 i = rr_read_eeprom(rrpriv, 0, oldimage, EEPROM_BYTES); in rr_ioctl()
1642 spin_unlock_irqrestore(&rrpriv->lock, flags); in rr_ioctl()