aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2012-03-01 17:57:40 -0500
committerDavid S. Miller <davem@davemloft.net>2012-03-01 17:57:40 -0500
commitb4017c5368f992fb8fb3a2545a0977082c6664e4 (patch)
treeb18fee77164297141c988965a9846225f8d8b3d3 /net
parent97767a87f3be8834192dc3fc9412aaccf708d87f (diff)
parent413708bbaf5c85c4c8a264145f7d6c3afcd97f99 (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.c10
-rw-r--r--net/ipv4/tcp_input.c18
-rw-r--r--net/mac80211/iface.c3
-rw-r--r--net/mac80211/rate.c2
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)