[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20160307141234.GA15734@colbert.mtl.com>
Date: Mon, 7 Mar 2016 16:12:34 +0200
From: Ido Schimmel <idosch@...lanox.com>
To: Sergei Shtylyov <sergei.shtylyov@...entembedded.com>
CC: Jiri Pirko <jiri@...nulli.us>, <netdev@...r.kernel.org>,
<davem@...emloft.net>, <eladr@...lanox.com>, <yotamg@...lanox.com>,
<ogerlitz@...lanox.com>
Subject: Re: [patch net 2/2] mlxsw: pci: Correctly determine if descriptor
queue is full
Mon, Mar 07, 2016 at 04:04:59PM IST, sergei.shtylyov@...entembedded.com wrote:
>Hello.
>
>On 3/7/2016 11:24 AM, Jiri Pirko wrote:
>
>> From: Ido Schimmel <idosch@...lanox.com>
>>
>> The descriptor queues for sending (SDQs) and receiving (RDQs) packets
>> are managed by two counters - producer and consumer - which are both
>> 16-bit in size. A queue is considered full when the difference between
>> the two equals the queue's maximum number of descriptors.
>>
>> However, if the producer counter overflows, then it's possible for the
>> full queue check to fail, as it doesn't take the overflow into account.
>> In such a case, descriptors already passed to the device - but for which
>> a completion has yet to be posted - will be overwritten, thereby causing
>> undefined behavior. The above can be achieved under heavy load (~30
>> netperf instances).
>>
>> Fix that by casting the substraction result to u16, preventing it from
>
> Subtraction.
Will fix that in v2.
Thanks!
>
>> being treated as a signed integer.
>>
>> Fixes: eda6500a987a ("mlxsw: Add PCI bus implementation")
>> Signed-off-by: Ido Schimmel <idosch@...lanox.com>
>> Signed-off-by: Jiri Pirko <jiri@...lanox.com>
>
>[...]
>
>MBR, Sergei
>
Powered by blists - more mailing lists