2011/5/13 <frank.blaschka@xxxxxxxxxx>: > From: Frank Blaschka <frank.blaschka@xxxxxxxxxx> > > Set rx csum default to hw checksumming again. > Remove sysfs interface for rx csum (checksumming) and TSO (large_send). > With the new hw_features it does not work to keep the old sysfs > interface in parallel. Convert options.checksum_type to new hw_features. [...] > @@ -1482,32 +1478,34 @@ static int qeth_l3_start_ipa_checksum(st > >    ÂQETH_CARD_TEXT(card, 3, "strtcsum"); > > -    if (card->options.checksum_type == NO_CHECKSUMMING) { > -        dev_info(&card->gdev->dev, > -            "Using no checksumming on %s.\n", > -            QETH_CARD_IFNAME(card)); > -        return 0; > -    } > -    if (card->options.checksum_type == SW_CHECKSUMMING) { > -        dev_info(&card->gdev->dev, > -            "Using SW checksumming on %s.\n", > -            QETH_CARD_IFNAME(card)); > -        return 0; > -    } > -    if (!qeth_is_supported(card, IPA_INBOUND_CHECKSUM)) { > -        dev_info(&card->gdev->dev, > +    if (card->dev->features & NETIF_F_RXCSUM) { > +        /* hw may have changed during offline or recovery */ > +        if (!qeth_is_supported(card, IPA_INBOUND_CHECKSUM)) { > +            dev_info(&card->gdev->dev, >            Â"Inbound HW Checksumming not " >            Â"supported on %s,\ncontinuing " >            Â"using Inbound SW Checksumming\n", >            ÂQETH_CARD_IFNAME(card)); > -        card->options.checksum_type = SW_CHECKSUMMING; > -        return 0; > -    } > -    rc = qeth_l3_send_checksum_command(card); > -    if (!rc) > -        dev_info(&card->gdev->dev, > +            goto update_feature; > +        } > + > +        rc = qeth_l3_send_checksum_command(card); > +        if (!rc) > +            dev_info(&card->gdev->dev, >            Â"HW Checksumming (inbound) enabled\n"); > +        else > +            goto update_feature; > +    } else > +        dev_info(&card->gdev->dev, > +            "Using SW checksumming on %s.\n", > +            QETH_CARD_IFNAME(card)); > +    return 0; > > +update_feature: > +    rtnl_lock(); > +    card->dev->features &= ~NETIF_F_RXCSUM; > +    netdev_update_features(card->dev); > +    rtnl_unlock(); >    Âreturn rc; > Â} This will retry starting the RX checksumming via set_features(). Is that the intention? If not, then just use something like my example in qeth_l3_start_ipa_checksum(). Best Regards, MichaÅ MirosÅaw ÿô.nÇ·®+%˱é¥wÿº{.nÇ·¥{±þÍÓ§¶¡Ü}©²ÆzÚj:+v¨þø®w¥þàÞ¨è&¢)ß«a¶Úÿûz¹ÞúÝjÿwèf