diff options
Diffstat (limited to 'net/core/dev.c')
-rw-r--r-- | net/core/dev.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index 60c51f765887..f48d1b24f9ce 100644 --- a/net/core/dev.c +++ b/net/core/dev.c | |||
@@ -1991,8 +1991,13 @@ static void net_tx_action(struct softirq_action *h) | |||
1991 | spin_unlock(root_lock); | 1991 | spin_unlock(root_lock); |
1992 | } else { | 1992 | } else { |
1993 | if (!test_bit(__QDISC_STATE_DEACTIVATED, | 1993 | if (!test_bit(__QDISC_STATE_DEACTIVATED, |
1994 | &q->state)) | 1994 | &q->state)) { |
1995 | __netif_reschedule(q); | 1995 | __netif_reschedule(q); |
1996 | } else { | ||
1997 | smp_mb__before_clear_bit(); | ||
1998 | clear_bit(__QDISC_STATE_SCHED, | ||
1999 | &q->state); | ||
2000 | } | ||
1996 | } | 2001 | } |
1997 | } | 2002 | } |
1998 | } | 2003 | } |
@@ -4663,6 +4668,12 @@ int netdev_compute_features(unsigned long all, unsigned long one) | |||
4663 | one |= NETIF_F_GSO_SOFTWARE; | 4668 | one |= NETIF_F_GSO_SOFTWARE; |
4664 | one |= NETIF_F_GSO; | 4669 | one |= NETIF_F_GSO; |
4665 | 4670 | ||
4671 | /* | ||
4672 | * If even one device supports a GSO protocol with software fallback, | ||
4673 | * enable it for all. | ||
4674 | */ | ||
4675 | all |= one & NETIF_F_GSO_SOFTWARE; | ||
4676 | |||
4666 | /* If even one device supports robust GSO, enable it for all. */ | 4677 | /* If even one device supports robust GSO, enable it for all. */ |
4667 | if (one & NETIF_F_GSO_ROBUST) | 4678 | if (one & NETIF_F_GSO_ROBUST) |
4668 | all |= NETIF_F_GSO_ROBUST; | 4679 | all |= NETIF_F_GSO_ROBUST; |