mirror of
https://github.com/torvalds/linux.git
synced 2024-11-15 00:21:59 +00:00
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6: [NETFILTER]: ipt_CLUSTERIP: fix oops in checkentry function [TCP]: slow_start_after_idle should influence cwnd validation too [SC92031]: Fix priv->lock context [NET_SCHED]: cls_tcindex: fix compatibility breakage
This commit is contained in:
commit
9631eb0bc1
@ -964,7 +964,7 @@ static int sc92031_start_xmit(struct sk_buff *skb, struct net_device *dev)
|
|||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
spin_lock_bh(&priv->lock);
|
spin_lock(&priv->lock);
|
||||||
|
|
||||||
if (unlikely(!netif_carrier_ok(dev))) {
|
if (unlikely(!netif_carrier_ok(dev))) {
|
||||||
err = -ENOLINK;
|
err = -ENOLINK;
|
||||||
@ -1005,7 +1005,7 @@ static int sc92031_start_xmit(struct sk_buff *skb, struct net_device *dev)
|
|||||||
netif_stop_queue(dev);
|
netif_stop_queue(dev);
|
||||||
|
|
||||||
out_unlock:
|
out_unlock:
|
||||||
spin_unlock_bh(&priv->lock);
|
spin_unlock(&priv->lock);
|
||||||
|
|
||||||
out:
|
out:
|
||||||
dev_kfree_skb(skb);
|
dev_kfree_skb(skb);
|
||||||
@ -1042,12 +1042,12 @@ static int sc92031_open(struct net_device *dev)
|
|||||||
priv->pm_config = 0;
|
priv->pm_config = 0;
|
||||||
|
|
||||||
/* Interrupts already disabled by sc92031_stop or sc92031_probe */
|
/* Interrupts already disabled by sc92031_stop or sc92031_probe */
|
||||||
spin_lock(&priv->lock);
|
spin_lock_bh(&priv->lock);
|
||||||
|
|
||||||
_sc92031_reset(dev);
|
_sc92031_reset(dev);
|
||||||
mmiowb();
|
mmiowb();
|
||||||
|
|
||||||
spin_unlock(&priv->lock);
|
spin_unlock_bh(&priv->lock);
|
||||||
sc92031_enable_interrupts(dev);
|
sc92031_enable_interrupts(dev);
|
||||||
|
|
||||||
if (netif_carrier_ok(dev))
|
if (netif_carrier_ok(dev))
|
||||||
@ -1077,13 +1077,13 @@ static int sc92031_stop(struct net_device *dev)
|
|||||||
/* Disable interrupts, stop Tx and Rx. */
|
/* Disable interrupts, stop Tx and Rx. */
|
||||||
sc92031_disable_interrupts(dev);
|
sc92031_disable_interrupts(dev);
|
||||||
|
|
||||||
spin_lock(&priv->lock);
|
spin_lock_bh(&priv->lock);
|
||||||
|
|
||||||
_sc92031_disable_tx_rx(dev);
|
_sc92031_disable_tx_rx(dev);
|
||||||
_sc92031_tx_clear(dev);
|
_sc92031_tx_clear(dev);
|
||||||
mmiowb();
|
mmiowb();
|
||||||
|
|
||||||
spin_unlock(&priv->lock);
|
spin_unlock_bh(&priv->lock);
|
||||||
|
|
||||||
free_irq(pdev->irq, dev);
|
free_irq(pdev->irq, dev);
|
||||||
pci_free_consistent(pdev, TX_BUF_TOT_LEN, priv->tx_bufs,
|
pci_free_consistent(pdev, TX_BUF_TOT_LEN, priv->tx_bufs,
|
||||||
@ -1539,13 +1539,13 @@ static int sc92031_suspend(struct pci_dev *pdev, pm_message_t state)
|
|||||||
/* Disable interrupts, stop Tx and Rx. */
|
/* Disable interrupts, stop Tx and Rx. */
|
||||||
sc92031_disable_interrupts(dev);
|
sc92031_disable_interrupts(dev);
|
||||||
|
|
||||||
spin_lock(&priv->lock);
|
spin_lock_bh(&priv->lock);
|
||||||
|
|
||||||
_sc92031_disable_tx_rx(dev);
|
_sc92031_disable_tx_rx(dev);
|
||||||
_sc92031_tx_clear(dev);
|
_sc92031_tx_clear(dev);
|
||||||
mmiowb();
|
mmiowb();
|
||||||
|
|
||||||
spin_unlock(&priv->lock);
|
spin_unlock_bh(&priv->lock);
|
||||||
|
|
||||||
out:
|
out:
|
||||||
pci_set_power_state(pdev, pci_choose_state(pdev, state));
|
pci_set_power_state(pdev, pci_choose_state(pdev, state));
|
||||||
@ -1565,12 +1565,12 @@ static int sc92031_resume(struct pci_dev *pdev)
|
|||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
/* Interrupts already disabled by sc92031_suspend */
|
/* Interrupts already disabled by sc92031_suspend */
|
||||||
spin_lock(&priv->lock);
|
spin_lock_bh(&priv->lock);
|
||||||
|
|
||||||
_sc92031_reset(dev);
|
_sc92031_reset(dev);
|
||||||
mmiowb();
|
mmiowb();
|
||||||
|
|
||||||
spin_unlock(&priv->lock);
|
spin_unlock_bh(&priv->lock);
|
||||||
sc92031_enable_interrupts(dev);
|
sc92031_enable_interrupts(dev);
|
||||||
|
|
||||||
netif_device_attach(dev);
|
netif_device_attach(dev);
|
||||||
|
@ -411,12 +411,10 @@ checkentry(const char *tablename,
|
|||||||
"has invalid config pointer!\n");
|
"has invalid config pointer!\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
clusterip_config_entry_get(cipinfo->config);
|
|
||||||
} else {
|
} else {
|
||||||
/* Case B: This is a new rule referring to an existing
|
/* Case B: This is a new rule referring to an existing
|
||||||
* clusterip config. */
|
* clusterip config. */
|
||||||
cipinfo->config = config;
|
cipinfo->config = config;
|
||||||
clusterip_config_entry_get(cipinfo->config);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* Case C: This is a completely new clusterip config */
|
/* Case C: This is a completely new clusterip config */
|
||||||
|
@ -943,7 +943,8 @@ static void tcp_cwnd_validate(struct sock *sk, struct tcp_sock *tp)
|
|||||||
if (tp->packets_out > tp->snd_cwnd_used)
|
if (tp->packets_out > tp->snd_cwnd_used)
|
||||||
tp->snd_cwnd_used = tp->packets_out;
|
tp->snd_cwnd_used = tp->packets_out;
|
||||||
|
|
||||||
if ((s32)(tcp_time_stamp - tp->snd_cwnd_stamp) >= inet_csk(sk)->icsk_rto)
|
if (sysctl_tcp_slow_start_after_idle &&
|
||||||
|
(s32)(tcp_time_stamp - tp->snd_cwnd_stamp) >= inet_csk(sk)->icsk_rto)
|
||||||
tcp_cwnd_application_limited(sk);
|
tcp_cwnd_application_limited(sk);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -245,9 +245,9 @@ tcindex_set_parms(struct tcf_proto *tp, unsigned long base, u32 handle,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (tb[TCA_TCINDEX_SHIFT-1]) {
|
if (tb[TCA_TCINDEX_SHIFT-1]) {
|
||||||
if (RTA_PAYLOAD(tb[TCA_TCINDEX_SHIFT-1]) < sizeof(u16))
|
if (RTA_PAYLOAD(tb[TCA_TCINDEX_SHIFT-1]) < sizeof(int))
|
||||||
goto errout;
|
goto errout;
|
||||||
cp.shift = *(u16 *) RTA_DATA(tb[TCA_TCINDEX_SHIFT-1]);
|
cp.shift = *(int *) RTA_DATA(tb[TCA_TCINDEX_SHIFT-1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
err = -EBUSY;
|
err = -EBUSY;
|
||||||
|
Loading…
Reference in New Issue
Block a user