diff options
author | David S. Miller <davem@davemloft.net> | 2012-03-01 17:57:40 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-03-01 17:57:40 -0500 |
commit | b4017c5368f992fb8fb3a2545a0977082c6664e4 (patch) | |
tree | b18fee77164297141c988965a9846225f8d8b3d3 /net | |
parent | 97767a87f3be8834192dc3fc9412aaccf708d87f (diff) | |
parent | 413708bbaf5c85c4c8a264145f7d6c3afcd97f99 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts:
drivers/net/ethernet/broadcom/tg3.c
Conflicts in the statistics regression bug fix from 'net',
but happily Matt Carlson originally posted the fix against
'net-next' so I used that to resolve this.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/bridge/netfilter/ebtables.c | 10 | ||||
-rw-r--r-- | net/ipv4/tcp_input.c | 18 | ||||
-rw-r--r-- | net/mac80211/iface.c | 3 | ||||
-rw-r--r-- | net/mac80211/rate.c | 2 |
4 files changed, 16 insertions, 17 deletions
diff --git a/net/bridge/netfilter/ebtables.c b/net/bridge/netfilter/ebtables.c index 5864cc491369..8aa4ad0e06af 100644 --- a/net/bridge/netfilter/ebtables.c +++ b/net/bridge/netfilter/ebtables.c | |||
@@ -1893,10 +1893,7 @@ static int compat_mtw_from_user(struct compat_ebt_entry_mwt *mwt, | |||
1893 | 1893 | ||
1894 | switch (compat_mwt) { | 1894 | switch (compat_mwt) { |
1895 | case EBT_COMPAT_MATCH: | 1895 | case EBT_COMPAT_MATCH: |
1896 | match = try_then_request_module(xt_find_match(NFPROTO_BRIDGE, | 1896 | match = xt_request_find_match(NFPROTO_BRIDGE, name, 0); |
1897 | name, 0), "ebt_%s", name); | ||
1898 | if (match == NULL) | ||
1899 | return -ENOENT; | ||
1900 | if (IS_ERR(match)) | 1897 | if (IS_ERR(match)) |
1901 | return PTR_ERR(match); | 1898 | return PTR_ERR(match); |
1902 | 1899 | ||
@@ -1915,10 +1912,7 @@ static int compat_mtw_from_user(struct compat_ebt_entry_mwt *mwt, | |||
1915 | break; | 1912 | break; |
1916 | case EBT_COMPAT_WATCHER: /* fallthrough */ | 1913 | case EBT_COMPAT_WATCHER: /* fallthrough */ |
1917 | case EBT_COMPAT_TARGET: | 1914 | case EBT_COMPAT_TARGET: |
1918 | wt = try_then_request_module(xt_find_target(NFPROTO_BRIDGE, | 1915 | wt = xt_request_find_target(NFPROTO_BRIDGE, name, 0); |
1919 | name, 0), "ebt_%s", name); | ||
1920 | if (wt == NULL) | ||
1921 | return -ENOENT; | ||
1922 | if (IS_ERR(wt)) | 1916 | if (IS_ERR(wt)) |
1923 | return PTR_ERR(wt); | 1917 | return PTR_ERR(wt); |
1924 | off = xt_compat_target_offset(wt); | 1918 | off = xt_compat_target_offset(wt); |
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 53c8ce4046b2..ee42d42b2f45 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c | |||
@@ -1403,8 +1403,16 @@ static int tcp_shifted_skb(struct sock *sk, struct sk_buff *skb, | |||
1403 | 1403 | ||
1404 | BUG_ON(!pcount); | 1404 | BUG_ON(!pcount); |
1405 | 1405 | ||
1406 | /* Adjust hint for FACK. Non-FACK is handled in tcp_sacktag_one(). */ | 1406 | /* Adjust counters and hints for the newly sacked sequence |
1407 | if (tcp_is_fack(tp) && (skb == tp->lost_skb_hint)) | 1407 | * range but discard the return value since prev is already |
1408 | * marked. We must tag the range first because the seq | ||
1409 | * advancement below implicitly advances | ||
1410 | * tcp_highest_sack_seq() when skb is highest_sack. | ||
1411 | */ | ||
1412 | tcp_sacktag_one(sk, state, TCP_SKB_CB(skb)->sacked, | ||
1413 | start_seq, end_seq, dup_sack, pcount); | ||
1414 | |||
1415 | if (skb == tp->lost_skb_hint) | ||
1408 | tp->lost_cnt_hint += pcount; | 1416 | tp->lost_cnt_hint += pcount; |
1409 | 1417 | ||
1410 | TCP_SKB_CB(prev)->end_seq += shifted; | 1418 | TCP_SKB_CB(prev)->end_seq += shifted; |
@@ -1430,12 +1438,6 @@ static int tcp_shifted_skb(struct sock *sk, struct sk_buff *skb, | |||
1430 | skb_shinfo(skb)->gso_type = 0; | 1438 | skb_shinfo(skb)->gso_type = 0; |
1431 | } | 1439 | } |
1432 | 1440 | ||
1433 | /* Adjust counters and hints for the newly sacked sequence range but | ||
1434 | * discard the return value since prev is already marked. | ||
1435 | */ | ||
1436 | tcp_sacktag_one(sk, state, TCP_SKB_CB(skb)->sacked, | ||
1437 | start_seq, end_seq, dup_sack, pcount); | ||
1438 | |||
1439 | /* Difference in this won't matter, both ACKed by the same cumul. ACK */ | 1441 | /* Difference in this won't matter, both ACKed by the same cumul. ACK */ |
1440 | TCP_SKB_CB(prev)->sacked |= (TCP_SKB_CB(skb)->sacked & TCPCB_EVER_RETRANS); | 1442 | TCP_SKB_CB(prev)->sacked |= (TCP_SKB_CB(skb)->sacked & TCPCB_EVER_RETRANS); |
1441 | 1443 | ||
diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c index 6b3cd65d1e07..daa50ea15f46 100644 --- a/net/mac80211/iface.c +++ b/net/mac80211/iface.c | |||
@@ -1342,6 +1342,9 @@ u32 __ieee80211_recalc_idle(struct ieee80211_local *local) | |||
1342 | hw_roc = true; | 1342 | hw_roc = true; |
1343 | 1343 | ||
1344 | list_for_each_entry(sdata, &local->interfaces, list) { | 1344 | list_for_each_entry(sdata, &local->interfaces, list) { |
1345 | if (sdata->vif.type == NL80211_IFTYPE_MONITOR || | ||
1346 | sdata->vif.type == NL80211_IFTYPE_AP_VLAN) | ||
1347 | continue; | ||
1345 | if (sdata->old_idle == sdata->vif.bss_conf.idle) | 1348 | if (sdata->old_idle == sdata->vif.bss_conf.idle) |
1346 | continue; | 1349 | continue; |
1347 | if (!ieee80211_sdata_running(sdata)) | 1350 | if (!ieee80211_sdata_running(sdata)) |
diff --git a/net/mac80211/rate.c b/net/mac80211/rate.c index 111fba38be82..b4f7600a3e36 100644 --- a/net/mac80211/rate.c +++ b/net/mac80211/rate.c | |||
@@ -447,7 +447,7 @@ void rate_control_get_rate(struct ieee80211_sub_if_data *sdata, | |||
447 | for (i = 0; i < IEEE80211_TX_MAX_RATES; i++) { | 447 | for (i = 0; i < IEEE80211_TX_MAX_RATES; i++) { |
448 | info->control.rates[i].idx = -1; | 448 | info->control.rates[i].idx = -1; |
449 | info->control.rates[i].flags = 0; | 449 | info->control.rates[i].flags = 0; |
450 | info->control.rates[i].count = 1; | 450 | info->control.rates[i].count = 0; |
451 | } | 451 | } |
452 | 452 | ||
453 | if (sdata->local->hw.flags & IEEE80211_HW_HAS_RATE_CONTROL) | 453 | if (sdata->local->hw.flags & IEEE80211_HW_HAS_RATE_CONTROL) |