Lines Matching refs:dev

47 static int oce_set_priv_prop(struct oce_dev *dev, const char *name,
50 static int oce_get_priv_prop(struct oce_dev *dev, const char *name,
57 struct oce_dev *dev = arg;
60 mutex_enter(&dev->dev_lock);
62 if (dev->state & STATE_MAC_STARTED) {
63 mutex_exit(&dev->dev_lock);
67 if (dev->suspended) {
68 mutex_exit(&dev->dev_lock);
72 if (oce_fm_check_acc_handle(dev, dev->db_handle) != DDI_FM_OK) {
73 ddi_fm_service_impact(dev->dip, DDI_SERVICE_DEGRADED);
74 mutex_exit(&dev->dev_lock);
78 if (oce_fm_check_acc_handle(dev, dev->csr_handle) != DDI_FM_OK) {
79 ddi_fm_service_impact(dev->dip, DDI_SERVICE_DEGRADED);
80 mutex_exit(&dev->dev_lock);
84 if (oce_fm_check_acc_handle(dev, dev->cfg_handle) != DDI_FM_OK) {
85 ddi_fm_service_impact(dev->dip, DDI_SERVICE_DEGRADED);
86 mutex_exit(&dev->dev_lock);
90 ret = oce_start(dev);
92 mutex_exit(&dev->dev_lock);
96 dev->state |= STATE_MAC_STARTED;
97 mutex_exit(&dev->dev_lock);
104 oce_start(struct oce_dev *dev)
110 (void) oce_get_link_status(dev, &link);
112 dev->link_status = (link.logical_link_status == NTWK_LOGICAL_LINK_UP) ?
115 dev->link_speed = link.qos_link_speed ? link.qos_link_speed * 10 :
118 mac_link_update(dev->mac_handle, dev->link_status);
120 for (qidx = 0; qidx < dev->nwqs; qidx++) {
121 (void) oce_start_wq(dev->wq[qidx]);
123 for (qidx = 0; qidx < dev->nrqs; qidx++) {
124 (void) oce_start_rq(dev->rq[qidx]);
126 (void) oce_start_mq(dev->mq);
128 oce_ei(dev);
130 for (qidx = 0; qidx < dev->neqs; qidx++) {
131 oce_arm_eq(dev, dev->eq[qidx]->eq_id, 0, B_TRUE, B_FALSE);
141 struct oce_dev *dev = arg;
145 mutex_enter(&dev->dev_lock);
146 if (dev->suspended) {
147 mutex_exit(&dev->dev_lock);
150 dev->state |= STATE_MAC_STOPPING;
151 oce_stop(dev);
152 dev->state &= ~(STATE_MAC_STOPPING | STATE_MAC_STARTED);
153 mutex_exit(&dev->dev_lock);
157 oce_stop(struct oce_dev *dev)
161 oce_di(dev);
162 for (qidx = 0; qidx < dev->nwqs; qidx++) {
163 mutex_enter(&dev->wq[qidx]->tx_lock);
165 mutex_enter(&dev->mq->lock);
167 for (qidx = 0; qidx < dev->nwqs; qidx++)
168 oce_clean_wq(dev->wq[qidx]);
170 mutex_exit(&dev->mq->lock);
171 for (qidx = 0; qidx < dev->nwqs; qidx++)
172 mutex_exit(&dev->wq[qidx]->tx_lock);
173 if (dev->link_status == LINK_STATE_UP) {
174 dev->link_status = LINK_STATE_UNKNOWN;
175 mac_link_update(dev->mac_handle, dev->link_status);
184 struct oce_dev *dev = (struct oce_dev *)arg;
187 uint16_t new_mcnt = dev->num_mca;
197 mca_drv_list = &dev->multi_cast[0];
199 DEV_LOCK(dev);
203 /* copy entire dev mca to the mbx */
206 (dev->num_mca * sizeof (struct ether_addr)));
208 bcopy(mca, &mca_hw_list[dev->num_mca],
214 for (i = 0; i < dev->num_mca; i++) {
226 if (dev->suspended) {
230 ret = oce_set_multicast_table(dev, dev->if_id, &mca_hw_list[0],
233 ret = oce_set_multicast_table(dev, dev->if_id,
237 DEV_UNLOCK(dev);
241 * Copy the local structure to dev structure
248 dev->num_mca = (uint16_t)new_mcnt;
250 DEV_UNLOCK(dev);
257 struct oce_dev *dev = arg;
260 DEV_LOCK(dev);
261 if (dev->suspended) {
262 bcopy(uca, dev->unicast_addr, ETHERADDRL);
263 DEV_UNLOCK(dev);
268 ret = oce_del_mac(dev, dev->if_id, &dev->pmac_id);
270 DEV_UNLOCK(dev);
273 bzero(dev->unicast_addr, ETHERADDRL);
276 ret = oce_add_mac(dev, dev->if_id, uca, &dev->pmac_id);
278 DEV_UNLOCK(dev);
281 bcopy(uca, dev->unicast_addr, ETHERADDRL);
282 DEV_UNLOCK(dev);
293 struct oce_dev *dev = arg;
298 DEV_LOCK(dev);
299 if (dev->suspended || !(dev->state & STATE_MAC_STARTED)) {
300 DEV_UNLOCK(dev);
304 DEV_UNLOCK(dev);
308 wq = oce_get_wq(dev, mp);
319 oce_arm_cq(dev, wq->cq->cq_id, 0, B_TRUE);
332 struct oce_dev *dev = arg;
345 if (dev->lso_capable) {
364 struct oce_dev *dev = arg;
367 DEV_LOCK(dev);
374 if (dev->mtu == mtu) {
384 ret = mac_maxsdu_update(dev->mac_handle, mtu);
386 dev->mtu = mtu;
422 if (fc == dev->flow_control)
425 if (dev->suspended) {
426 dev->flow_control = fc;
430 ret = oce_set_flow_control(dev, fc);
433 dev->flow_control = fc;
439 ret = oce_set_priv_prop(dev, name, size, val);
447 DEV_UNLOCK(dev);
455 struct oce_dev *dev = arg;
468 if (dev->state & STATE_MAC_STARTED)
482 if (dev->state & STATE_MAC_STARTED) {
483 if (dev->link_speed < 0) {
484 (void) oce_get_link_status(dev, &link);
485 dev->link_speed = link.qos_link_speed ?
490 *speed = dev->link_speed * 1000000ull;
499 if (dev->flow_control & OCE_FC_TX &&
500 dev->flow_control & OCE_FC_RX)
502 else if (dev->flow_control == OCE_FC_TX)
504 else if (dev->flow_control == OCE_FC_RX)
506 else if (dev->flow_control == 0)
514 ret = oce_get_priv_prop(dev, name, size, val);
584 struct oce_dev *dev = arg;
594 DEV_LOCK(dev);
595 if (dev->suspended) {
597 DEV_UNLOCK(dev);
600 DEV_UNLOCK(dev);
605 ret = oce_issue_mbox(dev, wq, mp, &payload_length);
623 struct oce_dev *dev = arg;
626 DEV_LOCK(dev);
628 if (dev->promisc == enable) {
629 DEV_UNLOCK(dev);
633 if (dev->suspended) {
635 dev->promisc = enable;
636 DEV_UNLOCK(dev);
640 ret = oce_set_promiscuous(dev, enable);
642 dev->promisc = enable;
643 DEV_UNLOCK(dev);
651 * dev - sofware handle to the device
659 oce_set_priv_prop(struct oce_dev *dev, const char *name,
675 if (result != dev->tx_bcopy_limit)
676 dev->tx_bcopy_limit = (uint32_t)result;
685 if (result != dev->rx_bcopy_limit)
686 dev->rx_bcopy_limit = (uint32_t)result;
699 * dev - software handle to the device
707 oce_get_priv_prop(struct oce_dev *dev, const char *name,
713 value = dev->tx_ring_size;
715 value = dev->tx_bcopy_limit;
717 value = dev->rx_ring_size;
719 value = dev->rx_bcopy_limit;