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;
206 /* allocate dev */
207 dev = kmem_zalloc(sizeof (struct oce_dev), KM_SLEEP);
209 /* populate the dev structure */
210 dev->dip = dip;
211 dev->dev_id = ddi_get_instance(dip);
212 dev->suspended = B_FALSE;
215 oce_get_params(dev);
221 ddi_set_driver_private(dip, dev);
223 dev->attach_state |= ATTACH_DEV_INIT;
225 oce_fm_init(dev);
226 dev->attach_state |= ATTACH_FM_INIT;
229 ret = oce_pci_init(dev);
231 oce_log(dev, CE_WARN, MOD_CONFIG,
235 dev->attach_state |= ATTACH_PCI_INIT;
237 ret = oce_setup_intr(dev);
239 oce_log(dev, CE_WARN, MOD_CONFIG,
244 dev->attach_state |= ATTACH_SETUP_INTR;
247 oce_init_locks(dev);
248 dev->attach_state |= ATTACH_LOCK_INIT;
252 ret = oce_hw_init(dev);
254 oce_log(dev, CE_WARN, MOD_CONFIG,
258 dev->attach_state |= ATTACH_HW_INIT;
260 ret = oce_init_txrx(dev);
262 oce_log(dev, CE_WARN, MOD_CONFIG, "%s",
266 dev->attach_state |= ATTACH_SETUP_TXRX;
268 ret = oce_setup_adapter(dev);
270 oce_log(dev, CE_WARN, MOD_CONFIG, "%s",
274 dev->attach_state |= ATTACH_SETUP_ADAP;
277 ret = oce_stat_init(dev);
279 oce_log(dev, CE_WARN, MOD_CONFIG,
283 dev->attach_state |= ATTACH_STAT_INIT;
286 oce_log(dev, CE_NOTE, MOD_CONFIG,
290 oce_log(dev, CE_WARN, MOD_CONFIG, "%s",
298 mac->m_driver = dev;
300 mac->m_src_addr = dev->mac_addr;
303 mac->m_max_sdu = dev->mtu;
307 oce_log(dev, CE_NOTE, MOD_CONFIG,
308 "Driver Private structure = 0x%p", (void *)dev);
311 ret = mac_register(mac, (mac_handle_t *)&dev->mac_handle);
316 oce_log(dev, CE_WARN, MOD_CONFIG,
323 dev->link_status = LINK_STATE_UNKNOWN;
324 mac_link_update(dev->mac_handle, dev->link_status);
326 dev->attach_state |= ATTACH_MAC_REG;
327 dev->state |= STATE_INIT;
329 oce_log(dev, CE_NOTE, MOD_CONFIG, "%s",
335 oce_unconfigure(dev);
342 struct oce_dev *dev;
346 dev = ddi_get_driver_private(dip);
347 if (dev == NULL) {
350 oce_log(dev, CE_NOTE, MOD_CONFIG,
363 if (mac_unregister(dev->mac_handle) != 0) {
364 oce_log(dev, CE_WARN, MOD_CONFIG, "%s",
367 dev->attach_state &= ~ATTACH_MAC_REG;
370 DEV_LOCK(dev);
371 if (dev->state & STATE_MAC_STARTED) {
372 dev->state &= ~STATE_MAC_STARTED;
373 oce_stop(dev);
374 DEV_UNLOCK(dev);
376 DEV_UNLOCK(dev);
381 for (qid = 0; qid < dev->rx_rings; qid++) {
382 pcnt = oce_rx_pending(dev, dev->rq[qid], DEFAULT_DRAIN_TIME);
384 oce_log(dev, CE_WARN, MOD_CONFIG,
389 oce_unconfigure(dev);
398 struct oce_dev *dev = ddi_get_driver_private(dip);
400 if (dev == NULL) {
403 if (dev->suspended) {
407 oce_chip_di(dev);
409 ret = oce_reset_fun(dev);
417 struct oce_dev *dev = ddi_get_driver_private(dip);
419 mutex_enter(&dev->dev_lock);
421 dev->suspended = B_TRUE;
423 if (dev->state & STATE_MAC_STARTED) {
424 oce_stop(dev);
425 oce_unsetup_adapter(dev);
427 dev->state &= ~STATE_MAC_STARTED;
428 mutex_exit(&dev->dev_lock);
435 struct oce_dev *dev;
438 /* get the dev pointer from dip */
439 dev = ddi_get_driver_private(dip);
440 mutex_enter(&dev->dev_lock);
441 if (!dev->suspended) {
442 mutex_exit(&dev->dev_lock);
445 if (!(dev->state & STATE_MAC_STARTED)) {
446 ret = oce_setup_adapter(dev);
448 mutex_exit(&dev->dev_lock);
451 ret = oce_start(dev);
453 mutex_exit(&dev->dev_lock);
457 dev->suspended = B_FALSE;
458 dev->state |= STATE_MAC_STARTED;
459 mutex_exit(&dev->dev_lock);
464 oce_init_locks(struct oce_dev *dev)
467 mutex_init(&dev->dev_lock, NULL, MUTEX_DRIVER,
468 DDI_INTR_PRI(dev->intr_pri));
469 mutex_init(&dev->bmbx_lock, NULL, MUTEX_DRIVER,
470 DDI_INTR_PRI(dev->intr_pri));
474 oce_destroy_locks(struct oce_dev *dev)
476 mutex_destroy(&dev->dev_lock);
477 mutex_destroy(&dev->bmbx_lock);
481 oce_unconfigure(struct oce_dev *dev)
483 uint32_t state = dev->attach_state;
486 (void) mac_unregister(dev->mac_handle);
489 oce_stat_fini(dev);
492 oce_unsetup_adapter(dev);
496 oce_fini_txrx(dev);
500 oce_hw_fini(dev);
503 oce_destroy_locks(dev);
507 (void) oce_teardown_intr(dev);
510 oce_pci_fini(dev);
513 oce_fm_fini(dev);
516 ddi_set_driver_private(dev->dip, NULL);
517 kmem_free(dev, sizeof (struct oce_dev));
522 oce_get_params(struct oce_dev *dev)
551 dev->rx_ring_size = OCE_DEFAULT_RX_RING_SIZE;
554 dev->flow_control = oce_get_prop(dev, (char *)flow_control, OCE_FC_NONE,
557 dev->mtu = oce_get_prop(dev, (char *)mtu_prop_name, OCE_MIN_MTU,
560 dev->tx_ring_size = oce_get_prop(dev, (char *)tx_ring_size_name,
563 dev->tx_bcopy_limit = oce_get_prop(dev, (char *)tx_bcopy_limit_name,
566 dev->rx_bcopy_limit = oce_get_prop(dev, (char *)rx_bcopy_limit_name,
569 dev->rq_frag_size = oce_get_prop(dev, (char *)rx_frag_size_name,
572 dev->rq_max_bufs = oce_get_prop(dev, (char *)rx_max_bufs_name, SIZE_2K,
575 dev->lso_capable = oce_get_prop(dev, (char *)lso_capable_name, 0,
578 dev->fm_caps = oce_get_prop(dev, (char *)fm_cap_name,
582 dev->tx_reclaim_threshold = oce_get_prop(dev,
583 (char *)tx_reclaim_threshold_name, 0, dev->tx_ring_size/2,
586 dev->rx_pkt_per_intr = oce_get_prop(dev, (char *)rx_pkt_per_intr_name,
587 0, dev->rx_ring_size/2, OCE_DEFAULT_RX_PKT_PER_INTR, rx_ppi_values);
589 dev->rx_rings = oce_get_prop(dev, (char *)rx_rings_name,
592 dev->tx_rings = oce_get_prop(dev, (char *)tx_rings_name,
595 log_level = oce_get_prop(dev, (char *)log_level_name, 0,
607 dev->mod_mask = mod_mask;
608 dev->severity = severity;
612 oce_get_prop(struct oce_dev *dev, char *propname, int minval, int maxval,
618 value = ddi_prop_get_int(DDI_DEV_T_ANY, dev->dip,