Lines Matching refs:port_counter
13 static int __counter_set_mode(struct rdma_port_counter *port_counter, in __counter_set_mode() argument
20 if (port_counter->num_counters) in __counter_set_mode()
24 port_counter->mode.mode = new_mode; in __counter_set_mode()
25 port_counter->mode.mask = new_mask; in __counter_set_mode()
46 struct rdma_port_counter *port_counter; in rdma_counter_set_auto_mode() local
50 port_counter = &dev->port_data[port].port_counter; in rdma_counter_set_auto_mode()
51 if (!port_counter->hstats) in rdma_counter_set_auto_mode()
54 mutex_lock(&port_counter->lock); in rdma_counter_set_auto_mode()
58 mode = (port_counter->num_counters) ? RDMA_COUNTER_MODE_MANUAL : in rdma_counter_set_auto_mode()
61 if (port_counter->mode.mode == mode && in rdma_counter_set_auto_mode()
62 port_counter->mode.mask == mask) { in rdma_counter_set_auto_mode()
67 ret = __counter_set_mode(port_counter, mode, mask); in rdma_counter_set_auto_mode()
70 mutex_unlock(&port_counter->lock); in rdma_counter_set_auto_mode()
145 struct rdma_port_counter *port_counter; in alloc_and_bind() local
164 port_counter = &dev->port_data[port].port_counter; in alloc_and_bind()
165 mutex_lock(&port_counter->lock); in alloc_and_bind()
168 ret = __counter_set_mode(port_counter, RDMA_COUNTER_MODE_MANUAL, in alloc_and_bind()
171 mutex_unlock(&port_counter->lock); in alloc_and_bind()
176 auto_mode_init_counter(counter, qp, port_counter->mode.mask); in alloc_and_bind()
180 mutex_unlock(&port_counter->lock); in alloc_and_bind()
184 port_counter->num_counters++; in alloc_and_bind()
185 mutex_unlock(&port_counter->lock); in alloc_and_bind()
209 struct rdma_port_counter *port_counter; in rdma_counter_free() local
211 port_counter = &counter->device->port_data[counter->port].port_counter; in rdma_counter_free()
212 mutex_lock(&port_counter->lock); in rdma_counter_free()
213 port_counter->num_counters--; in rdma_counter_free()
214 if (!port_counter->num_counters && in rdma_counter_free()
215 (port_counter->mode.mode == RDMA_COUNTER_MODE_MANUAL)) in rdma_counter_free()
216 __counter_set_mode(port_counter, RDMA_COUNTER_MODE_NONE, 0); in rdma_counter_free()
218 mutex_unlock(&port_counter->lock); in rdma_counter_free()
259 struct rdma_port_counter *port_counter; in counter_history_stat_update() local
262 port_counter = &dev->port_data[counter->port].port_counter; in counter_history_stat_update()
263 if (!port_counter->hstats) in counter_history_stat_update()
269 port_counter->hstats->value[i] += counter->stats->value[i]; in counter_history_stat_update()
281 struct rdma_port_counter *port_counter; in rdma_get_counter_auto_mode() local
288 port_counter = &dev->port_data[port].port_counter; in rdma_get_counter_auto_mode()
296 if (auto_mode_match(qp, counter, port_counter->mode.mask)) in rdma_get_counter_auto_mode()
325 struct rdma_port_counter *port_counter; in rdma_counter_bind_qp_auto() local
336 port_counter = &dev->port_data[port].port_counter; in rdma_counter_bind_qp_auto()
337 if (port_counter->mode.mode != RDMA_COUNTER_MODE_AUTO) in rdma_counter_bind_qp_auto()
431 struct rdma_port_counter *port_counter; in rdma_counter_get_hwstat_value() local
434 port_counter = &dev->port_data[port].port_counter; in rdma_counter_get_hwstat_value()
435 if (!port_counter->hstats) in rdma_counter_get_hwstat_value()
439 sum += port_counter->hstats->value[index]; in rdma_counter_get_hwstat_value()
487 struct rdma_port_counter *port_counter; in rdma_counter_bind_qpn() local
492 port_counter = &dev->port_data[port].port_counter; in rdma_counter_bind_qpn()
493 if (port_counter->mode.mode == RDMA_COUNTER_MODE_AUTO) in rdma_counter_bind_qpn()
537 struct rdma_port_counter *port_counter; in rdma_counter_bind_qpn_alloc() local
545 port_counter = &dev->port_data[port].port_counter; in rdma_counter_bind_qpn_alloc()
546 if (!port_counter->hstats) in rdma_counter_bind_qpn_alloc()
549 if (port_counter->mode.mode == RDMA_COUNTER_MODE_AUTO) in rdma_counter_bind_qpn_alloc()
584 struct rdma_port_counter *port_counter; in rdma_counter_unbind_qpn() local
600 port_counter = &dev->port_data[port].port_counter; in rdma_counter_unbind_qpn()
602 port_counter->mode.mode != RDMA_COUNTER_MODE_MANUAL) { in rdma_counter_unbind_qpn()
618 struct rdma_port_counter *port_counter; in rdma_counter_get_mode() local
620 port_counter = &dev->port_data[port].port_counter; in rdma_counter_get_mode()
621 *mode = port_counter->mode.mode; in rdma_counter_get_mode()
622 *mask = port_counter->mode.mask; in rdma_counter_get_mode()
629 struct rdma_port_counter *port_counter; in rdma_counter_init() local
636 port_counter = &dev->port_data[port].port_counter; in rdma_counter_init()
637 port_counter->mode.mode = RDMA_COUNTER_MODE_NONE; in rdma_counter_init()
638 mutex_init(&port_counter->lock); in rdma_counter_init()
643 port_counter->hstats = dev->ops.alloc_hw_port_stats(dev, port); in rdma_counter_init()
644 if (!port_counter->hstats) in rdma_counter_init()
652 port_counter = &dev->port_data[port].port_counter; in rdma_counter_init()
653 rdma_free_hw_stats_struct(port_counter->hstats); in rdma_counter_init()
654 port_counter->hstats = NULL; in rdma_counter_init()
655 mutex_destroy(&port_counter->lock); in rdma_counter_init()
661 struct rdma_port_counter *port_counter; in rdma_counter_release() local
665 port_counter = &dev->port_data[port].port_counter; in rdma_counter_release()
666 rdma_free_hw_stats_struct(port_counter->hstats); in rdma_counter_release()
667 mutex_destroy(&port_counter->lock); in rdma_counter_release()