10af87c3d9
Support for rt2800 device is broken since my 'rt2x00: rt2x00dev: use rt2x00dev->tx->limit' patch. The changelog of that commit says that the TX data queue is initialized already when the rt2x00lib_probe_hw() function is called. However as Jakub noticed it, this statement is not correct. The queue->limit field is initialized in the rt2x00queue_alloc_entries routine and that is not yet called when rt2x00lib_probe_hw() runs. Because the value of tx->limit contains zero, the driver tries to allocate a kernel fifo with zero size and kfifo_alloc rejects that with -EINVAL. PCI: Enabling device 0000:01:00.0 (0000 -> 0002) ieee80211 phy1: rt2x00_set_rt: Info - RT chipset 3071, rev 021c detected ieee80211 phy1: rt2x00_set_rf: Info - RF chipset 0008 detected ieee80211 phy1: rt2x00lib_probe_dev: Error - Failed to initialize hw rt2800pci: probe of 0000:01:00.0 failed with error -22 Move the data_queue field initialization from the rt2x00queue_alloc_entries routine into the rt2x00queue_init function. The initialization code is not strictly related to the allocation, and the change ensures that the queue_data fields can be used in the probe routines. The patch also introduces a helper function in order to be able to get the correct data_queue_desc structure for a given queue. This helper is only needed temporarily and it will be removed later. Reported-by: Jakub Kicinski <moorray@wp.pl> Signed-off-by: Gabor Juhos <juhosg@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com> |
||
---|---|---|
.. | ||
Kconfig | ||
Makefile | ||
rt2x00.h | ||
rt2x00config.c | ||
rt2x00crypto.c | ||
rt2x00debug.c | ||
rt2x00debug.h | ||
rt2x00dev.c | ||
rt2x00dump.h | ||
rt2x00firmware.c | ||
rt2x00leds.c | ||
rt2x00leds.h | ||
rt2x00lib.h | ||
rt2x00link.c | ||
rt2x00mac.c | ||
rt2x00mmio.c | ||
rt2x00mmio.h | ||
rt2x00pci.c | ||
rt2x00pci.h | ||
rt2x00queue.c | ||
rt2x00queue.h | ||
rt2x00reg.h | ||
rt2x00soc.c | ||
rt2x00soc.h | ||
rt2x00usb.c | ||
rt2x00usb.h | ||
rt61pci.c | ||
rt61pci.h | ||
rt73usb.c | ||
rt73usb.h | ||
rt2400pci.c | ||
rt2400pci.h | ||
rt2500pci.c | ||
rt2500pci.h | ||
rt2500usb.c | ||
rt2500usb.h | ||
rt2800.h | ||
rt2800lib.c | ||
rt2800lib.h | ||
rt2800pci.c | ||
rt2800pci.h | ||
rt2800usb.c | ||
rt2800usb.h |