Yam driver bugfix (2.4.x)

From: La'd (ltoqgwu.xdbdzu@suonline.net)
Date: Thu Sep 06 2001 - 07:09:00 EEST

  • Next message: pa3gcu: "Misconfigured mailgate.????"

    X-Info: Received from 195.47.60.30 by SMTP-gateway
    X-Info: Received from stdin by prsend.pl.3179
    X-From: Ladislav Vaiz <vpx@omnibus.co.uk>
    Subject: Yam driver bugfix (2.4.x)
    Sender: awzargej.mhxogjgvsm@makinastudios.com
    X-sender: bna@macc.edu
      by localhost with smtp; 6 sep 2001 06: 06:47 -0000
    Received: from localhost (lpsqaxli@telemedia.net.mx)
    Content-type: TEXT/PLAIN; charset=US-ASCII
      by 195.47.60.30 with smtp; 6 sep 2001 06: 08:54 -0000
    Mime-version: 1.0
    Precedence: bulk
    Date: Thu, 6 Sep 2001 08:06:46 +0200 (CEST)
    X-mailing-list: crolzybv.iltsd@mailit.tunk.net
    Message-id: <terhi.victor@logonet.com>

    Hi all,
    there is patch for 2.4. kernels (2.4.9). It fixes problems with yam
    driver:

    1) calls kfree_skb_any() in interrupt handler - calling kfree_skb() causes
    warnings and crash.

    2) calls request_irq() and fee_irq() with dev_id - it fixes problems with
    shared interrupts

    All reports are welcome before sending this to l-k.

           73! Lada, OK1ZIA

    --- linux.orig/drivers/net/hamradio/yam.c Wed Apr 18 23:40:06 2001
    +++ linux/drivers/net/hamradio/yam.c Wed Sep 5 19:20:57 2001
    @@ -35,6 +35,9 @@
      * 0.6 F6FBB 25.08.98 Added 1200Bds format
      * 0.7 F6FBB 12.09.98 Added to the kernel configuration
      * 0.8 F6FBB 14.10.98 Fixed slottime/persistance timing bug
    + * OK1ZIA 2.09.01 Fixed "kfree_skb on hard IRQ"
    + * using dev_kfree_skb_any(). (important in 2.4 kernel)
    + *
      */
     
     /*****************************************************************************/
    @@ -649,16 +652,16 @@
                             yp->tx_state = TX_DATA;
                             if (skb->data[0] != 0) {
     /* do_kiss_params(s, skb->data, skb->len); */
    - dev_kfree_skb(skb);
    + dev_kfree_skb_any(skb);
                                     break;
                             }
                             yp->tx_len = skb->len - 1; /* strip KISS byte */
                             if (yp->tx_len >= YAM_MAX_FRAME || yp->tx_len < 2) {
    - dev_kfree_skb(skb);
    + dev_kfree_skb_any(skb);
                                     break;
                             }
                             memcpy(yp->tx_buf, skb->data + 1, yp->tx_len);
    - dev_kfree_skb(skb);
    + dev_kfree_skb_any(skb);
                             yp->tx_count = 0;
                             yp->tx_crcl = 0x21;
                             yp->tx_crch = 0xf3;
    @@ -858,7 +861,7 @@
                     return -EIO;
             }
             outb(0, IER(dev->base_addr));
    - if (request_irq(dev->irq, yam_interrupt, SA_INTERRUPT | SA_SHIRQ, dev->name, NULL)) {
    + if (request_irq(dev->irq, yam_interrupt, SA_INTERRUPT | SA_SHIRQ, dev->name, dev)) {
                     printk(KERN_ERR "%s: irq %d busy\n", dev->name, dev->irq);
                     return -EBUSY;
             }
    @@ -896,7 +899,7 @@
             outb(0, IER(dev->base_addr));
             outb(1, MCR(dev->base_addr));
             /* Remove IRQ handler if last */
    - free_irq(dev->irq, NULL);
    + free_irq(dev->irq,dev);
             release_region(dev->base_addr, YAM_EXTENT);
             netif_stop_queue(dev);
             while ((skb = skb_dequeue(&yp->send_queue)))

    -----CUT HERE----------------

    -
    To unsubscribe from this list: send the line "unsubscribe linux-hams" in
    the body of a message to vvgsu@mail.dy.fi
    More majordomo info at http://vger.kernel.org/majordomo-info.html

    -
    To unsubscribe from this list: send the line "unsubscribe linux-hams" in
    the body of a message to hnqszzpv@powercom.net
    More majordomo info at http://vger.kernel.org/majordomo-info.html



    This archive was generated by hypermail 2b30 : Thu Sep 06 2001 - 20:41:58 EEST