Lines Matching refs:dev

44 static int oce_set_priv_prop(struct oce_dev *dev, const char *name,
47 static int oce_get_priv_prop(struct oce_dev *dev, const char *name,
54 struct oce_dev *dev = arg;
57 mutex_enter(&dev->dev_lock);
59 if (dev->state & STATE_MAC_STARTED) {
60 mutex_exit(&dev->dev_lock);
64 if (dev->suspended) {
65 mutex_exit(&dev->dev_lock);
68 ret = oce_start(dev);
70 mutex_exit(&dev->dev_lock);
74 dev->state |= STATE_MAC_STARTED;
75 mutex_exit(&dev->dev_lock);
82 oce_start(struct oce_dev *dev)
88 (void) oce_get_link_status(dev, &link);
90 dev->link_status = (link.logical_link_status == NTWK_LOGICAL_LINK_UP) ?
93 dev->link_speed = link.qos_link_speed ? link.qos_link_speed * 10 :
96 mac_link_update(dev->mac_handle, dev->link_status);
98 for (qidx = 0; qidx < dev->nwqs; qidx++) {
99 (void) oce_start_wq(dev->wq[qidx]);
101 for (qidx = 0; qidx < dev->nrqs; qidx++) {
102 (void) oce_start_rq(dev->rq[qidx]);
104 (void) oce_start_mq(dev->mq);
106 oce_ei(dev);
108 for (qidx = 0; qidx < dev->neqs; qidx++) {
109 oce_arm_eq(dev, dev->eq[qidx]->eq_id, 0, B_TRUE, B_FALSE);
119 struct oce_dev *dev = arg;
123 mutex_enter(&dev->dev_lock);
124 if (dev->suspended) {
125 mutex_exit(&dev->dev_lock);
128 dev->state |= STATE_MAC_STOPPING;
129 oce_stop(dev);
130 dev->state &= ~(STATE_MAC_STOPPING | STATE_MAC_STARTED);
131 mutex_exit(&dev->dev_lock);
135 oce_stop(struct oce_dev *dev)
139 oce_di(dev);
140 for (qidx = 0; qidx < dev->nwqs; qidx++) {
141 mutex_enter(&dev->wq[qidx]->tx_lock);
143 mutex_enter(&dev->mq->lock);
145 for (qidx = 0; qidx < dev->nwqs; qidx++)
146 oce_clean_wq(dev->wq[qidx]);
148 mutex_exit(&dev->mq->lock);
149 for (qidx = 0; qidx < dev->nwqs; qidx++)
150 mutex_exit(&dev->wq[qidx]->tx_lock);
151 if (dev->link_status == LINK_STATE_UP) {
152 dev->link_status = LINK_STATE_UNKNOWN;
153 mac_link_update(dev->mac_handle, dev->link_status);
161 struct oce_dev *dev = (struct oce_dev *)arg;
164 uint16_t new_mcnt = dev->num_mca;
174 mca_drv_list = &dev->multi_cast[0];
176 DEV_LOCK(dev);
180 /* copy entire dev mca to the mbx */
183 (dev->num_mca * sizeof (struct ether_addr)));
185 bcopy(mca, &mca_hw_list[dev->num_mca],
191 for (i = 0; i < dev->num_mca; i++) {
203 if (dev->suspended) {
207 ret = oce_set_multicast_table(dev, dev->if_id, &mca_hw_list[0],
210 ret = oce_set_multicast_table(dev, dev->if_id,
214 oce_log(dev, CE_WARN, MOD_CONFIG,
216 DEV_UNLOCK(dev);
220 * Copy the local structure to dev structure
227 dev->num_mca = (uint16_t)new_mcnt;
229 DEV_UNLOCK(dev);
230 oce_log(dev, CE_NOTE, MOD_CONFIG,
234 dev->num_mca);
241 struct oce_dev *dev = arg;
244 DEV_LOCK(dev);
245 if (dev->suspended) {
246 bcopy(uca, dev->unicast_addr, ETHERADDRL);
247 dev->num_smac = 0;
248 DEV_UNLOCK(dev);
253 ret = oce_del_mac(dev, dev->if_id, &dev->pmac_id);
255 DEV_UNLOCK(dev);
258 dev->num_smac = 0;
259 bzero(dev->unicast_addr, ETHERADDRL);
262 ret = oce_add_mac(dev, dev->if_id, uca, &dev->pmac_id);
264 DEV_UNLOCK(dev);
267 bcopy(uca, dev->unicast_addr, ETHERADDRL);
268 dev->num_smac = 1;
269 DEV_UNLOCK(dev);
280 struct oce_dev *dev = arg;
285 DEV_LOCK(dev);
286 if (dev->suspended || !(dev->state & STATE_MAC_STARTED)) {
287 DEV_UNLOCK(dev);
291 DEV_UNLOCK(dev);
295 wq = oce_get_wq(dev, mp);
306 oce_arm_cq(dev, wq->cq->cq_id, 0, B_TRUE);
319 struct oce_dev *dev = arg;
332 if (dev->lso_capable) {
351 struct oce_dev *dev = arg;
354 DEV_LOCK(dev);
361 if (dev->mtu == mtu) {
371 ret = mac_maxsdu_update(dev->mac_handle, mtu);
373 dev->mtu = mtu;
409 if (fc == dev->flow_control)
412 if (dev->suspended) {
413 dev->flow_control = fc;
417 ret = oce_set_flow_control(dev, fc);
420 dev->flow_control = fc;
426 ret = oce_set_priv_prop(dev, name, size, val);
434 DEV_UNLOCK(dev);
442 struct oce_dev *dev = arg;
455 if (dev->state & STATE_MAC_STARTED)
469 if (dev->state & STATE_MAC_STARTED) {
470 if (dev->link_speed < 0) {
471 (void) oce_get_link_status(dev, &link);
472 dev->link_speed = link.qos_link_speed ?
477 *speed = dev->link_speed * 1000000ull;
486 if (dev->flow_control & OCE_FC_TX &&
487 dev->flow_control & OCE_FC_RX)
489 else if (dev->flow_control == OCE_FC_TX)
491 else if (dev->flow_control == OCE_FC_RX)
493 else if (dev->flow_control == 0)
501 ret = oce_get_priv_prop(dev, name, size, val);
571 struct oce_dev *dev = arg;
581 DEV_LOCK(dev);
582 if (dev->suspended) {
584 DEV_UNLOCK(dev);
587 DEV_UNLOCK(dev);
592 ret = oce_issue_mbox(dev, wq, mp, &payload_length);
602 oce_log(dev, CE_NOTE, MOD_CONFIG, "%s",
619 if (dev->num_smac == 0) {
621 bcopy(dev->mac_addr, drv_query->smac_addr[0],
624 drv_query->num_smac = dev->num_smac;
625 bcopy(dev->unicast_addr, drv_query->smac_addr[0],
629 bcopy(dev->mac_addr, drv_query->pmac_addr, ETHERADDRL);
645 struct oce_dev *dev = arg;
648 DEV_LOCK(dev);
650 if (dev->promisc == enable) {
651 DEV_UNLOCK(dev);
655 if (dev->suspended) {
657 dev->promisc = enable;
658 DEV_UNLOCK(dev);
662 ret = oce_set_promiscuous(dev, enable);
664 dev->promisc = enable;
665 DEV_UNLOCK(dev);
673 * dev - sofware handle to the device
681 oce_set_priv_prop(struct oce_dev *dev, const char *name,
697 if (result != dev->tx_bcopy_limit)
698 dev->tx_bcopy_limit = (uint32_t)result;
707 if (result != dev->rx_bcopy_limit)
708 dev->rx_bcopy_limit = (uint32_t)result;
721 * dev - software handle to the device
729 oce_get_priv_prop(struct oce_dev *dev, const char *name,
735 value = dev->tx_ring_size;
737 value = dev->tx_bcopy_limit;
739 value = dev->rx_ring_size;
741 value = dev->rx_bcopy_limit;