Tom Chen wrote:
> Hello,
>
> I am using NICDrv to test my GLDv3 driver. I encountered an interesting issue.
> In the load/unload test, there are some packets for transmission from OS look
> very strange, they are big TCP packets but OS doesn't indicate that they
> require doing LSO.
>
> I am using the standard way to retrieve checksum and lso flags, I am
> wondering how can this happen?
>
> Tom
>
> Apr 3 12:10:06 euclid qlge: WARNING: large IPv4 TCP packet 3154, but lso not
> set! mtu 1500 mss 0 pflags 0h lso_flags 0h
> Apr 3 12:10:06 euclid qlge: WARNING: large IPv4 TCP packet 3426, but lso not
> set! mtu 1500 mss 0 pflags 0h lso_flags 0h
>
> if(qlge->chksum_cap)
> {
> hcksum_retrieve(mp, NULL, NULL, NULL, NULL, NULL, NULL, &pflags);
> if (pflags!=0)
> {
> lso_info_get(mp, &mss, &lso_flags);
> use_lso= (lso_flags == HW_LSO);
> }
> }
> ......
> if((total_len > 1514)&&((!mss) || (!lso_flags)))
> {
> if(pkt_is_tcp(bp))
> {
> cmn_err(CE_WARN,"large IPv4 TCP packet %d, but lso not set! mtu %d"
> "mss %d pflags %xh lso_flags %xh\n", total_len,
> mtu,mss, pflags, lso_flags);
> }
> }
>
You are hitting CR6586787. It seems that your driver is robust enough to
discard the LSO packet.
The fix has been integrated in snv_111.
-Chris