WARNING in module rt2870sta stable kernel 2.6.37

Denis Kirjanov kirjanov at gmail.com
Tue Jan 18 20:25:41 UTC 2011


I have sent a patch to fix this problem: https://lkml.org/lkml/2011/1/10/329
It also fixes a bug #26472: https://bugzilla.kernel.org/show_bug.cgi?id=26472

On Tue, Jan 18, 2011 at 11:16 PM, Giangiacomo Mariotti
<gg.mariotti at gmail.com> wrote:
> Hi, the following message was logged on a 2.6.37 kernel(it says
> tainted, but it's actually a micro patch I wrote and applied on top of
> current 2.6.37 vanilla, patch appended, but it should be irrelevant, I
> just shut up a bunch of useless debug output for this staging driver):
>
> [   31.747937] ------------[ cut here ]------------
> [   31.747958] WARNING: at include/linux/netdevice.h:1557
> netif_stop_queue.clone.3+0x1a/0x36 [rt2870sta]()
> [   31.747961] Hardware name: EX58-UD5
> [   31.747963] Modules linked in: rt2870sta(C+) i2c_i801 shpchp
> i7core_edac edac_core snd_hwdep i2c_core snd_pcm pci_hotplug pcspkr
> evdev snd_seq snd_timer snd_seq_device snd tpm_tis tpm tpm_bios
> crc_ccitt soundcore snd_page_alloc processor thermal_sys wmi button
> crc32c_intel sg sr_mod usbhid firewire_ohci sd_mod hid cdrom
> ata_generic crc_t10dif usb_storage uas uhci_hcd ehci_hcd ahci
> firewire_core usbcore r8169 libahci pata_jmicron crc_itu_t mii
> nls_base floppy [last unloaded: scsi_wait_scan]
> [   31.747999] Pid: 669, comm: modprobe Tainted: G         C  2.6.37-my001+ #1
> [   31.748002] Call Trace:
> [   31.748010]  [<ffffffff8103b961>] ? warn_slowpath_common+0x78/0x8c
> [   31.748029]  [<ffffffffa03e5b0f>] ?
> netif_stop_queue.clone.3+0x1a/0x36 [rt2870sta]
> [   31.748048]  [<ffffffffa03e60d2>] ? RtmpPhyNetDevInit+0x6d/0x75 [rt2870sta]
> [   31.748065]  [<ffffffffa03f5034>] ? rtusb_probe+0x28c/0x36e [rt2870sta]
> [   31.748071]  [<ffffffffa0035572>] ? usb_probe_interface+0xfc/0x16f [usbcore]
> [   31.748075]  [<ffffffff812a5b61>] ? driver_probe_device+0xb2/0x142
> [   31.748077]  [<ffffffff812a5c40>] ? __driver_attach+0x4f/0x6f
> [   31.748079]  [<ffffffff812a5bf1>] ? __driver_attach+0x0/0x6f
> [   31.748082]  [<ffffffff812a4e05>] ? bus_for_each_dev+0x47/0x72
> [   31.748084]  [<ffffffff812a54dd>] ? bus_add_driver+0xa2/0x1f2
> [   31.748086]  [<ffffffff812a5e64>] ? driver_register+0x8d/0xf5
> [   31.748091]  [<ffffffffa003473a>] ? usb_register_driver+0x80/0x128 [usbcore]
> [   31.748097]  [<ffffffffa0412000>] ? init_module+0x0/0x30 [rt2870sta]
> [   31.748100]  [<ffffffff810002eb>] ? do_one_initcall+0x78/0x129
> [   31.748104]  [<ffffffff81069c68>] ? sys_init_module+0x9c/0x1d7
> [   31.748106]  [<ffffffff8100293b>] ? system_call_fastpath+0x16/0x1b
> [   31.748108] ---[ end trace 285f31f0bc9e54ab ]---
> [   31.748109] netif_stop_queue() cannot be called before register_netdev()
> [   31.748533] usbcore: registered new interface driver rt2870
>
>
> My micro patch:
>
> >From a7335c70ec821221b79b7607765d2a7de5fc78e3 Mon Sep 17 00:00:00 2001
> From: Giangiacomo Mariotti <giangiacomo.mariotti at gmail.com>
> Date: Tue, 11 Jan 2011 04:57:58 +0100
> Subject: 0001-make-debug-output-standard-compliant-in-rt2870.patch
>
>
> Signed-off-by: Giangiacomo Mariotti <giangiacomo.mariotti at gmail.com>
> ---
>  drivers/staging/rt2860/chip/mac_usb.h        |    3 ++-
>  drivers/staging/rt2860/common/cmm_data_usb.c |    6 +++---
>  drivers/staging/rt2860/sta_ioctl.c           |   12 ++++++------
>  drivers/staging/rt2860/usb_main_dev.c        |    2 +-
>  4 files changed, 12 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/staging/rt2860/chip/mac_usb.h
> b/drivers/staging/rt2860/chip/mac_usb.h
> index ed0c0b4..e2310dc 100644
> --- a/drivers/staging/rt2860/chip/mac_usb.h
> +++ b/drivers/staging/rt2860/chip/mac_usb.h
> @@ -37,6 +37,7 @@
>  #ifndef __MAC_USB_H__
>  #define __MAC_USB_H__
>
> +#include <linux/kernel.h>
>  #include "../rtmp_type.h"
>  #include "rtmp_mac.h"
>  #include "rtmp_phy.h"
> @@ -224,7 +225,7 @@ struct rt_rx_context {
>                                RTMP_IRQ_LOCK(&pAd->DeQueueLock[QueIdx], irqFlags);             \
>                                if (pAd->DeQueueRunning[QueIdx]) {                                              \
>                                        RTMP_IRQ_UNLOCK(&pAd->DeQueueLock[QueIdx], irqFlags); \
> -                                       DBGPRINT(RT_DEBUG_OFF, ("DeQueueRunning[%d]= TRUE!\n", QueIdx));                \
> +                                       pr_debug("DeQueueRunning[%d]= TRUE!\n", QueIdx);                \
>                                        continue;                                                                                       \
>                                } else {                                                                                                \
>                                        pAd->DeQueueRunning[QueIdx] = TRUE;                                     \
> diff --git a/drivers/staging/rt2860/common/cmm_data_usb.c
> b/drivers/staging/rt2860/common/cmm_data_usb.c
> index 7c56c2f..be930ae 100644
> --- a/drivers/staging/rt2860/common/cmm_data_usb.c
> +++ b/drivers/staging/rt2860/common/cmm_data_usb.c
> @@ -51,16 +51,16 @@ static inline int RtmpUSBCanDoWrite(struct
> rt_rtmp_adapter *pAd,
>             pHTTXContext->NextBulkOutPosition)
>            && (pHTTXContext->CurWritePosition + LOCAL_TXBUF_SIZE) >
>            pHTTXContext->NextBulkOutPosition) {
> -               DBGPRINT(RT_DEBUG_ERROR, ("RtmpUSBCanDoWrite c1!\n"));
> +               pr_debug("RtmpUSBCanDoWrite c1!\n");
>                RTUSB_SET_BULK_FLAG(pAd,
>                                    (fRTUSB_BULK_OUT_DATA_NORMAL << QueIdx));
>        } else if ((pHTTXContext->CurWritePosition == 8)
>                   && (pHTTXContext->NextBulkOutPosition < LOCAL_TXBUF_SIZE)) {
> -               DBGPRINT(RT_DEBUG_ERROR, ("RtmpUSBCanDoWrite c2!\n"));
> +               pr_debug("RtmpUSBCanDoWrite c2!\n");
>                RTUSB_SET_BULK_FLAG(pAd,
>                                    (fRTUSB_BULK_OUT_DATA_NORMAL << QueIdx));
>        } else if (pHTTXContext->bCurWriting == TRUE) {
> -               DBGPRINT(RT_DEBUG_ERROR, ("RtmpUSBCanDoWrite c3!\n"));
> +               pr_debug("RtmpUSBCanDoWrite c3!\n");
>        } else {
>                canWrite = NDIS_STATUS_SUCCESS;
>        }
> diff --git a/drivers/staging/rt2860/sta_ioctl.c
> b/drivers/staging/rt2860/sta_ioctl.c
> index e095a44..00fe666 100644
> --- a/drivers/staging/rt2860/sta_ioctl.c
> +++ b/drivers/staging/rt2860/sta_ioctl.c
> @@ -394,9 +394,9 @@ int rt_ioctl_siwfreq(struct net_device *dev,
>
>        if (ChannelSanity(pAdapter, chan) == TRUE) {
>                pAdapter->CommonCfg.Channel = chan;
> -               DBGPRINT(RT_DEBUG_ERROR,
> -                        ("==>rt_ioctl_siwfreq::SIOCSIWFREQ[cmd=0x%x] (Channel=%d)\n",
> -                         SIOCSIWFREQ, pAdapter->CommonCfg.Channel));
> +               netdev_dbg(dev,
> +                       "==>rt_ioctl_siwfreq::SIOCSIWFREQ[cmd=0x%x] (Channel=%d)\n",
> +                       SIOCSIWFREQ, pAdapter->CommonCfg.Channel);
>        } else
>                return -EINVAL;
>
> @@ -1113,9 +1113,9 @@ int rt_ioctl_giwscan(struct net_device *dev,
>
>        data->length = current_ev - extra;
>        pAdapter->StaCfg.bScanReqIsFromWebUI = FALSE;
> -       DBGPRINT(RT_DEBUG_ERROR,
> -                ("===>rt_ioctl_giwscan. %d(%d) BSS returned, data->length = %d\n",
> -                 i, pAdapter->ScanTab.BssNr, data->length));
> +       netdev_dbg(dev,
> +               "===>rt_ioctl_giwscan. %d(%d) BSS returned, data->length = %d\n",
> +               i, pAdapter->ScanTab.BssNr, data->length);
>        return 0;
>  }
>
> diff --git a/drivers/staging/rt2860/usb_main_dev.c
> b/drivers/staging/rt2860/usb_main_dev.c
> index cd15daa..5b0dfc0 100644
> --- a/drivers/staging/rt2860/usb_main_dev.c
> +++ b/drivers/staging/rt2860/usb_main_dev.c
> @@ -715,7 +715,7 @@ void RTUSBWatchDog(struct rt_rtmp_adapter *pAd)
>                                RTMP_IRQ_UNLOCK(&pAd->BulkOutLock[idx],
>                                                irqFlags);
>
> -                               printk(KERN_INFO "%d:%lu LTL=%d , TL=%d L:%d\n",
> +                               pr_debug("%d:%lu LTL=%d , TL=%d L:%d\n",
>                                       idx, pAd->watchDogTxPendingCnt[idx],
>                                       pAd->TransferedLength[idx],
>                                       actual_length, transfer_buffer_length);
> --
> 1.7.2.3
>
> --
> Giangiacomo
> _______________________________________________
> devel mailing list
> devel at linuxdriverproject.org
> http://driverdev.linuxdriverproject.org/mailman/listinfo/devel
>



-- 
Regards,
Denis



More information about the devel mailing list