uint64_t *mac_stats;
int ret;
- rte_spinlock_lock(&port->mac_stats_lock);
+ sfc_adapter_lock(sa);
ret = sfc_port_update_mac_stats(sa);
if (ret != 0)
}
unlock:
- rte_spinlock_unlock(&port->mac_stats_lock);
+ sfc_adapter_unlock(sa);
SFC_ASSERT(ret >= 0);
return -ret;
}
struct sfc_port *port = &sa->port;
int rc;
+ sfc_adapter_lock(sa);
+
if (sa->state != SFC_ADAPTER_STARTED) {
/*
* The operation cannot be done if port is not started; it
* will be scheduled to be done during the next port start
*/
port->mac_stats_reset_pending = B_TRUE;
+ sfc_adapter_unlock(sa);
return 0;
}
if (rc != 0)
sfc_err(sa, "failed to reset statistics (rc = %d)", rc);
+ sfc_adapter_unlock(sa);
+
SFC_ASSERT(rc >= 0);
return -rc;
}
unsigned int i;
int nstats = 0;
- rte_spinlock_lock(&port->mac_stats_lock);
+ sfc_adapter_lock(sa);
rc = sfc_port_update_mac_stats(sa);
if (rc != 0) {
}
unlock:
- rte_spinlock_unlock(&port->mac_stats_lock);
+ sfc_adapter_unlock(sa);
return nstats;
}
int ret;
int rc;
- rte_spinlock_lock(&port->mac_stats_lock);
+ sfc_adapter_lock(sa);
if (unlikely(values == NULL) ||
unlikely(ids == NULL && n < port->mac_stats_nb_supported)) {
ret = nb_written;
unlock:
- rte_spinlock_unlock(&port->mac_stats_lock);
+ sfc_adapter_unlock(sa);
return ret;
}
unsigned int nb_written = 0;
unsigned int i;
+ sfc_adapter_lock(sa);
+
if (unlikely(xstats_names == NULL) ||
- unlikely((ids == NULL) && (size < port->mac_stats_nb_supported)))
- return port->mac_stats_nb_supported;
+ unlikely((ids == NULL) && (size < port->mac_stats_nb_supported))) {
+ nb_supported = port->mac_stats_nb_supported;
+ sfc_adapter_unlock(sa);
+ return nb_supported;
+ }
for (i = 0; (i < EFX_MAC_NSTATS) && (nb_written < size); ++i) {
if (!EFX_MAC_STAT_SUPPORTED(port->mac_stats_mask, i))
++nb_supported;
}
+ sfc_adapter_unlock(sa);
+
return nb_written;
}
unsigned int nb_attempts = 0;
int rc;
- SFC_ASSERT(rte_spinlock_is_locked(&port->mac_stats_lock));
+ SFC_ASSERT(sfc_adapter_is_locked(sa));
if (sa->state != SFC_ADAPTER_STARTED)
return EINVAL;
int
sfc_port_reset_mac_stats(struct sfc_adapter *sa)
{
- struct sfc_port *port = &sa->port;
int rc;
- rte_spinlock_lock(&port->mac_stats_lock);
+ SFC_ASSERT(sfc_adapter_is_locked(sa));
+
rc = efx_mac_stats_clear(sa->nic);
if (rc == 0)
sfc_port_reset_sw_stats(sa);
- rte_spinlock_unlock(&port->mac_stats_lock);
return rc;
}
goto fail_mcast_addr_list_buf_alloc;
}
- rte_spinlock_init(&port->mac_stats_lock);
-
rc = ENOMEM;
port->mac_stats_buf = rte_calloc_socket("mac_stats_buf", EFX_MAC_NSTATS,
sizeof(uint64_t), 0,