lkml.org 
[lkml]   [2012]   [Jul]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[ 33/48] sky2: fix checksum bit management on some chips
    3.2-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: stephen hemminger <shemminger@vyatta.com>

    [ Upstream commit 5ff0feac88ced864f44adb145142269196fa79d9 ]

    The newer flavors of Yukon II use a different method for receive
    checksum offload. This is indicated in the driver by the SKY2_HW_NEW_LE
    flag. On these newer chips, the BMU_ENA_RX_CHKSUM should not be set.

    The driver would get incorrectly toggle the bit, enabling the old
    checksum logic on these chips and cause a BUG_ON() assertion. If
    receive checksum was toggled via ethtool.

    Reported-by: Kirill Smelkov <kirr@mns.spb.ru>
    Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    ---
    drivers/net/ethernet/marvell/sky2.c | 10 ++++++----
    1 file changed, 6 insertions(+), 4 deletions(-)

    diff --git a/drivers/net/ethernet/marvell/sky2.c b/drivers/net/ethernet/marvell/sky2.c
    index 65c51ff..11ddd838 100644
    --- a/drivers/net/ethernet/marvell/sky2.c
    +++ b/drivers/net/ethernet/marvell/sky2.c
    @@ -4361,10 +4361,12 @@ static int sky2_set_features(struct net_device *dev, u32 features)
    struct sky2_port *sky2 = netdev_priv(dev);
    u32 changed = dev->features ^ features;

    - if (changed & NETIF_F_RXCSUM) {
    - u32 on = features & NETIF_F_RXCSUM;
    - sky2_write32(sky2->hw, Q_ADDR(rxqaddr[sky2->port], Q_CSR),
    - on ? BMU_ENA_RX_CHKSUM : BMU_DIS_RX_CHKSUM);
    + if ((changed & NETIF_F_RXCSUM) &&
    + !(sky2->hw->flags & SKY2_HW_NEW_LE)) {
    + sky2_write32(sky2->hw,
    + Q_ADDR(rxqaddr[sky2->port], Q_CSR),
    + (features & NETIF_F_RXCSUM)
    + ? BMU_ENA_RX_CHKSUM : BMU_DIS_RX_CHKSUM);
    }

    if (changed & NETIF_F_RXHASH)



    \
     
     \ /
      Last update: 2012-07-09 21:21    [W:3.548 / U:0.852 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site