From: Michal Nazarewicz <m.nazarewicz@xxxxxxxxxxx> Date: Mon, 20 Sep 2010 20:23:04 +0200 > This commit removes the call to dev_get_stats() from the > gen_ndis_query_resp() function. Since spin_lock_bh() was > added to dev_txq_stats_fold() the call started causing > warnings. This is because gen_ndis_query_resp() can be > (indirectly) called from rndis_command_complete() which is > called with interrupts disabled. > > While at it, this commit also changes the > gen_ndis_query_resp() function so that "net" local variable is > used instead of "rndis_per_dev_params[configNr].dev" in all > places this is referenced. > > Signed-off-by: Michal Nazarewicz <m.nazarewicz@xxxxxxxxxxx> The way this works is dev_get_stats() takes that "temp" object the caller provides, it writes the correct statistics into it (with any necessary translations), and then passes back a pointer to it. See net/core/dev.c:dev_get_stats() You must use dev_get_stats() or else the statistics won't be properly converted. Like I originally suggested, you need to rearrange the code in this driver such that the gen_ndis_query_resp() work happens in a tasklet, workqueue, or some other non-hardware-irq context. -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html