sfc: on 8000 series use TX queues for TX timestamps
For this we create and use one or more new TX queues on the PTP channel, and enable sync events for it. Based on a patch by Martin Habets <mhabets@solarflare.com>. Signed-off-by: Edward Cree <ecree@solarflare.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
c1d0d33946
commit
2935e3c382
@@ -1085,7 +1085,7 @@ efx_farch_handle_tx_flush_done(struct efx_nic *efx, efx_qword_t *event)
|
||||
int qid;
|
||||
|
||||
qid = EFX_QWORD_FIELD(*event, FSF_AZ_DRIVER_EV_SUBDATA);
|
||||
if (qid < EFX_TXQ_TYPES * efx->n_tx_channels) {
|
||||
if (qid < EFX_TXQ_TYPES * (efx->n_tx_channels + efx->n_extra_tx_channels)) {
|
||||
tx_queue = efx_get_tx_queue(efx, qid / EFX_TXQ_TYPES,
|
||||
qid % EFX_TXQ_TYPES);
|
||||
if (atomic_cmpxchg(&tx_queue->flush_outstanding, 1, 0)) {
|
||||
@@ -1669,20 +1669,21 @@ void efx_farch_rx_pull_indir_table(struct efx_nic *efx)
|
||||
*/
|
||||
void efx_farch_dimension_resources(struct efx_nic *efx, unsigned sram_lim_qw)
|
||||
{
|
||||
unsigned vi_count, buftbl_min;
|
||||
unsigned vi_count, buftbl_min, total_tx_channels;
|
||||
|
||||
#ifdef CONFIG_SFC_SRIOV
|
||||
struct siena_nic_data *nic_data = efx->nic_data;
|
||||
#endif
|
||||
|
||||
total_tx_channels = efx->n_tx_channels + efx->n_extra_tx_channels;
|
||||
/* Account for the buffer table entries backing the datapath channels
|
||||
* and the descriptor caches for those channels.
|
||||
*/
|
||||
buftbl_min = ((efx->n_rx_channels * EFX_MAX_DMAQ_SIZE +
|
||||
efx->n_tx_channels * EFX_TXQ_TYPES * EFX_MAX_DMAQ_SIZE +
|
||||
total_tx_channels * EFX_TXQ_TYPES * EFX_MAX_DMAQ_SIZE +
|
||||
efx->n_channels * EFX_MAX_EVQ_SIZE)
|
||||
* sizeof(efx_qword_t) / EFX_BUF_SIZE);
|
||||
vi_count = max(efx->n_channels, efx->n_tx_channels * EFX_TXQ_TYPES);
|
||||
vi_count = max(efx->n_channels, total_tx_channels * EFX_TXQ_TYPES);
|
||||
|
||||
#ifdef CONFIG_SFC_SRIOV
|
||||
if (efx->type->sriov_wanted) {
|
||||
|
Reference in New Issue
Block a user