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()
1555 struct rocker_world_ops *wops = rocker_port->rocker->wops; in rocker_world_port_attr_stp_state_set()
1569 struct rocker_world_ops *wops = rocker_port->rocker->wops; in rocker_world_port_attr_bridge_flags_support_get()
1581 struct rocker_world_ops *wops = rocker_port->rocker->wops; in rocker_world_port_attr_pre_bridge_flags_set()
1603 struct rocker_world_ops *wops = rocker_port->rocker->wops; in rocker_world_port_attr_bridge_flags_set()
1615 struct rocker_world_ops *wops = rocker_port->rocker->wops; in rocker_world_port_attr_bridge_ageing_time_set()
1627 struct rocker_world_ops *wops = rocker_port->rocker->wops; in rocker_world_port_obj_vlan_add()
1639 struct rocker_world_ops *wops = rocker_port->rocker->wops; in rocker_world_port_obj_vlan_del()
1653 struct rocker_world_ops *wops = rocker_port->rocker->wops; in rocker_world_port_fdb_add()
1665 struct rocker_world_ops *wops = rocker_port->rocker->wops; in rocker_world_port_fdb_del()
1676 struct rocker_world_ops *wops = rocker_port->rocker->wops; in rocker_world_port_master_linked()
1686 struct rocker_world_ops *wops = rocker_port->rocker->wops; in rocker_world_port_master_unlinked()
1696 struct rocker_world_ops *wops = rocker_port->rocker->wops; in rocker_world_port_neigh_update()
1706 struct rocker_world_ops *wops = rocker_port->rocker->wops; in rocker_world_port_neigh_destroy()
1717 struct rocker_world_ops *wops = rocker_port->rocker->wops; in rocker_world_port_ev_mac_vlan_seen()
1724 static int rocker_world_fib4_add(struct rocker *rocker, in rocker_world_fib4_add() argument
1727 struct rocker_world_ops *wops = rocker->wops; in rocker_world_fib4_add()
1731 return wops->fib4_add(rocker, fen_info); in rocker_world_fib4_add()
1734 static int rocker_world_fib4_del(struct rocker *rocker, in rocker_world_fib4_del() argument
1737 struct rocker_world_ops *wops = rocker->wops; in rocker_world_fib4_del()
1741 return wops->fib4_del(rocker, fen_info); in rocker_world_fib4_del()
1744 static void rocker_world_fib4_abort(struct rocker *rocker) in rocker_world_fib4_abort() argument
1746 struct rocker_world_ops *wops = rocker->wops; in rocker_world_fib4_abort()
1749 wops->fib4_abort(rocker); in rocker_world_fib4_abort()
1822 const struct rocker *rocker = rocker_port->rocker; in rocker_tx_desc_frags_unmap() local
1823 struct pci_dev *pdev = rocker->pdev; in rocker_tx_desc_frags_unmap()
1853 const struct rocker *rocker = rocker_port->rocker; in rocker_tx_desc_frag_map_put() local
1854 struct pci_dev *pdev = rocker->pdev; in rocker_tx_desc_frag_map_put()
1886 struct rocker *rocker = rocker_port->rocker; in rocker_port_xmit() local
1926 rocker_desc_head_set(rocker, &rocker_port->tx_ring, desc_info); in rocker_port_xmit()
2014 const struct rocker *rocker = rocker_port->rocker; in rocker_port_get_port_parent_id() local
2016 ppid->id_len = sizeof(rocker->hw.id); in rocker_port_get_port_parent_id()
2017 memcpy(&ppid->id, &rocker->hw.id, ppid->id_len); in rocker_port_get_port_parent_id()
2112 struct rocker *rocker; member
2120 struct rocker *rocker = fib_work->rocker; in rocker_router_fib_event_work() local
2128 err = rocker_world_fib4_add(rocker, &fib_work->fen_info); in rocker_router_fib_event_work()
2130 rocker_world_fib4_abort(rocker); in rocker_router_fib_event_work()
2134 rocker_world_fib4_del(rocker, &fib_work->fen_info); in rocker_router_fib_event_work()
2141 rocker_world_fib4_abort(rocker); in rocker_router_fib_event_work()
2153 struct rocker *rocker = container_of(nb, struct rocker, fib_nb); in rocker_router_fib_event() local
2165 fib_work->rocker = rocker; in rocker_router_fib_event()
2199 queue_work(rocker->rocker_owq, &fib_work->work); in rocker_router_fib_event()
2382 const struct rocker *rocker = rocker_port->rocker; in rocker_port_poll_tx() local
2413 rocker_dma_ring_credits_set(rocker, &rocker_port->tx_ring, credits); in rocker_port_poll_tx()
2418 static int rocker_port_rx_proc(const struct rocker *rocker, in rocker_port_rx_proc() argument
2436 rocker_dma_rx_ring_skb_unmap(rocker, attrs); in rocker_port_rx_proc()
2461 const struct rocker *rocker = rocker_port->rocker; in rocker_port_poll_rx() local
2475 err = rocker_port_rx_proc(rocker, rocker_port, in rocker_port_poll_rx()
2485 rocker_desc_head_set(rocker, &rocker_port->rx_ring, desc_info); in rocker_port_poll_rx()
2492 rocker_dma_ring_credits_set(rocker, &rocker_port->rx_ring, credits); in rocker_port_poll_rx()
2503 const struct rocker *rocker = rocker_port->rocker; in rocker_carrier_init() local
2504 u64 link_status = rocker_read64(rocker, PORT_PHYS_LINK_STATUS); in rocker_carrier_init()
2514 static void rocker_remove_ports(struct rocker *rocker) in rocker_remove_ports() argument
2519 for (i = 0; i < rocker->port_count; i++) { in rocker_remove_ports()
2520 rocker_port = rocker->ports[i]; in rocker_remove_ports()
2528 rocker_world_fini(rocker); in rocker_remove_ports()
2529 kfree(rocker->ports); in rocker_remove_ports()
2534 const struct rocker *rocker = rocker_port->rocker; in rocker_port_dev_addr_init() local
2535 const struct pci_dev *pdev = rocker->pdev; in rocker_port_dev_addr_init()
2550 static int rocker_probe_port(struct rocker *rocker, unsigned int port_number) in rocker_probe_port() argument
2552 struct pci_dev *pdev = rocker->pdev; in rocker_probe_port()
2563 rocker_port->rocker = rocker; in rocker_probe_port()
2596 rocker->ports[port_number] = rocker_port; in rocker_probe_port()
2607 rocker->ports[port_number] = NULL; in rocker_probe_port()
2617 static int rocker_probe_ports(struct rocker *rocker) in rocker_probe_ports() argument
2623 alloc_size = sizeof(struct rocker_port *) * rocker->port_count; in rocker_probe_ports()
2624 rocker->ports = kzalloc(alloc_size, GFP_KERNEL); in rocker_probe_ports()
2625 if (!rocker->ports) in rocker_probe_ports()
2627 for (i = 0; i < rocker->port_count; i++) { in rocker_probe_ports()
2628 err = rocker_probe_port(rocker, i); in rocker_probe_ports()
2635 rocker_remove_ports(rocker); in rocker_probe_ports()
2639 static int rocker_msix_init(struct rocker *rocker) in rocker_msix_init() argument
2641 struct pci_dev *pdev = rocker->pdev; in rocker_msix_init()
2650 if (msix_entries != ROCKER_MSIX_VEC_COUNT(rocker->port_count)) in rocker_msix_init()
2653 rocker->msix_entries = kmalloc_array(msix_entries, in rocker_msix_init()
2656 if (!rocker->msix_entries) in rocker_msix_init()
2660 rocker->msix_entries[i].entry = i; in rocker_msix_init()
2662 err = pci_enable_msix_exact(pdev, rocker->msix_entries, msix_entries); in rocker_msix_init()
2669 kfree(rocker->msix_entries); in rocker_msix_init()
2673 static void rocker_msix_fini(const struct rocker *rocker) in rocker_msix_fini() argument
2675 pci_disable_msix(rocker->pdev); in rocker_msix_fini()
2676 kfree(rocker->msix_entries); in rocker_msix_fini()
2798 queue_work(rocker_port->rocker->rocker_owq, in rocker_switchdev_event()
2852 struct rocker *rocker; in rocker_probe() local
2855 rocker = kzalloc(sizeof(*rocker), GFP_KERNEL); in rocker_probe()
2856 if (!rocker) in rocker_probe()
2883 rocker->hw_addr = ioremap(pci_resource_start(pdev, 0), in rocker_probe()
2885 if (!rocker->hw_addr) { in rocker_probe()
2892 rocker->pdev = pdev; in rocker_probe()
2893 pci_set_drvdata(pdev, rocker); in rocker_probe()
2895 rocker->port_count = rocker_read32(rocker, PORT_PHYS_COUNT); in rocker_probe()
2897 err = rocker_msix_init(rocker); in rocker_probe()
2903 err = rocker_basic_hw_test(rocker); in rocker_probe()
2909 rocker_write32(rocker, CONTROL, ROCKER_CONTROL_RESET); in rocker_probe()
2911 err = rocker_dma_rings_init(rocker); in rocker_probe()
2915 err = request_irq(rocker_msix_vector(rocker, ROCKER_MSIX_VEC_CMD), in rocker_probe()
2917 rocker_driver_name, rocker); in rocker_probe()
2923 err = request_irq(rocker_msix_vector(rocker, ROCKER_MSIX_VEC_EVENT), in rocker_probe()
2925 rocker_driver_name, rocker); in rocker_probe()
2931 rocker->rocker_owq = alloc_ordered_workqueue(rocker_driver_name, in rocker_probe()
2933 if (!rocker->rocker_owq) { in rocker_probe()
2938 err = rocker_probe_ports(rocker); in rocker_probe()
2947 rocker->fib_nb.notifier_call = rocker_router_fib_event; in rocker_probe()
2948 err = register_fib_notifier(&init_net, &rocker->fib_nb, NULL, NULL); in rocker_probe()
2965 rocker->hw.id = rocker_read64(rocker, SWITCH_ID); in rocker_probe()
2968 (int)sizeof(rocker->hw.id), &rocker->hw.id); in rocker_probe()
2975 unregister_fib_notifier(&init_net, &rocker->fib_nb); in rocker_probe()
2977 rocker_remove_ports(rocker); in rocker_probe()
2979 destroy_workqueue(rocker->rocker_owq); in rocker_probe()
2981 free_irq(rocker_msix_vector(rocker, ROCKER_MSIX_VEC_EVENT), rocker); in rocker_probe()
2983 free_irq(rocker_msix_vector(rocker, ROCKER_MSIX_VEC_CMD), rocker); in rocker_probe()
2985 rocker_dma_rings_fini(rocker); in rocker_probe()
2988 rocker_msix_fini(rocker); in rocker_probe()
2990 iounmap(rocker->hw_addr); in rocker_probe()
2998 kfree(rocker); in rocker_probe()
3004 struct rocker *rocker = pci_get_drvdata(pdev); in rocker_remove() local
3011 unregister_fib_notifier(&init_net, &rocker->fib_nb); in rocker_remove()
3012 rocker_remove_ports(rocker); in rocker_remove()
3013 rocker_write32(rocker, CONTROL, ROCKER_CONTROL_RESET); in rocker_remove()
3014 destroy_workqueue(rocker->rocker_owq); in rocker_remove()
3015 free_irq(rocker_msix_vector(rocker, ROCKER_MSIX_VEC_EVENT), rocker); in rocker_remove()
3016 free_irq(rocker_msix_vector(rocker, ROCKER_MSIX_VEC_CMD), rocker); in rocker_remove()
3017 rocker_dma_rings_fini(rocker); in rocker_remove()
3018 rocker_msix_fini(rocker); in rocker_remove()
3019 iounmap(rocker->hw_addr); in rocker_remove()
3020 pci_release_regions(rocker->pdev); in rocker_remove()
3021 pci_disable_device(rocker->pdev); in rocker_remove()
3022 kfree(rocker); in rocker_remove()
3037 struct rocker *rocker) in rocker_port_dev_check_under() argument
3045 if (rocker_port->rocker != rocker) in rocker_port_dev_check_under()
3052 struct rocker *rocker; member
3062 if (rocker_port_dev_check_under(lower_dev, data->rocker)) { in rocker_lower_dev_walk()
3071 struct rocker *rocker) in rocker_port_dev_lower_find() argument
3076 if (rocker_port_dev_check_under(dev, rocker)) in rocker_port_dev_lower_find()
3079 data.rocker = rocker; in rocker_port_dev_lower_find()