Linux Kernel Mailing List wrote:
> ChangeSet 1.1822, 2004/06/21 09:32:44-07:00, [email protected]
>
> [NET]: Fix dev_queue_xmit build with older gcc.
>
> Signed-off-by: Andrew Morton <[email protected]>
> Signed-off-by: David S. Miller <[email protected]>
>
>
>
> dev.c | 7 +++----
> 1 files changed, 3 insertions(+), 4 deletions(-)
>
>
> diff -Nru a/net/core/dev.c b/net/core/dev.c
> --- a/net/core/dev.c 2004-06-22 11:16:18 -07:00
> +++ b/net/core/dev.c 2004-06-22 11:16:18 -07:00
> @@ -1406,13 +1406,12 @@
> Either shot noqueue qdisc, it is even simpler 8)
> */
> if (dev->flags & IFF_UP) {
> - preempt_disable();
> - int cpu = smp_processor_id();
> + int cpu = get_cpu();
>
> if (dev->xmit_lock_owner != cpu) {
>
> HARD_TX_LOCK_BH(dev, cpu);
> - preempt_enable();
> + put_cpu();
>
> if (!netif_queue_stopped(dev)) {
> if (netdev_nit)
> @@ -1430,7 +1429,7 @@
> "queue packet!\n", dev->name);
> goto out_enetdown;
> } else {
> - preempt_enable();
> + put_cpu();
Has this been tested with preempt?
It looks right, but I'm paranoid...
Jeff
On Tue, 22 Jun 2004, Jeff Garzik wrote:
>Has this been tested with preempt?
>
>It looks right, but I'm paranoid...
It has now. Prior to my last bk pull (a few minutes ago), there were all
number of preempt problems leading to scheduling while atomic. They
appear to be fixed now.
--Ricky