[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#804258: ITP: igb -- dkms source for the igb network driver



Le 07/11/2015 10:26, Ben Hutchings a écrit :
> On Sat, 2015-11-07 at 09:52 +0100, Clement Hermann wrote:
>> Le 07/11/2015 02:20, Ben Hutchings a écrit :
>>> On Fri, 2015-11-06 at 18:35 +0100, Clément Hermann wrote:
>>>>  igb is the Linux device driver released for Intel 82575/6, 82580, I350, and
>>>>  I210/211-based network interfaces. 
>>>>  .
>>>>  This driver uses the same base as the igb module included in the Linux kernel,
>>>>  with added features such as advanced multiqueue control (RSS), interrupts
>>>>  throttle management, Large Receive Offload (LRO) and Low Latency Interrupts
>>>>  (LLI).
>>>>  .
>>>>  Only use this driver if you need these specific features.
>>> [...]
>>>
>>> This description is inaccurate; two of the four features mentioned
>>> actually are included in the in-tree driver.  And I don't think there'a
>>> anything stopping Intel's maintainers from adding the remaining
>>> features to the in-tree driver.
>>>
>>> The justification for adding an alternate version of the driver seems
>>> quite weak.
>>>
>> You're right, this is poorly worded.
>>
>> Most features are actually in mainline, you're right, but there is often
>> no way to control them: only default values are usable.
>>
>> For instance, RSS: in mainline, you don't have the option to choose
>> (reduce) the number of queues in order avoid using both thread of a
>> HT-enabled CPU core, or keeping some cpu free of network interrupts. You
>> can free a CPU using affinity, but you'll end up with several queues on
>> another. As stated in my description, this is not intended to replace
>> the mainline kernel which should work fine for most uses.
> You can use ethtool -X to do this.
I didn't know that. Thanks.

> [...]
>>  - InterruptThrottleRate:Maximum interrupts per second, per vector
> ethtool -C ?
>

I didn't compare results by using both alternatively. I think the same
result could be achieved with this, but the way the driver does it with
parameters worked better for me : there are many parameters for ethtool
-C and it's difficult to find the correct one as the documentation is a
bit sparse. There are less parameters in the driver, just dynamic
(adaptive in ethtool ?) and max value per queue (100-100000).
>>  - IntMode:Change Interrupt Mode
>>  - Node:set the starting node to allocate memory on
>>  - LLIPort:Low Latency Interrupt TCP Port
>>  - LLIPush:Low Latency Interrupt on TCP Push flag
>>  - LLISize:Low Latency Interrupt on Packet Size
>>  - RSS:Number of Receive-Side Scaling Descriptor Queues
>>  - VMDQ:Number of Virtual Machine Device Queues
>>  - MDD:Malicious Driver Detection
>>  - QueuePairs:Enable Tx/Rx queue pairs for interrupt handling
>>  - EEE:Enable/disable on parts that support the feature
> ethtool --set-eee


>
>>  - DMAC:Disable or set latency for DMA Coalescing
> I've told them this should be done through ethtool but they never sent
> patches for this.
>
>>  - LRO:Large Receive Offload
> Usually oesn't offer much advantage over GRO, and it doesn't work with
>  bridging.

Right, also no support for IPv6 and UDP. I didn't actually enabled it
(it's a compile time option), so I guess it's out of the description.

Still, VMDQ and LLI are useful and not provided the mainline driver or
with ethtool at all AFAICS.

How about listing in the description the features that cannot be changed
by ethtool ? or specifiying the ethtool equivalent for each parameter
when it exists ?


-- 
Clément (nodens)


Attachment: signature.asc
Description: OpenPGP digital signature


Reply to: