Lines Matching refs:dev

73 static void oce_unconfigure(struct oce_dev *dev);
74 static void oce_init_locks(struct oce_dev *dev);
75 static void oce_destroy_locks(struct oce_dev *dev);
76 static void oce_get_params(struct oce_dev *dev);
77 static int oce_get_prop(struct oce_dev *dev, char *propname, int minval,
193 struct oce_dev *dev = NULL;
207 /* allocate dev */
208 dev = kmem_zalloc(sizeof (struct oce_dev), KM_SLEEP);
210 /* populate the dev structure */
211 dev->dip = dip;
212 dev->dev_id = ddi_get_instance(dip);
213 dev->suspended = B_FALSE;
215 dev->dev_list_index = MAX_DEVS;
217 (void) atomic_cas_ptr(&oce_dev_list[dev_index], NULL, dev);
218 if (oce_dev_list[dev_index] == dev) {
224 oce_log(dev, CE_WARN, MOD_CONFIG, "%s",
228 dev->dev_list_index = dev_index;
231 oce_get_params(dev);
237 ddi_set_driver_private(dip, dev);
239 dev->attach_state |= ATTACH_DEV_INIT;
241 oce_fm_init(dev);
242 dev->attach_state |= ATTACH_FM_INIT;
244 ret = pci_config_setup(dev->dip, &dev->pci_cfg_handle);
246 oce_log(dev, CE_WARN, MOD_CONFIG,
250 dev->attach_state |= ATTACH_PCI_CFG;
252 ret = oce_identify_hw(dev);
255 oce_log(dev, CE_WARN, MOD_CONFIG, "%s",
260 ret = oce_get_bdf(dev);
262 oce_log(dev, CE_WARN, MOD_CONFIG,
266 /* Update the dev->rss */
267 oce_dev_rss_ready(dev);
270 ret = oce_pci_init(dev);
272 oce_log(dev, CE_WARN, MOD_CONFIG,
276 dev->attach_state |= ATTACH_PCI_INIT;
278 ret = oce_setup_intr(dev);
280 oce_log(dev, CE_WARN, MOD_CONFIG,
285 dev->attach_state |= ATTACH_SETUP_INTR;
288 oce_init_locks(dev);
289 dev->attach_state |= ATTACH_LOCK_INIT;
293 ret = oce_hw_init(dev);
295 oce_log(dev, CE_WARN, MOD_CONFIG,
299 dev->attach_state |= ATTACH_HW_INIT;
301 ret = oce_init_txrx(dev);
303 oce_log(dev, CE_WARN, MOD_CONFIG, "%s",
307 dev->attach_state |= ATTACH_SETUP_TXRX;
309 ret = oce_setup_adapter(dev);
311 oce_log(dev, CE_WARN, MOD_CONFIG, "%s",
315 dev->attach_state |= ATTACH_SETUP_ADAP;
318 ret = oce_stat_init(dev);
320 oce_log(dev, CE_WARN, MOD_CONFIG,
324 dev->attach_state |= ATTACH_STAT_INIT;
327 oce_log(dev, CE_NOTE, MOD_CONFIG,
331 oce_log(dev, CE_WARN, MOD_CONFIG, "%s",
339 mac->m_driver = dev;
341 mac->m_src_addr = dev->mac_addr;
344 mac->m_max_sdu = dev->mtu;
348 oce_log(dev, CE_NOTE, MOD_CONFIG,
349 "Driver Private structure = 0x%p", (void *)dev);
352 ret = mac_register(mac, (mac_handle_t *)&dev->mac_handle);
357 oce_log(dev, CE_WARN, MOD_CONFIG,
364 dev->link_status = LINK_STATE_UNKNOWN;
365 mac_link_update(dev->mac_handle, dev->link_status);
367 dev->attach_state |= ATTACH_MAC_REG;
368 dev->state |= STATE_INIT;
370 oce_log(dev, CE_NOTE, MOD_CONFIG, "%s",
376 oce_unconfigure(dev);
383 struct oce_dev *dev;
387 dev = ddi_get_driver_private(dip);
388 if (dev == NULL) {
391 oce_log(dev, CE_NOTE, MOD_CONFIG,
404 if (mac_unregister(dev->mac_handle) != 0) {
405 oce_log(dev, CE_WARN, MOD_CONFIG, "%s",
408 dev->attach_state &= ~ATTACH_MAC_REG;
411 DEV_LOCK(dev);
412 if (dev->state & STATE_MAC_STARTED) {
413 dev->state &= ~STATE_MAC_STARTED;
414 oce_stop(dev);
415 DEV_UNLOCK(dev);
417 DEV_UNLOCK(dev);
422 for (qid = 0; qid < dev->rx_rings; qid++) {
423 pcnt = oce_rx_pending(dev, dev->rq[qid], DEFAULT_DRAIN_TIME);
425 oce_log(dev, CE_WARN, MOD_CONFIG,
430 oce_unconfigure(dev);
439 struct oce_dev *dev = ddi_get_driver_private(dip);
441 if (dev == NULL) {
444 if (dev->suspended) {
448 oce_chip_di(dev);
450 ret = oce_reset_fun(dev);
458 struct oce_dev *dev = ddi_get_driver_private(dip);
460 mutex_enter(&dev->dev_lock);
462 dev->suspended = B_TRUE;
464 if (dev->state & STATE_MAC_STARTED) {
465 oce_stop(dev);
466 oce_unsetup_adapter(dev);
468 dev->state &= ~STATE_MAC_STARTED;
469 mutex_exit(&dev->dev_lock);
476 struct oce_dev *dev;
479 /* get the dev pointer from dip */
480 dev = ddi_get_driver_private(dip);
481 mutex_enter(&dev->dev_lock);
482 if (!dev->suspended) {
483 mutex_exit(&dev->dev_lock);
486 if (!(dev->state & STATE_MAC_STARTED)) {
487 ret = oce_setup_adapter(dev);
489 mutex_exit(&dev->dev_lock);
492 ret = oce_start(dev);
494 mutex_exit(&dev->dev_lock);
498 dev->suspended = B_FALSE;
499 dev->state |= STATE_MAC_STARTED;
500 mutex_exit(&dev->dev_lock);
505 oce_init_locks(struct oce_dev *dev)
508 mutex_init(&dev->dev_lock, NULL, MUTEX_DRIVER,
509 DDI_INTR_PRI(dev->intr_pri));
510 mutex_init(&dev->bmbx_lock, NULL, MUTEX_DRIVER,
511 DDI_INTR_PRI(dev->intr_pri));
515 oce_destroy_locks(struct oce_dev *dev)
517 mutex_destroy(&dev->dev_lock);
518 mutex_destroy(&dev->bmbx_lock);
522 oce_unconfigure(struct oce_dev *dev)
524 uint32_t state = dev->attach_state;
527 (void) mac_unregister(dev->mac_handle);
530 oce_stat_fini(dev);
533 oce_unsetup_adapter(dev);
536 oce_fini_txrx(dev);
539 oce_hw_fini(dev);
542 oce_destroy_locks(dev);
545 (void) oce_teardown_intr(dev);
548 oce_pci_fini(dev);
551 pci_config_teardown(&dev->pci_cfg_handle);
554 oce_fm_fini(dev);
557 ddi_set_driver_private(dev->dip, NULL);
558 oce_dev_list[dev->dev_list_index] = NULL;
559 kmem_free(dev, sizeof (struct oce_dev));
564 oce_get_params(struct oce_dev *dev)
593 dev->rx_ring_size = OCE_DEFAULT_RX_RING_SIZE;
596 dev->flow_control = oce_get_prop(dev, (char *)flow_control, OCE_FC_NONE,
599 dev->mtu = oce_get_prop(dev, (char *)mtu_prop_name, OCE_MIN_MTU,
602 dev->tx_ring_size = oce_get_prop(dev, (char *)tx_ring_size_name,
605 dev->tx_bcopy_limit = oce_get_prop(dev, (char *)tx_bcopy_limit_name,
608 dev->rx_bcopy_limit = oce_get_prop(dev, (char *)rx_bcopy_limit_name,
611 dev->rq_frag_size = oce_get_prop(dev, (char *)rx_frag_size_name,
614 dev->rq_max_bufs = oce_get_prop(dev, (char *)rx_max_bufs_name, SIZE_2K,
617 dev->lso_capable = oce_get_prop(dev, (char *)lso_capable_name, 0,
620 dev->fm_caps = oce_get_prop(dev, (char *)fm_cap_name,
624 dev->tx_reclaim_threshold = oce_get_prop(dev,
625 (char *)tx_reclaim_threshold_name, 0, dev->tx_ring_size/2,
628 dev->rx_pkt_per_intr = oce_get_prop(dev, (char *)rx_pkt_per_intr_name,
629 0, dev->rx_ring_size/2, OCE_DEFAULT_RX_PKT_PER_INTR, rx_ppi_values);
631 dev->rx_rings = oce_get_prop(dev, (char *)rx_rings_name,
634 dev->tx_rings = oce_get_prop(dev, (char *)tx_rings_name,
637 log_level = oce_get_prop(dev, (char *)log_level_name, 0,
649 dev->mod_mask = mod_mask;
650 dev->severity = severity;
654 oce_get_prop(struct oce_dev *dev, char *propname, int minval, int maxval,
660 value = ddi_prop_get_int(DDI_DEV_T_ANY, dev->dip,