Lines Matching refs:dev
27 fs_sub_device_alloc(struct rte_eth_dev *dev, in fs_sub_device_alloc() argument
36 ret = failsafe_args_count_subdevice(dev, params); in fs_sub_device_alloc()
39 if (PRIV(dev)->subs_tail > FAILSAFE_MAX_ETHPORTS) { in fs_sub_device_alloc()
44 nb_subs = PRIV(dev)->subs_tail; in fs_sub_device_alloc()
45 PRIV(dev)->subs = rte_zmalloc(NULL, in fs_sub_device_alloc()
48 if (PRIV(dev)->subs == NULL) { in fs_sub_device_alloc()
54 PRIV(dev)->subs[i - 1].next = PRIV(dev)->subs + i; in fs_sub_device_alloc()
55 PRIV(dev)->subs[i - 1].next = PRIV(dev)->subs; in fs_sub_device_alloc()
57 FOREACH_SUBDEV(sdev, sdev_iterator, dev) { in fs_sub_device_alloc()
66 failsafe_hotplug_alarm_install(struct rte_eth_dev *dev) in failsafe_hotplug_alarm_install() argument
70 if (dev == NULL) in failsafe_hotplug_alarm_install()
72 if (PRIV(dev)->pending_alarm) in failsafe_hotplug_alarm_install()
76 dev); in failsafe_hotplug_alarm_install()
81 PRIV(dev)->pending_alarm = 1; in failsafe_hotplug_alarm_install()
86 failsafe_hotplug_alarm_cancel(struct rte_eth_dev *dev) in failsafe_hotplug_alarm_cancel() argument
91 rte_eal_alarm_cancel(fs_hotplug_alarm, dev); in failsafe_hotplug_alarm_cancel()
97 PRIV(dev)->pending_alarm = 0; in failsafe_hotplug_alarm_cancel()
105 struct rte_eth_dev *dev = arg; in fs_hotplug_alarm() local
110 if (!PRIV(dev)->pending_alarm) in fs_hotplug_alarm()
112 PRIV(dev)->pending_alarm = 0; in fs_hotplug_alarm()
113 FOREACH_SUBDEV(sdev, i, dev) in fs_hotplug_alarm()
114 if (sdev->state != PRIV(dev)->state) in fs_hotplug_alarm()
117 if (i != PRIV(dev)->subs_tail) { in fs_hotplug_alarm()
118 if (fs_lock(dev, 1) != 0) in fs_hotplug_alarm()
120 ret = failsafe_eth_dev_state_sync(dev); in fs_hotplug_alarm()
121 fs_unlock(dev, 1); in fs_hotplug_alarm()
125 failsafe_dev_remove(dev); in fs_hotplug_alarm()
127 ret = failsafe_hotplug_alarm_install(dev); in fs_hotplug_alarm()
160 struct rte_eth_dev *dev; in fs_eth_dev_create() local
169 dev = NULL; in fs_eth_dev_create()
178 dev = rte_eth_vdev_allocate(vdev, sizeof(*priv)); in fs_eth_dev_create()
179 if (dev == NULL) { in fs_eth_dev_create()
183 priv = PRIV(dev); in fs_eth_dev_create()
184 priv->data = dev->data; in fs_eth_dev_create()
186 dev->dev_ops = &failsafe_ops; in fs_eth_dev_create()
187 dev->data->mac_addrs = &PRIV(dev)->mac_addrs[0]; in fs_eth_dev_create()
188 dev->data->dev_link = eth_link; in fs_eth_dev_create()
189 PRIV(dev)->nb_mac_addr = 1; in fs_eth_dev_create()
190 TAILQ_INIT(&PRIV(dev)->flow_list); in fs_eth_dev_create()
191 dev->rx_pkt_burst = (eth_rx_burst_t)&failsafe_rx_burst; in fs_eth_dev_create()
192 dev->tx_pkt_burst = (eth_tx_burst_t)&failsafe_tx_burst; in fs_eth_dev_create()
193 ret = fs_sub_device_alloc(dev, params); in fs_eth_dev_create()
198 ret = failsafe_args_parse(dev, params); in fs_eth_dev_create()
208 DEBUG("Failsafe port %u owner info: %s_%016"PRIX64, dev->data->port_id, in fs_eth_dev_create()
212 dev); in fs_eth_dev_create()
217 ret = failsafe_eal_init(dev); in fs_eth_dev_create()
223 ret = failsafe_hotplug_alarm_install(dev); in fs_eth_dev_create()
228 mac = &dev->data->mac_addrs[0]; in fs_eth_dev_create()
234 FOREACH_SUBDEV_STATE(sdev, i, dev, DEV_PROBED) { in fs_eth_dev_create()
247 FOREACH_SUBDEV(sdev, i, dev) in fs_eth_dev_create()
267 dev->data->dev_flags |= RTE_ETH_DEV_INTR_LSC | in fs_eth_dev_create()
269 PRIV(dev)->intr_handle = (struct rte_intr_handle){ in fs_eth_dev_create()
273 rte_eth_dev_probing_finish(dev); in fs_eth_dev_create()
276 failsafe_hotplug_alarm_cancel(dev); in fs_eth_dev_create()
279 failsafe_eth_new_event_callback, dev); in fs_eth_dev_create()
281 failsafe_args_free(dev); in fs_eth_dev_create()
283 rte_free(PRIV(dev)->subs); in fs_eth_dev_create()
286 dev->data->mac_addrs = NULL; in fs_eth_dev_create()
287 rte_eth_dev_release_port(dev); in fs_eth_dev_create()
294 struct rte_eth_dev *dev; in fs_rte_eth_free() local
297 dev = rte_eth_dev_allocated(name); in fs_rte_eth_free()
298 if (dev == NULL) in fs_rte_eth_free()
300 ret = failsafe_eth_dev_close(dev); in fs_rte_eth_free()
301 rte_eth_dev_release_port(dev); in fs_rte_eth_free()