/* Maximum number of TCP segments we support for soft-TSO */ #define EFX_TSO_MAX_SEGS 100
/* The smallest [rt]xq_entries that the driver supports. RX minimum * is a bit arbitrary. For TX, we must have space for at least 2 * TSO skbs.
*/ #define EFX_RXQ_MIN_ENT 128U #define EFX_TXQ_MIN_ENT(efx) (2 * efx_siena_tx_max_skb_descs(efx))
/* All EF10 architecture NICs steal one bit of the DMAQ size for various * other purposes when counting TxQ entries, so we halve the queue size.
*/ #define EFX_TXQ_MAX_ENT(efx) (EFX_WORKAROUND_EF10(efx) ? \
EFX_MAX_DMAQ_SIZE / 2 : EFX_MAX_DMAQ_SIZE)
/** * efx_filter_insert_filter - add or replace a filter * @efx: NIC in which to insert the filter * @spec: Specification for the filter * @replace_equal: Flag for whether the specified filter may replace an * existing filter with equal priority * * On success, return the filter ID. * On failure, return a negative error code. * * If existing filters have equal match values to the new filter spec, * then the new filter might replace them or the function might fail, * as follows. * * 1. If the existing filters have lower priority, or @replace_equal * is set and they have equal priority, replace them. * * 2. If the existing filters have higher priority, return -%EPERM. * * 3. If !efx_siena_filter_is_mc_recipient(@spec), or the NIC does not * support delivery to multiple recipients, return -%EEXIST. * * This implies that filters for multiple multicast recipients must * all be inserted with the same priority and @replace_equal = %false.
*/ staticinline s32 efx_filter_insert_filter(struct efx_nic *efx, struct efx_filter_spec *spec, bool replace_equal)
{ return efx->type->filter_insert(efx, spec, replace_equal);
}
/** * efx_filter_remove_id_safe - remove a filter by ID, carefully * @efx: NIC from which to remove the filter * @priority: Priority of filter, as passed to @efx_filter_insert_filter * @filter_id: ID of filter, as returned by @efx_filter_insert_filter * * This function will range-check @filter_id, so it is safe to call * with a value passed from userland.
*/ staticinlineint efx_filter_remove_id_safe(struct efx_nic *efx, enum efx_filter_priority priority,
u32 filter_id)
{ return efx->type->filter_remove_safe(efx, priority, filter_id);
}
/** * efx_filter_get_filter_safe - retrieve a filter by ID, carefully * @efx: NIC from which to remove the filter * @priority: Priority of filter, as passed to @efx_filter_insert_filter * @filter_id: ID of filter, as returned by @efx_filter_insert_filter * @spec: Buffer in which to store filter specification * * This function will range-check @filter_id, so it is safe to call * with a value passed from userland.
*/ staticinlineint
efx_filter_get_filter_safe(struct efx_nic *efx, enum efx_filter_priority priority,
u32 filter_id, struct efx_filter_spec *spec)
{ return efx->type->filter_get_safe(efx, priority, filter_id, spec);
}
/* Lock/freeze all TX queues so that we can be sure the * TX scheduler is stopped when we're done and before * netif_device_present() becomes false.
*/
netif_tx_lock_bh(dev);
netif_device_detach(dev);
netif_tx_unlock_bh(dev);
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.