Lines Matching refs:sdev

79 static unsigned int slic_next_compl_idx(struct slic_device *sdev)  in slic_next_compl_idx()  argument
81 struct slic_stat_queue *stq = &sdev->stq; in slic_next_compl_idx()
103 slic_write(sdev, SLIC_REG_RBAR, lower_32_bits(paddr) | in slic_next_compl_idx()
106 slic_flush_write(sdev); in slic_next_compl_idx()
140 static void slic_start_upr(struct slic_device *sdev, struct slic_upr *upr) in slic_start_upr() argument
146 slic_write(sdev, reg, lower_32_bits(upr->paddr)); in slic_start_upr()
147 slic_flush_write(sdev); in slic_start_upr()
150 static void slic_queue_upr(struct slic_device *sdev, struct slic_upr *upr) in slic_queue_upr() argument
152 struct slic_upr_list *upr_list = &sdev->upr_list; in slic_queue_upr()
163 slic_start_upr(sdev, upr); in slic_queue_upr()
166 static struct slic_upr *slic_dequeue_upr(struct slic_device *sdev) in slic_dequeue_upr() argument
168 struct slic_upr_list *upr_list = &sdev->upr_list; in slic_dequeue_upr()
186 slic_start_upr(sdev, next_upr); in slic_dequeue_upr()
191 static int slic_new_upr(struct slic_device *sdev, unsigned int type, in slic_new_upr() argument
202 slic_queue_upr(sdev, upr); in slic_new_upr()
223 static void slic_configure_rcv(struct slic_device *sdev) in slic_configure_rcv() argument
230 if (sdev->duplex == DUPLEX_FULL) in slic_configure_rcv()
233 if (sdev->promisc) in slic_configure_rcv()
236 slic_write(sdev, SLIC_REG_WRCFG, val); in slic_configure_rcv()
240 static void slic_configure_xmt(struct slic_device *sdev) in slic_configure_xmt() argument
246 if (sdev->duplex == DUPLEX_FULL) in slic_configure_xmt()
249 slic_write(sdev, SLIC_REG_WXCFG, val); in slic_configure_xmt()
253 static void slic_configure_mac(struct slic_device *sdev) in slic_configure_mac() argument
257 if (sdev->speed == SPEED_1000) { in slic_configure_mac()
268 if (sdev->duplex == DUPLEX_FULL) in slic_configure_mac()
271 slic_write(sdev, SLIC_REG_WMCFG, val); in slic_configure_mac()
274 static void slic_configure_link_locked(struct slic_device *sdev, int speed, in slic_configure_link_locked() argument
277 struct net_device *dev = sdev->netdev; in slic_configure_link_locked()
279 if (sdev->speed == speed && sdev->duplex == duplex) in slic_configure_link_locked()
282 sdev->speed = speed; in slic_configure_link_locked()
283 sdev->duplex = duplex; in slic_configure_link_locked()
285 if (sdev->speed == SPEED_UNKNOWN) { in slic_configure_link_locked()
290 slic_configure_mac(sdev); in slic_configure_link_locked()
291 slic_configure_xmt(sdev); in slic_configure_link_locked()
292 slic_configure_rcv(sdev); in slic_configure_link_locked()
293 slic_flush_write(sdev); in slic_configure_link_locked()
300 static void slic_configure_link(struct slic_device *sdev, int speed, in slic_configure_link() argument
303 spin_lock_bh(&sdev->link_lock); in slic_configure_link()
304 slic_configure_link_locked(sdev, speed, duplex); in slic_configure_link()
305 spin_unlock_bh(&sdev->link_lock); in slic_configure_link()
310 struct slic_device *sdev = netdev_priv(dev); in slic_set_rx_mode() local
330 slic_write(sdev, SLIC_REG_MCASTLOW, lower_32_bits(mcmask)); in slic_set_rx_mode()
331 slic_write(sdev, SLIC_REG_MCASTHIGH, upper_32_bits(mcmask)); in slic_set_rx_mode()
335 spin_lock_bh(&sdev->link_lock); in slic_set_rx_mode()
336 if (sdev->promisc != set_promisc) { in slic_set_rx_mode()
337 sdev->promisc = set_promisc; in slic_set_rx_mode()
338 slic_configure_rcv(sdev); in slic_set_rx_mode()
340 spin_unlock_bh(&sdev->link_lock); in slic_set_rx_mode()
343 static void slic_xmit_complete(struct slic_device *sdev) in slic_xmit_complete() argument
345 struct slic_tx_queue *txq = &sdev->txq; in slic_xmit_complete()
346 struct net_device *dev = sdev->netdev; in slic_xmit_complete()
356 idx = slic_next_compl_idx(sdev); in slic_xmit_complete()
368 dma_unmap_single(&sdev->pdev->dev, in slic_xmit_complete()
381 u64_stats_update_begin(&sdev->stats.syncp); in slic_xmit_complete()
382 sdev->stats.tx_bytes += bytes; in slic_xmit_complete()
383 sdev->stats.tx_packets += frames; in slic_xmit_complete()
384 u64_stats_update_end(&sdev->stats.syncp); in slic_xmit_complete()
393 static void slic_refill_rx_queue(struct slic_device *sdev, gfp_t gfp) in slic_refill_rx_queue() argument
397 struct slic_rx_queue *rxq = &sdev->rxq; in slic_refill_rx_queue()
398 struct net_device *dev = sdev->netdev; in slic_refill_rx_queue()
411 paddr = dma_map_single(&sdev->pdev->dev, skb->data, maplen, in slic_refill_rx_queue()
413 if (dma_mapping_error(&sdev->pdev->dev, paddr)) { in slic_refill_rx_queue()
429 dma_sync_single_for_cpu(&sdev->pdev->dev, paddr, in slic_refill_rx_queue()
434 dma_sync_single_for_device(&sdev->pdev->dev, paddr, in slic_refill_rx_queue()
446 slic_write(sdev, SLIC_REG_HBAR, lower_32_bits(paddr) + offset); in slic_refill_rx_queue()
451 static void slic_handle_frame_error(struct slic_device *sdev, in slic_handle_frame_error() argument
454 struct slic_stats *stats = &sdev->stats; in slic_handle_frame_error()
456 if (sdev->model == SLIC_MODEL_OASIS) { in slic_handle_frame_error()
547 static void slic_handle_receive(struct slic_device *sdev, unsigned int todo, in slic_handle_receive() argument
550 struct slic_rx_queue *rxq = &sdev->rxq; in slic_handle_receive()
551 struct net_device *dev = sdev->netdev; in slic_handle_receive()
569 dma_sync_single_for_cpu(&sdev->pdev->dev, in slic_handle_receive()
576 dma_sync_single_for_device(&sdev->pdev->dev, in slic_handle_receive()
587 dma_unmap_single(&sdev->pdev->dev, in slic_handle_receive()
596 slic_handle_frame_error(sdev, skb); in slic_handle_receive()
602 SLIC_INC_STATS_COUNTER(&sdev->stats, rx_mcasts); in slic_handle_receive()
609 napi_gro_receive(&sdev->napi, skb); in slic_handle_receive()
618 u64_stats_update_begin(&sdev->stats.syncp); in slic_handle_receive()
619 sdev->stats.rx_bytes += bytes; in slic_handle_receive()
620 sdev->stats.rx_packets += frames; in slic_handle_receive()
621 u64_stats_update_end(&sdev->stats.syncp); in slic_handle_receive()
623 slic_refill_rx_queue(sdev, GFP_ATOMIC); in slic_handle_receive()
626 static void slic_handle_link_irq(struct slic_device *sdev) in slic_handle_link_irq() argument
628 struct slic_shmem *sm = &sdev->shmem; in slic_handle_link_irq()
650 slic_configure_link(sdev, speed, duplex); in slic_handle_link_irq()
653 static void slic_handle_upr_irq(struct slic_device *sdev, u32 irqs) in slic_handle_upr_irq() argument
658 upr = slic_dequeue_upr(sdev); in slic_handle_upr_irq()
660 netdev_warn(sdev->netdev, "no upr found on list\n"); in slic_handle_upr_irq()
667 slic_queue_upr(sdev, upr); in slic_handle_upr_irq()
670 slic_handle_link_irq(sdev); in slic_handle_upr_irq()
675 static int slic_handle_link_change(struct slic_device *sdev) in slic_handle_link_change() argument
677 return slic_new_upr(sdev, SLIC_UPR_LSTAT, sdev->shmem.link_paddr); in slic_handle_link_change()
680 static void slic_handle_err_irq(struct slic_device *sdev, u32 isr) in slic_handle_err_irq() argument
682 struct slic_stats *stats = &sdev->stats; in slic_handle_err_irq()
692 static void slic_handle_irq(struct slic_device *sdev, u32 isr, in slic_handle_irq() argument
696 slic_handle_err_irq(sdev, isr); in slic_handle_irq()
699 slic_handle_link_change(sdev); in slic_handle_irq()
702 slic_handle_upr_irq(sdev, isr); in slic_handle_irq()
705 slic_handle_receive(sdev, todo, done); in slic_handle_irq()
708 slic_xmit_complete(sdev); in slic_handle_irq()
713 struct slic_device *sdev = container_of(napi, struct slic_device, napi); in slic_poll() local
714 struct slic_shmem *sm = &sdev->shmem; in slic_poll()
719 slic_handle_irq(sdev, isr, todo, &done); in slic_poll()
727 slic_write(sdev, SLIC_REG_ISR, 0); in slic_poll()
728 slic_flush_write(sdev); in slic_poll()
736 struct slic_device *sdev = dev_id; in slic_irq() local
737 struct slic_shmem *sm = &sdev->shmem; in slic_irq()
740 slic_write(sdev, SLIC_REG_ICR, SLIC_ICR_INT_MASK); in slic_irq()
741 slic_flush_write(sdev); in slic_irq()
748 slic_write(sdev, SLIC_REG_ISR, 0); in slic_irq()
749 slic_flush_write(sdev); in slic_irq()
753 napi_schedule_irqoff(&sdev->napi); in slic_irq()
758 static void slic_card_reset(struct slic_device *sdev) in slic_card_reset() argument
762 slic_write(sdev, SLIC_REG_RESET, SLIC_RESET_MAGIC); in slic_card_reset()
764 pci_read_config_word(sdev->pdev, PCI_COMMAND, &cmd); in slic_card_reset()
768 static int slic_init_stat_queue(struct slic_device *sdev) in slic_init_stat_queue() argument
771 struct slic_stat_queue *stq = &sdev->stq; in slic_init_stat_queue()
787 descs = dma_alloc_coherent(&sdev->pdev->dev, size, &paddr, in slic_init_stat_queue()
790 netdev_err(sdev->netdev, in slic_init_stat_queue()
804 slic_write(sdev, SLIC_REG_RBAR, lower_32_bits(paddr) | in slic_init_stat_queue()
817 dma_free_coherent(&sdev->pdev->dev, stq->mem_size, in slic_init_stat_queue()
825 static void slic_free_stat_queue(struct slic_device *sdev) in slic_free_stat_queue() argument
827 struct slic_stat_queue *stq = &sdev->stq; in slic_free_stat_queue()
831 dma_free_coherent(&sdev->pdev->dev, stq->mem_size, in slic_free_stat_queue()
837 static int slic_init_tx_queue(struct slic_device *sdev) in slic_init_tx_queue() argument
839 struct slic_tx_queue *txq = &sdev->txq; in slic_init_tx_queue()
853 txq->dma_pool = dma_pool_create("slic_pool", &sdev->pdev->dev, in slic_init_tx_queue()
858 netdev_err(sdev->netdev, "failed to create dma pool\n"); in slic_init_tx_queue()
867 netdev_err(sdev->netdev, in slic_init_tx_queue()
895 static void slic_free_tx_queue(struct slic_device *sdev) in slic_free_tx_queue() argument
897 struct slic_tx_queue *txq = &sdev->txq; in slic_free_tx_queue()
907 dma_unmap_single(&sdev->pdev->dev, in slic_free_tx_queue()
917 static int slic_init_rx_queue(struct slic_device *sdev) in slic_init_rx_queue() argument
919 struct slic_rx_queue *rxq = &sdev->rxq; in slic_init_rx_queue()
931 slic_refill_rx_queue(sdev, GFP_KERNEL); in slic_init_rx_queue()
936 static void slic_free_rx_queue(struct slic_device *sdev) in slic_free_rx_queue() argument
938 struct slic_rx_queue *rxq = &sdev->rxq; in slic_free_rx_queue()
949 dma_unmap_single(&sdev->pdev->dev, in slic_free_rx_queue()
958 static void slic_set_link_autoneg(struct slic_device *sdev) in slic_set_link_autoneg() argument
960 unsigned int subid = sdev->pdev->subsystem_device; in slic_set_link_autoneg()
963 if (sdev->is_fiber) { in slic_set_link_autoneg()
971 slic_write(sdev, SLIC_REG_WPHY, val); in slic_set_link_autoneg()
975 slic_write(sdev, SLIC_REG_WPHY, val); in slic_set_link_autoneg()
987 slic_write(sdev, SLIC_REG_WPHY, val); in slic_set_link_autoneg()
991 slic_write(sdev, SLIC_REG_WPHY, val); in slic_set_link_autoneg()
996 slic_write(sdev, SLIC_REG_WPHY, val); in slic_set_link_autoneg()
1001 slic_write(sdev, SLIC_REG_WPHY, val); in slic_set_link_autoneg()
1005 slic_write(sdev, SLIC_REG_WPHY, val); in slic_set_link_autoneg()
1010 static void slic_set_mac_address(struct slic_device *sdev) in slic_set_mac_address() argument
1012 u8 *addr = sdev->netdev->dev_addr; in slic_set_mac_address()
1017 slic_write(sdev, SLIC_REG_WRADDRAL, val); in slic_set_mac_address()
1018 slic_write(sdev, SLIC_REG_WRADDRBL, val); in slic_set_mac_address()
1022 slic_write(sdev, SLIC_REG_WRADDRAH, val); in slic_set_mac_address()
1023 slic_write(sdev, SLIC_REG_WRADDRBH, val); in slic_set_mac_address()
1024 slic_flush_write(sdev); in slic_set_mac_address()
1042 static int slic_load_rcvseq_firmware(struct slic_device *sdev) in slic_load_rcvseq_firmware() argument
1052 file = (sdev->model == SLIC_MODEL_OASIS) ? SLIC_RCV_FIRMWARE_OASIS : in slic_load_rcvseq_firmware()
1054 err = request_firmware(&fw, file, &sdev->pdev->dev); in slic_load_rcvseq_firmware()
1056 dev_err(&sdev->pdev->dev, in slic_load_rcvseq_firmware()
1064 dev_err(&sdev->pdev->dev, in slic_load_rcvseq_firmware()
1075 dev_err(&sdev->pdev->dev, in slic_load_rcvseq_firmware()
1082 slic_write(sdev, SLIC_REG_RCV_WCS, SLIC_RCVWCS_BEGIN); in slic_load_rcvseq_firmware()
1086 slic_write(sdev, SLIC_REG_RCV_WCS, addr); in slic_load_rcvseq_firmware()
1090 slic_write(sdev, SLIC_REG_RCV_WCS, instr); in slic_load_rcvseq_firmware()
1096 slic_write(sdev, SLIC_REG_RCV_WCS, instr); in slic_load_rcvseq_firmware()
1099 slic_write(sdev, SLIC_REG_RCV_WCS, SLIC_RCVWCS_FINISH); in slic_load_rcvseq_firmware()
1100 slic_flush_write(sdev); in slic_load_rcvseq_firmware()
1110 static int slic_load_firmware(struct slic_device *sdev) in slic_load_firmware() argument
1127 file = (sdev->model == SLIC_MODEL_OASIS) ? SLIC_FIRMWARE_OASIS : in slic_load_firmware()
1129 err = request_firmware(&fw, file, &sdev->pdev->dev); in slic_load_firmware()
1131 dev_err(&sdev->pdev->dev, "failed to load firmware %s\n", file); in slic_load_firmware()
1138 dev_err(&sdev->pdev->dev, in slic_load_firmware()
1147 dev_err(&sdev->pdev->dev, in slic_load_firmware()
1161 dev_err(&sdev->pdev->dev, in slic_load_firmware()
1181 slic_write(sdev, SLIC_REG_WCS, base + addr); in slic_load_firmware()
1183 slic_write(sdev, SLIC_REG_WCS, instr); in slic_load_firmware()
1186 slic_write(sdev, SLIC_REG_WCS, instr); in slic_load_firmware()
1203 slic_write(sdev, SLIC_REG_WCS, in slic_load_firmware()
1206 slic_write(sdev, SLIC_REG_WCS, instr); in slic_load_firmware()
1209 slic_write(sdev, SLIC_REG_WCS, instr); in slic_load_firmware()
1213 slic_flush_write(sdev); in slic_load_firmware()
1216 slic_write(sdev, SLIC_REG_WCS, SLIC_WCS_START); in slic_load_firmware()
1217 slic_flush_write(sdev); in slic_load_firmware()
1226 static int slic_init_shmem(struct slic_device *sdev) in slic_init_shmem() argument
1228 struct slic_shmem *sm = &sdev->shmem; in slic_init_shmem()
1232 sm_data = dma_alloc_coherent(&sdev->pdev->dev, sizeof(*sm_data), in slic_init_shmem()
1235 dev_err(&sdev->pdev->dev, "failed to allocate shared memory\n"); in slic_init_shmem()
1246 static void slic_free_shmem(struct slic_device *sdev) in slic_free_shmem() argument
1248 struct slic_shmem *sm = &sdev->shmem; in slic_free_shmem()
1251 dma_free_coherent(&sdev->pdev->dev, sizeof(*sm_data), sm_data, in slic_free_shmem()
1255 static int slic_init_iface(struct slic_device *sdev) in slic_init_iface() argument
1257 struct slic_shmem *sm = &sdev->shmem; in slic_init_iface()
1260 sdev->upr_list.pending = false; in slic_init_iface()
1262 err = slic_init_shmem(sdev); in slic_init_iface()
1264 netdev_err(sdev->netdev, "failed to init shared memory\n"); in slic_init_iface()
1268 err = slic_load_firmware(sdev); in slic_init_iface()
1270 netdev_err(sdev->netdev, "failed to load firmware\n"); in slic_init_iface()
1274 err = slic_load_rcvseq_firmware(sdev); in slic_init_iface()
1276 netdev_err(sdev->netdev, in slic_init_iface()
1281 slic_write(sdev, SLIC_REG_ICR, SLIC_ICR_INT_OFF); in slic_init_iface()
1282 slic_flush_write(sdev); in slic_init_iface()
1285 err = slic_init_rx_queue(sdev); in slic_init_iface()
1287 netdev_err(sdev->netdev, "failed to init rx queue: %u\n", err); in slic_init_iface()
1291 err = slic_init_tx_queue(sdev); in slic_init_iface()
1293 netdev_err(sdev->netdev, "failed to init tx queue: %u\n", err); in slic_init_iface()
1297 err = slic_init_stat_queue(sdev); in slic_init_iface()
1299 netdev_err(sdev->netdev, "failed to init status queue: %u\n", in slic_init_iface()
1304 slic_write(sdev, SLIC_REG_ISP, lower_32_bits(sm->isr_paddr)); in slic_init_iface()
1305 napi_enable(&sdev->napi); in slic_init_iface()
1307 slic_write(sdev, SLIC_REG_INTAGG, 0); in slic_init_iface()
1308 slic_write(sdev, SLIC_REG_ISR, 0); in slic_init_iface()
1309 slic_flush_write(sdev); in slic_init_iface()
1311 slic_set_mac_address(sdev); in slic_init_iface()
1313 spin_lock_bh(&sdev->link_lock); in slic_init_iface()
1314 sdev->duplex = DUPLEX_UNKNOWN; in slic_init_iface()
1315 sdev->speed = SPEED_UNKNOWN; in slic_init_iface()
1316 spin_unlock_bh(&sdev->link_lock); in slic_init_iface()
1318 slic_set_link_autoneg(sdev); in slic_init_iface()
1320 err = request_irq(sdev->pdev->irq, slic_irq, IRQF_SHARED, DRV_NAME, in slic_init_iface()
1321 sdev); in slic_init_iface()
1323 netdev_err(sdev->netdev, "failed to request irq: %u\n", err); in slic_init_iface()
1327 slic_write(sdev, SLIC_REG_ICR, SLIC_ICR_INT_ON); in slic_init_iface()
1328 slic_flush_write(sdev); in slic_init_iface()
1330 err = slic_handle_link_change(sdev); in slic_init_iface()
1332 netdev_warn(sdev->netdev, in slic_init_iface()
1337 napi_disable(&sdev->napi); in slic_init_iface()
1338 slic_free_stat_queue(sdev); in slic_init_iface()
1340 slic_free_tx_queue(sdev); in slic_init_iface()
1342 slic_free_rx_queue(sdev); in slic_init_iface()
1344 slic_free_shmem(sdev); in slic_init_iface()
1345 slic_card_reset(sdev); in slic_init_iface()
1352 struct slic_device *sdev = netdev_priv(dev); in slic_open() local
1357 err = slic_init_iface(sdev); in slic_open()
1370 struct slic_device *sdev = netdev_priv(dev); in slic_close() local
1376 napi_disable(&sdev->napi); in slic_close()
1377 slic_write(sdev, SLIC_REG_ICR, SLIC_ICR_INT_OFF); in slic_close()
1378 slic_write(sdev, SLIC_REG_ISR, 0); in slic_close()
1379 slic_flush_write(sdev); in slic_close()
1381 free_irq(sdev->pdev->irq, sdev); in slic_close()
1384 slic_write(sdev, SLIC_REG_WXCFG, val); in slic_close()
1388 slic_write(sdev, SLIC_REG_WRCFG, val); in slic_close()
1391 slic_write(sdev, SLIC_REG_WPHY, val); in slic_close()
1392 slic_flush_write(sdev); in slic_close()
1394 slic_clear_upr_list(&sdev->upr_list); in slic_close()
1395 slic_write(sdev, SLIC_REG_QUIESCE, 0); in slic_close()
1397 slic_free_stat_queue(sdev); in slic_close()
1398 slic_free_tx_queue(sdev); in slic_close()
1399 slic_free_rx_queue(sdev); in slic_close()
1400 slic_free_shmem(sdev); in slic_close()
1402 slic_card_reset(sdev); in slic_close()
1410 struct slic_device *sdev = netdev_priv(dev); in slic_xmit() local
1411 struct slic_tx_queue *txq = &sdev->txq; in slic_xmit()
1425 paddr = dma_map_single(&sdev->pdev->dev, skb->data, maplen, in slic_xmit()
1427 if (dma_mapping_error(&sdev->pdev->dev, paddr)) { in slic_xmit()
1449 slic_write(sdev, SLIC_REG_CBAR, cbar_val); in slic_xmit()
1464 struct slic_device *sdev = netdev_priv(dev); in slic_get_stats() local
1465 struct slic_stats *stats = &sdev->stats; in slic_get_stats()
1494 struct slic_device *sdev = netdev_priv(dev); in slic_get_ethtool_stats() local
1495 struct slic_stats *stats = &sdev->stats; in slic_get_ethtool_stats()
1533 struct slic_device *sdev = netdev_priv(dev); in slic_get_drvinfo() local
1537 strlcpy(info->bus_info, pci_name(sdev->pdev), sizeof(info->bus_info)); in slic_get_drvinfo()
1597 static int slic_read_eeprom(struct slic_device *sdev) in slic_read_eeprom() argument
1599 unsigned int devfn = PCI_FUNC(sdev->pdev->devfn); in slic_read_eeprom()
1600 struct slic_shmem *sm = &sdev->shmem; in slic_read_eeprom()
1611 eeprom = dma_alloc_coherent(&sdev->pdev->dev, SLIC_EEPROM_SIZE, in slic_read_eeprom()
1616 slic_write(sdev, SLIC_REG_ICR, SLIC_ICR_INT_OFF); in slic_read_eeprom()
1618 slic_write(sdev, SLIC_REG_ISP, lower_32_bits(sm->isr_paddr)); in slic_read_eeprom()
1620 err = slic_new_upr(sdev, SLIC_UPR_CONFIG, paddr); in slic_read_eeprom()
1628 dev_err(&sdev->pdev->dev, in slic_read_eeprom()
1632 upr = slic_dequeue_upr(sdev); in slic_read_eeprom()
1636 slic_write(sdev, SLIC_REG_ISP, 0); in slic_read_eeprom()
1637 slic_write(sdev, SLIC_REG_ISR, 0); in slic_read_eeprom()
1638 slic_flush_write(sdev); in slic_read_eeprom()
1643 if (sdev->model == SLIC_MODEL_OASIS) { in slic_read_eeprom()
1660 dev_err(&sdev->pdev->dev, "invalid checksum in eeprom\n"); in slic_read_eeprom()
1665 ether_addr_copy(sdev->netdev->dev_addr, mac[devfn]); in slic_read_eeprom()
1667 dma_free_coherent(&sdev->pdev->dev, SLIC_EEPROM_SIZE, eeprom, paddr); in slic_read_eeprom()
1672 static int slic_init(struct slic_device *sdev) in slic_init() argument
1676 spin_lock_init(&sdev->upper_lock); in slic_init()
1677 spin_lock_init(&sdev->link_lock); in slic_init()
1678 INIT_LIST_HEAD(&sdev->upr_list.list); in slic_init()
1679 spin_lock_init(&sdev->upr_list.lock); in slic_init()
1680 u64_stats_init(&sdev->stats.syncp); in slic_init()
1682 slic_card_reset(sdev); in slic_init()
1684 err = slic_load_firmware(sdev); in slic_init()
1686 dev_err(&sdev->pdev->dev, "failed to load firmware\n"); in slic_init()
1691 err = slic_init_shmem(sdev); in slic_init()
1693 dev_err(&sdev->pdev->dev, "failed to init shared memory\n"); in slic_init()
1697 err = slic_read_eeprom(sdev); in slic_init()
1699 dev_err(&sdev->pdev->dev, "failed to read eeprom\n"); in slic_init()
1703 slic_card_reset(sdev); in slic_init()
1704 slic_free_shmem(sdev); in slic_init()
1708 slic_free_shmem(sdev); in slic_init()
1743 struct slic_device *sdev; in slic_probe() local
1772 dev = alloc_etherdev(sizeof(*sdev)); in slic_probe()
1788 sdev = netdev_priv(dev); in slic_probe()
1789 sdev->model = (pdev->device == PCI_DEVICE_ID_ALACRITECH_OASIS) ? in slic_probe()
1791 sdev->is_fiber = slic_is_fiber(pdev->subsystem_device); in slic_probe()
1792 sdev->pdev = pdev; in slic_probe()
1793 sdev->netdev = dev; in slic_probe()
1794 sdev->regs = ioremap_nocache(pci_resource_start(pdev, 0), in slic_probe()
1796 if (!sdev->regs) { in slic_probe()
1802 err = slic_init(sdev); in slic_probe()
1808 netif_napi_add(dev, &sdev->napi, slic_poll, SLIC_NAPI_WEIGHT); in slic_probe()
1820 iounmap(sdev->regs); in slic_probe()
1834 struct slic_device *sdev = netdev_priv(dev); in slic_remove() local
1837 iounmap(sdev->regs); in slic_remove()