pub const MaximumTransmitQueues: usize = RTE_MAX_QUEUES_PER_PORT;
#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct TransmitQueueConfiguration
{
pub numberOfTransmitDescriptorsForTheTransmitRingAlsoKnownAsRingSize: u16,
pub overrideDefaultDeviceConfiguration: Option<TransmitQueueDeviceConfiguration>,
pub maximumTransmissionRateInMbps: Option<u16>,
}
impl Default for TransmitQueueConfiguration
{
#[inline(always)]
fn default() -> Self
{
Self::new(Self::DefaultNumberOfTransmitDescriptorsForTheTransmitRingAlsoKnownAsRingSize, None, None)
}
}
impl TransmitQueueConfiguration
{
pub const DefaultNumberOfTransmitDescriptorsForTheTransmitRingAlsoKnownAsRingSize: u16 = 512;
pub const TldkNumberOfTransmitDescriptorsForTheTransmitRingAlsoKnownAsRingSize: u16 = 2048;
pub fn new(numberOfTransmitDescriptorsForTheTransmitRingAlsoKnownAsRingSize: u16, overrideDefaultDeviceConfiguration: Option<TransmitQueueDeviceConfiguration>, maximumTransmissionRateInMbps: Option<u16>) -> Self
{
if let Some(overrideDefaultDeviceConfiguration) = overrideDefaultDeviceConfiguration
{
overrideDefaultDeviceConfiguration.validate(numberOfTransmitDescriptorsForTheTransmitRingAlsoKnownAsRingSize);
}
TransmitQueueConfiguration
{
numberOfTransmitDescriptorsForTheTransmitRingAlsoKnownAsRingSize: numberOfTransmitDescriptorsForTheTransmitRingAlsoKnownAsRingSize,
overrideDefaultDeviceConfiguration: overrideDefaultDeviceConfiguration,
maximumTransmissionRateInMbps: maximumTransmissionRateInMbps,
}
}
#[inline(always)]
pub fn startQueueWhenEthernetDeviceStarted(&self) -> bool
{
if self.overrideDefaultDeviceConfiguration.is_some()
{
self.overrideDefaultDeviceConfiguration.unwrap().startQueueWhenEthernetDeviceStarted
}
else
{
true
}
}
}