Lines Matching refs:rocker
96 static u32 rocker_msix_vector(const struct rocker *rocker, unsigned int vector) in rocker_msix_vector() argument
98 return rocker->msix_entries[vector].vector; in rocker_msix_vector()
103 return rocker_msix_vector(rocker_port->rocker, in rocker_msix_tx_vector()
109 return rocker_msix_vector(rocker_port->rocker, in rocker_msix_rx_vector()
113 #define rocker_write32(rocker, reg, val) \ argument
114 writel((val), (rocker)->hw_addr + (ROCKER_ ## reg))
115 #define rocker_read32(rocker, reg) \ argument
116 readl((rocker)->hw_addr + (ROCKER_ ## reg))
117 #define rocker_write64(rocker, reg, val) \ argument
118 writeq((val), (rocker)->hw_addr + (ROCKER_ ## reg))
119 #define rocker_read64(rocker, reg) \ argument
120 readq((rocker)->hw_addr + (ROCKER_ ## reg))
126 static int rocker_reg_test(const struct rocker *rocker) in rocker_reg_test() argument
128 const struct pci_dev *pdev = rocker->pdev; in rocker_reg_test()
134 rocker_write32(rocker, TEST_REG, rnd); in rocker_reg_test()
135 test_reg = rocker_read32(rocker, TEST_REG); in rocker_reg_test()
145 rocker_write64(rocker, TEST_REG64, rnd); in rocker_reg_test()
146 test_reg = rocker_read64(rocker, TEST_REG64); in rocker_reg_test()
156 static int rocker_dma_test_one(const struct rocker *rocker, in rocker_dma_test_one() argument
161 const struct pci_dev *pdev = rocker->pdev; in rocker_dma_test_one()
165 rocker_write32(rocker, TEST_DMA_CTRL, test_type); in rocker_dma_test_one()
185 static int rocker_dma_test_offset(const struct rocker *rocker, in rocker_dma_test_offset() argument
188 struct pci_dev *pdev = rocker->pdev; in rocker_dma_test_offset()
210 rocker_write64(rocker, TEST_DMA_ADDR, dma_handle); in rocker_dma_test_offset()
211 rocker_write32(rocker, TEST_DMA_SIZE, ROCKER_TEST_DMA_BUF_SIZE); in rocker_dma_test_offset()
214 err = rocker_dma_test_one(rocker, wait, ROCKER_TEST_DMA_CTRL_FILL, in rocker_dma_test_offset()
221 err = rocker_dma_test_one(rocker, wait, ROCKER_TEST_DMA_CTRL_CLEAR, in rocker_dma_test_offset()
230 err = rocker_dma_test_one(rocker, wait, ROCKER_TEST_DMA_CTRL_INVERT, in rocker_dma_test_offset()
245 static int rocker_dma_test(const struct rocker *rocker, in rocker_dma_test() argument
252 err = rocker_dma_test_offset(rocker, wait, i); in rocker_dma_test()
268 static int rocker_basic_hw_test(const struct rocker *rocker) in rocker_basic_hw_test() argument
270 const struct pci_dev *pdev = rocker->pdev; in rocker_basic_hw_test()
274 err = rocker_reg_test(rocker); in rocker_basic_hw_test()
280 err = request_irq(rocker_msix_vector(rocker, ROCKER_MSIX_VEC_TEST), in rocker_basic_hw_test()
289 rocker_write32(rocker, TEST_IRQ, ROCKER_MSIX_VEC_TEST); in rocker_basic_hw_test()
297 err = rocker_dma_test(rocker, &wait); in rocker_basic_hw_test()
302 free_irq(rocker_msix_vector(rocker, ROCKER_MSIX_VEC_TEST), &wait); in rocker_basic_hw_test()
386 static void rocker_desc_head_set(const struct rocker *rocker, in rocker_desc_head_set() argument
395 rocker_write32(rocker, DMA_DESC_HEAD(info->type), head); in rocker_desc_head_set()
413 static void rocker_dma_ring_credits_set(const struct rocker *rocker, in rocker_dma_ring_credits_set() argument
418 rocker_write32(rocker, DMA_DESC_CREDITS(info->type), credits); in rocker_dma_ring_credits_set()
427 static int rocker_dma_ring_create(const struct rocker *rocker, in rocker_dma_ring_create() argument
444 info->desc = dma_alloc_coherent(&rocker->pdev->dev, in rocker_dma_ring_create()
455 rocker_write32(rocker, DMA_DESC_CTRL(info->type), in rocker_dma_ring_create()
457 rocker_write64(rocker, DMA_DESC_ADDR(info->type), info->mapaddr); in rocker_dma_ring_create()
458 rocker_write32(rocker, DMA_DESC_SIZE(info->type), info->size); in rocker_dma_ring_create()
463 static void rocker_dma_ring_destroy(const struct rocker *rocker, in rocker_dma_ring_destroy() argument
466 rocker_write64(rocker, DMA_DESC_ADDR(info->type), 0); in rocker_dma_ring_destroy()
468 dma_free_coherent(&rocker->pdev->dev, in rocker_dma_ring_destroy()
474 static void rocker_dma_ring_pass_to_producer(const struct rocker *rocker, in rocker_dma_ring_pass_to_producer() argument
485 rocker_desc_head_set(rocker, info, &info->desc_info[i]); in rocker_dma_ring_pass_to_producer()
489 static int rocker_dma_ring_bufs_alloc(const struct rocker *rocker, in rocker_dma_ring_bufs_alloc() argument
493 struct pci_dev *pdev = rocker->pdev; in rocker_dma_ring_bufs_alloc()
538 static void rocker_dma_ring_bufs_free(const struct rocker *rocker, in rocker_dma_ring_bufs_free() argument
542 struct pci_dev *pdev = rocker->pdev; in rocker_dma_ring_bufs_free()
577 static int rocker_dma_cmd_ring_waits_alloc(const struct rocker *rocker) in rocker_dma_cmd_ring_waits_alloc() argument
579 const struct rocker_dma_ring_info *cmd_ring = &rocker->cmd_ring; in rocker_dma_cmd_ring_waits_alloc()
596 static void rocker_dma_cmd_ring_waits_free(const struct rocker *rocker) in rocker_dma_cmd_ring_waits_free() argument
598 const struct rocker_dma_ring_info *cmd_ring = &rocker->cmd_ring; in rocker_dma_cmd_ring_waits_free()
605 static int rocker_dma_rings_init(struct rocker *rocker) in rocker_dma_rings_init() argument
607 const struct pci_dev *pdev = rocker->pdev; in rocker_dma_rings_init()
610 err = rocker_dma_ring_create(rocker, ROCKER_DMA_CMD, in rocker_dma_rings_init()
612 &rocker->cmd_ring); in rocker_dma_rings_init()
618 spin_lock_init(&rocker->cmd_ring_lock); in rocker_dma_rings_init()
620 err = rocker_dma_ring_bufs_alloc(rocker, &rocker->cmd_ring, in rocker_dma_rings_init()
627 err = rocker_dma_cmd_ring_waits_alloc(rocker); in rocker_dma_rings_init()
633 err = rocker_dma_ring_create(rocker, ROCKER_DMA_EVENT, in rocker_dma_rings_init()
635 &rocker->event_ring); in rocker_dma_rings_init()
641 err = rocker_dma_ring_bufs_alloc(rocker, &rocker->event_ring, in rocker_dma_rings_init()
647 rocker_dma_ring_pass_to_producer(rocker, &rocker->event_ring); in rocker_dma_rings_init()
651 rocker_dma_ring_destroy(rocker, &rocker->event_ring); in rocker_dma_rings_init()
653 rocker_dma_cmd_ring_waits_free(rocker); in rocker_dma_rings_init()
655 rocker_dma_ring_bufs_free(rocker, &rocker->cmd_ring, in rocker_dma_rings_init()
658 rocker_dma_ring_destroy(rocker, &rocker->cmd_ring); in rocker_dma_rings_init()
662 static void rocker_dma_rings_fini(struct rocker *rocker) in rocker_dma_rings_fini() argument
664 rocker_dma_ring_bufs_free(rocker, &rocker->event_ring, in rocker_dma_rings_fini()
666 rocker_dma_ring_destroy(rocker, &rocker->event_ring); in rocker_dma_rings_fini()
667 rocker_dma_cmd_ring_waits_free(rocker); in rocker_dma_rings_fini()
668 rocker_dma_ring_bufs_free(rocker, &rocker->cmd_ring, in rocker_dma_rings_fini()
670 rocker_dma_ring_destroy(rocker, &rocker->cmd_ring); in rocker_dma_rings_fini()
677 const struct rocker *rocker = rocker_port->rocker; in rocker_dma_rx_ring_skb_map() local
678 struct pci_dev *pdev = rocker->pdev; in rocker_dma_rx_ring_skb_map()
728 static void rocker_dma_rx_ring_skb_unmap(const struct rocker *rocker, in rocker_dma_rx_ring_skb_unmap() argument
731 struct pci_dev *pdev = rocker->pdev; in rocker_dma_rx_ring_skb_unmap()
743 static void rocker_dma_rx_ring_skb_free(const struct rocker *rocker, in rocker_dma_rx_ring_skb_free() argument
752 rocker_dma_rx_ring_skb_unmap(rocker, attrs); in rocker_dma_rx_ring_skb_free()
759 const struct rocker *rocker = rocker_port->rocker; in rocker_dma_rx_ring_skbs_alloc() local
773 rocker_dma_rx_ring_skb_free(rocker, &rx_ring->desc_info[i]); in rocker_dma_rx_ring_skbs_alloc()
780 const struct rocker *rocker = rocker_port->rocker; in rocker_dma_rx_ring_skbs_free() local
784 rocker_dma_rx_ring_skb_free(rocker, &rx_ring->desc_info[i]); in rocker_dma_rx_ring_skbs_free()
789 struct rocker *rocker = rocker_port->rocker; in rocker_port_dma_rings_init() local
792 err = rocker_dma_ring_create(rocker, in rocker_port_dma_rings_init()
801 err = rocker_dma_ring_bufs_alloc(rocker, &rocker_port->tx_ring, in rocker_port_dma_rings_init()
809 err = rocker_dma_ring_create(rocker, in rocker_port_dma_rings_init()
818 err = rocker_dma_ring_bufs_alloc(rocker, &rocker_port->rx_ring, in rocker_port_dma_rings_init()
831 rocker_dma_ring_pass_to_producer(rocker, &rocker_port->rx_ring); in rocker_port_dma_rings_init()
836 rocker_dma_ring_bufs_free(rocker, &rocker_port->rx_ring, in rocker_port_dma_rings_init()
839 rocker_dma_ring_destroy(rocker, &rocker_port->rx_ring); in rocker_port_dma_rings_init()
841 rocker_dma_ring_bufs_free(rocker, &rocker_port->tx_ring, in rocker_port_dma_rings_init()
844 rocker_dma_ring_destroy(rocker, &rocker_port->tx_ring); in rocker_port_dma_rings_init()
850 struct rocker *rocker = rocker_port->rocker; in rocker_port_dma_rings_fini() local
853 rocker_dma_ring_bufs_free(rocker, &rocker_port->rx_ring, in rocker_port_dma_rings_fini()
855 rocker_dma_ring_destroy(rocker, &rocker_port->rx_ring); in rocker_port_dma_rings_fini()
856 rocker_dma_ring_bufs_free(rocker, &rocker_port->tx_ring, in rocker_port_dma_rings_fini()
858 rocker_dma_ring_destroy(rocker, &rocker_port->tx_ring); in rocker_port_dma_rings_fini()
864 u64 val = rocker_read64(rocker_port->rocker, PORT_PHYS_ENABLE); in rocker_port_set_enable()
870 rocker_write64(rocker_port->rocker, PORT_PHYS_ENABLE, val); in rocker_port_set_enable()
879 struct rocker *rocker = dev_id; in rocker_cmd_irq_handler() local
884 spin_lock(&rocker->cmd_ring_lock); in rocker_cmd_irq_handler()
885 while ((desc_info = rocker_desc_tail_get(&rocker->cmd_ring))) { in rocker_cmd_irq_handler()
894 spin_unlock(&rocker->cmd_ring_lock); in rocker_cmd_irq_handler()
895 rocker_dma_ring_credits_set(rocker, &rocker->cmd_ring, credits); in rocker_cmd_irq_handler()
912 static int rocker_event_link_change(const struct rocker *rocker, in rocker_event_link_change() argument
928 if (port_number >= rocker->port_count) in rocker_event_link_change()
931 rocker_port = rocker->ports[port_number]; in rocker_event_link_change()
946 static int rocker_event_mac_vlan_seen(const struct rocker *rocker, in rocker_event_mac_vlan_seen() argument
965 if (port_number >= rocker->port_count) in rocker_event_mac_vlan_seen()
968 rocker_port = rocker->ports[port_number]; in rocker_event_mac_vlan_seen()
972 static int rocker_event_process(const struct rocker *rocker, in rocker_event_process() argument
989 return rocker_event_link_change(rocker, info); in rocker_event_process()
991 return rocker_event_mac_vlan_seen(rocker, info); in rocker_event_process()
999 struct rocker *rocker = dev_id; in rocker_event_irq_handler() local
1000 const struct pci_dev *pdev = rocker->pdev; in rocker_event_irq_handler()
1005 while ((desc_info = rocker_desc_tail_get(&rocker->event_ring))) { in rocker_event_irq_handler()
1011 err = rocker_event_process(rocker, desc_info); in rocker_event_irq_handler()
1017 rocker_desc_head_set(rocker, &rocker->event_ring, desc_info); in rocker_event_irq_handler()
1020 rocker_dma_ring_credits_set(rocker, &rocker->event_ring, credits); in rocker_event_irq_handler()
1049 struct rocker *rocker = rocker_port->rocker; in rocker_cmd_exec() local
1055 spin_lock_irqsave(&rocker->cmd_ring_lock, lock_flags); in rocker_cmd_exec()
1057 desc_info = rocker_desc_head_get(&rocker->cmd_ring); in rocker_cmd_exec()
1059 spin_unlock_irqrestore(&rocker->cmd_ring_lock, lock_flags); in rocker_cmd_exec()
1069 spin_unlock_irqrestore(&rocker->cmd_ring_lock, lock_flags); in rocker_cmd_exec()
1073 rocker_desc_head_set(rocker, &rocker->cmd_ring, desc_info); in rocker_cmd_exec()
1075 spin_unlock_irqrestore(&rocker->cmd_ring_lock, lock_flags); in rocker_cmd_exec()
1436 static int rocker_world_init(struct rocker *rocker, u8 mode) in rocker_world_init() argument
1443 dev_err(&rocker->pdev->dev, "port mode \"%d\" is not supported\n", in rocker_world_init()
1447 rocker->wops = wops; in rocker_world_init()
1448 rocker->wpriv = kzalloc(wops->priv_size, GFP_KERNEL); in rocker_world_init()
1449 if (!rocker->wpriv) in rocker_world_init()
1453 err = wops->init(rocker); in rocker_world_init()
1455 kfree(rocker->wpriv); in rocker_world_init()
1459 static void rocker_world_fini(struct rocker *rocker) in rocker_world_fini() argument
1461 struct rocker_world_ops *wops = rocker->wops; in rocker_world_fini()
1465 wops->fini(rocker); in rocker_world_fini()
1466 kfree(rocker->wpriv); in rocker_world_fini()
1471 struct rocker *rocker = rocker_port->rocker; in rocker_world_check_init() local
1477 dev_err(&rocker->pdev->dev, "failed to get port mode\n"); in rocker_world_check_init()
1480 if (rocker->wops) { in rocker_world_check_init()
1481 if (rocker->wops->mode != mode) { in rocker_world_check_init()
1482 dev_err(&rocker->pdev->dev, "hardware has ports in different worlds, which is not supported\n"); in rocker_world_check_init()
1487 return rocker_world_init(rocker, mode); in rocker_world_check_init()
1492 struct rocker_world_ops *wops = rocker_port->rocker->wops; in rocker_world_port_pre_init()
1508 struct rocker_world_ops *wops = rocker_port->rocker->wops; in rocker_world_port_init()
1517 struct rocker_world_ops *wops = rocker_port->rocker->wops; in rocker_world_port_fini()
1526 struct rocker_world_ops *wops = rocker_port->rocker->wops; in rocker_world_port_post_fini()
1536 struct rocker_world_ops *wops = rocker_port->rocker->wops; in rocker_world_port_open()
1545 struct rocker_world_ops *wops = rocker_port->rocker->wops; in rocker_world_port_stop()
1556 struct rocker_world_ops *wops = rocker_port->rocker->wops; in rocker_world_port_attr_stp_state_set()
1573 struct rocker_world_ops *wops = rocker_port->rocker->wops; in rocker_world_port_attr_bridge_flags_support_get()
1586 struct rocker_world_ops *wops = rocker_port->rocker->wops; in rocker_world_port_attr_pre_bridge_flags_set()
1609 struct rocker_world_ops *wops = rocker_port->rocker->wops; in rocker_world_port_attr_bridge_flags_set()
1627 struct rocker_world_ops *wops = rocker_port->rocker->wops; in rocker_world_port_attr_bridge_ageing_time_set()
1644 struct rocker_world_ops *wops = rocker_port->rocker->wops; in rocker_world_port_obj_vlan_add()
1659 struct rocker_world_ops *wops = rocker_port->rocker->wops; in rocker_world_port_obj_vlan_del()
1673 struct rocker_world_ops *wops = rocker_port->rocker->wops; in rocker_world_port_fdb_add()
1685 struct rocker_world_ops *wops = rocker_port->rocker->wops; in rocker_world_port_fdb_del()
1695 struct rocker_world_ops *wops = rocker_port->rocker->wops; in rocker_world_port_master_linked()
1705 struct rocker_world_ops *wops = rocker_port->rocker->wops; in rocker_world_port_master_unlinked()
1715 struct rocker_world_ops *wops = rocker_port->rocker->wops; in rocker_world_port_neigh_update()
1725 struct rocker_world_ops *wops = rocker_port->rocker->wops; in rocker_world_port_neigh_destroy()
1736 struct rocker_world_ops *wops = rocker_port->rocker->wops; in rocker_world_port_ev_mac_vlan_seen()
1743 static int rocker_world_fib4_add(struct rocker *rocker, in rocker_world_fib4_add() argument
1746 struct rocker_world_ops *wops = rocker->wops; in rocker_world_fib4_add()
1750 return wops->fib4_add(rocker, fen_info); in rocker_world_fib4_add()
1753 static int rocker_world_fib4_del(struct rocker *rocker, in rocker_world_fib4_del() argument
1756 struct rocker_world_ops *wops = rocker->wops; in rocker_world_fib4_del()
1760 return wops->fib4_del(rocker, fen_info); in rocker_world_fib4_del()
1763 static void rocker_world_fib4_abort(struct rocker *rocker) in rocker_world_fib4_abort() argument
1765 struct rocker_world_ops *wops = rocker->wops; in rocker_world_fib4_abort()
1768 wops->fib4_abort(rocker); in rocker_world_fib4_abort()
1841 const struct rocker *rocker = rocker_port->rocker; in rocker_tx_desc_frags_unmap() local
1842 struct pci_dev *pdev = rocker->pdev; in rocker_tx_desc_frags_unmap()
1872 const struct rocker *rocker = rocker_port->rocker; in rocker_tx_desc_frag_map_put() local
1873 struct pci_dev *pdev = rocker->pdev; in rocker_tx_desc_frag_map_put()
1905 struct rocker *rocker = rocker_port->rocker; in rocker_port_xmit() local
1945 rocker_desc_head_set(rocker, &rocker_port->tx_ring, desc_info); in rocker_port_xmit()
2044 const struct rocker *rocker = rocker_port->rocker; in rocker_port_get_port_parent_id() local
2046 ppid->id_len = sizeof(rocker->hw.id); in rocker_port_get_port_parent_id()
2047 memcpy(&ppid->id, &rocker->hw.id, ppid->id_len); in rocker_port_get_port_parent_id()
2150 struct rocker *rocker; member
2158 struct rocker *rocker = fib_work->rocker; in rocker_router_fib_event_work() local
2166 err = rocker_world_fib4_add(rocker, &fib_work->fen_info); in rocker_router_fib_event_work()
2168 rocker_world_fib4_abort(rocker); in rocker_router_fib_event_work()
2172 rocker_world_fib4_del(rocker, &fib_work->fen_info); in rocker_router_fib_event_work()
2179 rocker_world_fib4_abort(rocker); in rocker_router_fib_event_work()
2191 struct rocker *rocker = container_of(nb, struct rocker, fib_nb); in rocker_router_fib_event() local
2203 fib_work->rocker = rocker; in rocker_router_fib_event()
2237 queue_work(rocker->rocker_owq, &fib_work->work); in rocker_router_fib_event()
2420 const struct rocker *rocker = rocker_port->rocker; in rocker_port_poll_tx() local
2451 rocker_dma_ring_credits_set(rocker, &rocker_port->tx_ring, credits); in rocker_port_poll_tx()
2456 static int rocker_port_rx_proc(const struct rocker *rocker, in rocker_port_rx_proc() argument
2474 rocker_dma_rx_ring_skb_unmap(rocker, attrs); in rocker_port_rx_proc()
2499 const struct rocker *rocker = rocker_port->rocker; in rocker_port_poll_rx() local
2513 err = rocker_port_rx_proc(rocker, rocker_port, in rocker_port_poll_rx()
2523 rocker_desc_head_set(rocker, &rocker_port->rx_ring, desc_info); in rocker_port_poll_rx()
2530 rocker_dma_ring_credits_set(rocker, &rocker_port->rx_ring, credits); in rocker_port_poll_rx()
2541 const struct rocker *rocker = rocker_port->rocker; in rocker_carrier_init() local
2542 u64 link_status = rocker_read64(rocker, PORT_PHYS_LINK_STATUS); in rocker_carrier_init()
2552 static void rocker_remove_ports(struct rocker *rocker) in rocker_remove_ports() argument
2557 for (i = 0; i < rocker->port_count; i++) { in rocker_remove_ports()
2558 rocker_port = rocker->ports[i]; in rocker_remove_ports()
2566 rocker_world_fini(rocker); in rocker_remove_ports()
2567 kfree(rocker->ports); in rocker_remove_ports()
2572 const struct rocker *rocker = rocker_port->rocker; in rocker_port_dev_addr_init() local
2573 const struct pci_dev *pdev = rocker->pdev; in rocker_port_dev_addr_init()
2586 static int rocker_probe_port(struct rocker *rocker, unsigned int port_number) in rocker_probe_port() argument
2588 struct pci_dev *pdev = rocker->pdev; in rocker_probe_port()
2599 rocker_port->rocker = rocker; in rocker_probe_port()
2634 rocker->ports[port_number] = rocker_port; in rocker_probe_port()
2645 rocker->ports[port_number] = NULL; in rocker_probe_port()
2655 static int rocker_probe_ports(struct rocker *rocker) in rocker_probe_ports() argument
2661 alloc_size = sizeof(struct rocker_port *) * rocker->port_count; in rocker_probe_ports()
2662 rocker->ports = kzalloc(alloc_size, GFP_KERNEL); in rocker_probe_ports()
2663 if (!rocker->ports) in rocker_probe_ports()
2665 for (i = 0; i < rocker->port_count; i++) { in rocker_probe_ports()
2666 err = rocker_probe_port(rocker, i); in rocker_probe_ports()
2673 rocker_remove_ports(rocker); in rocker_probe_ports()
2677 static int rocker_msix_init(struct rocker *rocker) in rocker_msix_init() argument
2679 struct pci_dev *pdev = rocker->pdev; in rocker_msix_init()
2688 if (msix_entries != ROCKER_MSIX_VEC_COUNT(rocker->port_count)) in rocker_msix_init()
2691 rocker->msix_entries = kmalloc_array(msix_entries, in rocker_msix_init()
2694 if (!rocker->msix_entries) in rocker_msix_init()
2698 rocker->msix_entries[i].entry = i; in rocker_msix_init()
2700 err = pci_enable_msix_exact(pdev, rocker->msix_entries, msix_entries); in rocker_msix_init()
2707 kfree(rocker->msix_entries); in rocker_msix_init()
2711 static void rocker_msix_fini(const struct rocker *rocker) in rocker_msix_fini() argument
2713 pci_disable_msix(rocker->pdev); in rocker_msix_fini()
2714 kfree(rocker->msix_entries); in rocker_msix_fini()
2837 queue_work(rocker_port->rocker->rocker_owq, in rocker_switchdev_event()
2892 struct rocker *rocker; in rocker_probe() local
2895 rocker = kzalloc(sizeof(*rocker), GFP_KERNEL); in rocker_probe()
2896 if (!rocker) in rocker_probe()
2932 rocker->hw_addr = ioremap(pci_resource_start(pdev, 0), in rocker_probe()
2934 if (!rocker->hw_addr) { in rocker_probe()
2941 rocker->pdev = pdev; in rocker_probe()
2942 pci_set_drvdata(pdev, rocker); in rocker_probe()
2944 rocker->port_count = rocker_read32(rocker, PORT_PHYS_COUNT); in rocker_probe()
2946 err = rocker_msix_init(rocker); in rocker_probe()
2952 err = rocker_basic_hw_test(rocker); in rocker_probe()
2958 rocker_write32(rocker, CONTROL, ROCKER_CONTROL_RESET); in rocker_probe()
2960 err = rocker_dma_rings_init(rocker); in rocker_probe()
2964 err = request_irq(rocker_msix_vector(rocker, ROCKER_MSIX_VEC_CMD), in rocker_probe()
2966 rocker_driver_name, rocker); in rocker_probe()
2972 err = request_irq(rocker_msix_vector(rocker, ROCKER_MSIX_VEC_EVENT), in rocker_probe()
2974 rocker_driver_name, rocker); in rocker_probe()
2980 rocker->rocker_owq = alloc_ordered_workqueue(rocker_driver_name, in rocker_probe()
2982 if (!rocker->rocker_owq) { in rocker_probe()
2987 err = rocker_probe_ports(rocker); in rocker_probe()
2996 rocker->fib_nb.notifier_call = rocker_router_fib_event; in rocker_probe()
2997 err = register_fib_notifier(&init_net, &rocker->fib_nb, NULL, NULL); in rocker_probe()
3014 rocker->hw.id = rocker_read64(rocker, SWITCH_ID); in rocker_probe()
3017 (int)sizeof(rocker->hw.id), &rocker->hw.id); in rocker_probe()
3024 unregister_fib_notifier(&init_net, &rocker->fib_nb); in rocker_probe()
3026 rocker_remove_ports(rocker); in rocker_probe()
3028 destroy_workqueue(rocker->rocker_owq); in rocker_probe()
3030 free_irq(rocker_msix_vector(rocker, ROCKER_MSIX_VEC_EVENT), rocker); in rocker_probe()
3032 free_irq(rocker_msix_vector(rocker, ROCKER_MSIX_VEC_CMD), rocker); in rocker_probe()
3034 rocker_dma_rings_fini(rocker); in rocker_probe()
3037 rocker_msix_fini(rocker); in rocker_probe()
3039 iounmap(rocker->hw_addr); in rocker_probe()
3047 kfree(rocker); in rocker_probe()
3053 struct rocker *rocker = pci_get_drvdata(pdev); in rocker_remove() local
3060 unregister_fib_notifier(&init_net, &rocker->fib_nb); in rocker_remove()
3061 rocker_remove_ports(rocker); in rocker_remove()
3062 rocker_write32(rocker, CONTROL, ROCKER_CONTROL_RESET); in rocker_remove()
3063 destroy_workqueue(rocker->rocker_owq); in rocker_remove()
3064 free_irq(rocker_msix_vector(rocker, ROCKER_MSIX_VEC_EVENT), rocker); in rocker_remove()
3065 free_irq(rocker_msix_vector(rocker, ROCKER_MSIX_VEC_CMD), rocker); in rocker_remove()
3066 rocker_dma_rings_fini(rocker); in rocker_remove()
3067 rocker_msix_fini(rocker); in rocker_remove()
3068 iounmap(rocker->hw_addr); in rocker_remove()
3069 pci_release_regions(rocker->pdev); in rocker_remove()
3070 pci_disable_device(rocker->pdev); in rocker_remove()
3071 kfree(rocker); in rocker_remove()
3086 struct rocker *rocker) in rocker_port_dev_check_under() argument
3094 if (rocker_port->rocker != rocker) in rocker_port_dev_check_under()
3101 struct rocker *rocker; member
3111 if (rocker_port_dev_check_under(lower_dev, data->rocker)) { in rocker_lower_dev_walk()
3120 struct rocker *rocker) in rocker_port_dev_lower_find() argument
3125 if (rocker_port_dev_check_under(dev, rocker)) in rocker_port_dev_lower_find()
3128 data.rocker = rocker; in rocker_port_dev_lower_find()