diff options
Diffstat (limited to 'drivers/net/usb/r8152.c')
-rw-r--r-- | drivers/net/usb/r8152.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c index 25431965a625..7bad2d316637 100644 --- a/drivers/net/usb/r8152.c +++ b/drivers/net/usb/r8152.c | |||
@@ -1359,7 +1359,7 @@ static void r8152_csum_workaround(struct r8152 *tp, struct sk_buff *skb, | |||
1359 | struct sk_buff_head seg_list; | 1359 | struct sk_buff_head seg_list; |
1360 | struct sk_buff *segs, *nskb; | 1360 | struct sk_buff *segs, *nskb; |
1361 | 1361 | ||
1362 | features &= ~(NETIF_F_IP_CSUM | NETIF_F_SG | NETIF_F_TSO); | 1362 | features &= ~(NETIF_F_SG | NETIF_F_IPV6_CSUM | NETIF_F_TSO6); |
1363 | segs = skb_gso_segment(skb, features); | 1363 | segs = skb_gso_segment(skb, features); |
1364 | if (IS_ERR(segs) || !segs) | 1364 | if (IS_ERR(segs) || !segs) |
1365 | goto drop; | 1365 | goto drop; |
@@ -3204,8 +3204,13 @@ static void rtl8152_get_ethtool_stats(struct net_device *dev, | |||
3204 | struct r8152 *tp = netdev_priv(dev); | 3204 | struct r8152 *tp = netdev_priv(dev); |
3205 | struct tally_counter tally; | 3205 | struct tally_counter tally; |
3206 | 3206 | ||
3207 | if (usb_autopm_get_interface(tp->intf) < 0) | ||
3208 | return; | ||
3209 | |||
3207 | generic_ocp_read(tp, PLA_TALLYCNT, sizeof(tally), &tally, MCU_TYPE_PLA); | 3210 | generic_ocp_read(tp, PLA_TALLYCNT, sizeof(tally), &tally, MCU_TYPE_PLA); |
3208 | 3211 | ||
3212 | usb_autopm_put_interface(tp->intf); | ||
3213 | |||
3209 | data[0] = le64_to_cpu(tally.tx_packets); | 3214 | data[0] = le64_to_cpu(tally.tx_packets); |
3210 | data[1] = le64_to_cpu(tally.rx_packets); | 3215 | data[1] = le64_to_cpu(tally.rx_packets); |
3211 | data[2] = le64_to_cpu(tally.tx_errors); | 3216 | data[2] = le64_to_cpu(tally.tx_errors); |