[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <AE90C24D6B3A694183C094C60CF0A2F6026B7236@saturn3.aculab.com>
Date: Tue, 14 May 2013 09:40:26 +0100
From: "David Laight" <David.Laight@...LAB.COM>
To: "Nithin Nayak Sujir" <nsujir@...adcom.com>,
"Eric Dumazet" <eric.dumazet@...il.com>
Cc: <davem@...emloft.net>, <netdev@...r.kernel.org>,
"Michael Chan" <mchan@...adcom.com>, <stable@...r.kernel.org>
Subject: RE: [PATCH v2 net 2/2] tg3: Fix data corruption on 5725 with TSO
> >>>> + if (tg3_asic_rev(tp) == ASIC_REV_5762 && mss) {
> >>>> + u32 base = (u32) mapping & 0xffffffff;
> >>>> +
> >>>> + return ((base + len + (mss & 0x3fff)) < base);
...
> For the bug to occur, the fragment does not have to span a 4G boundary. If it is
> within MSS bytes (9.6k) of a 4G boundary, it triggers the failure.
Would it be worth simplifying the test to assume that 'len'
is 64k and 'mss' 9.6k?
(commenting on the actual condition.)
The number of false positives would be small, but the test
a lot quicker.
The '(u32)mapping + (0x10000 + 9600) < (u32)mapping' test might
even be faster than the ' tg3_asic_rev(tp) == ASIC_REV_5762' one.
David
Powered by blists - more mailing lists