-
-bool vnic_dev_counter_alloc(struct vnic_dev *vdev, uint32_t *idx)
-{
- u64 a0 = 0;
- u64 a1 = 0;
- int wait = 1000;
-
- if (vnic_dev_cmd(vdev, CMD_COUNTER_ALLOC, &a0, &a1, wait))
- return false;
- *idx = (uint32_t)a0;
- return true;
-}
-
-bool vnic_dev_counter_free(struct vnic_dev *vdev, uint32_t idx)
-{
- u64 a0 = idx;
- u64 a1 = 0;
- int wait = 1000;
-
- return vnic_dev_cmd(vdev, CMD_COUNTER_FREE, &a0, &a1,
- wait) == 0;
-}
-
-bool vnic_dev_counter_query(struct vnic_dev *vdev, uint32_t idx,
- bool reset, uint64_t *packets, uint64_t *bytes)
-{
- u64 a0 = idx;
- u64 a1 = reset ? 1 : 0;
- int wait = 1000;
-
- if (reset) {
- /* query/reset returns updated counters */
- if (vnic_dev_cmd(vdev, CMD_COUNTER_QUERY, &a0, &a1, wait))
- return false;
- *packets = a0;
- *bytes = a1;
- } else {
- /* Get values DMA'd from the adapter */
- *packets = vdev->flow_counters[idx].vcc_packets;
- *bytes = vdev->flow_counters[idx].vcc_bytes;
- }
- return true;
-}