Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless
Conflicts: drivers/net/wireless/iwlwifi/pcie/drv.c
This commit is contained in:
@@ -1261,7 +1261,7 @@ static void rt2400pci_fill_rxdone(struct queue_entry *entry,
|
||||
*/
|
||||
rxdesc->timestamp = ((u64)rx_high << 32) | rx_low;
|
||||
rxdesc->signal = rt2x00_get_field32(word2, RXD_W2_SIGNAL) & ~0x08;
|
||||
rxdesc->rssi = rt2x00_get_field32(word2, RXD_W3_RSSI) -
|
||||
rxdesc->rssi = rt2x00_get_field32(word3, RXD_W3_RSSI) -
|
||||
entry->queue->rt2x00dev->rssi_offset;
|
||||
rxdesc->size = rt2x00_get_field32(word0, RXD_W0_DATABYTE_COUNT);
|
||||
|
||||
|
@@ -148,6 +148,8 @@ static bool rt2800usb_txstatus_timeout(struct rt2x00_dev *rt2x00dev)
|
||||
return false;
|
||||
}
|
||||
|
||||
#define TXSTATUS_READ_INTERVAL 1000000
|
||||
|
||||
static bool rt2800usb_tx_sta_fifo_read_completed(struct rt2x00_dev *rt2x00dev,
|
||||
int urb_status, u32 tx_status)
|
||||
{
|
||||
@@ -176,8 +178,9 @@ static bool rt2800usb_tx_sta_fifo_read_completed(struct rt2x00_dev *rt2x00dev,
|
||||
queue_work(rt2x00dev->workqueue, &rt2x00dev->txdone_work);
|
||||
|
||||
if (rt2800usb_txstatus_pending(rt2x00dev)) {
|
||||
/* Read register after 250 us */
|
||||
hrtimer_start(&rt2x00dev->txstatus_timer, ktime_set(0, 250000),
|
||||
/* Read register after 1 ms */
|
||||
hrtimer_start(&rt2x00dev->txstatus_timer,
|
||||
ktime_set(0, TXSTATUS_READ_INTERVAL),
|
||||
HRTIMER_MODE_REL);
|
||||
return false;
|
||||
}
|
||||
@@ -202,8 +205,9 @@ static void rt2800usb_async_read_tx_status(struct rt2x00_dev *rt2x00dev)
|
||||
if (test_and_set_bit(TX_STATUS_READING, &rt2x00dev->flags))
|
||||
return;
|
||||
|
||||
/* Read TX_STA_FIFO register after 500 us */
|
||||
hrtimer_start(&rt2x00dev->txstatus_timer, ktime_set(0, 500000),
|
||||
/* Read TX_STA_FIFO register after 2 ms */
|
||||
hrtimer_start(&rt2x00dev->txstatus_timer,
|
||||
ktime_set(0, 2*TXSTATUS_READ_INTERVAL),
|
||||
HRTIMER_MODE_REL);
|
||||
}
|
||||
|
||||
|
@@ -754,6 +754,9 @@ void rt2x00mac_flush(struct ieee80211_hw *hw, u32 queues, bool drop)
|
||||
struct rt2x00_dev *rt2x00dev = hw->priv;
|
||||
struct data_queue *queue;
|
||||
|
||||
if (!test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags))
|
||||
return;
|
||||
|
||||
tx_queue_for_each(rt2x00dev, queue)
|
||||
rt2x00queue_flush_queue(queue, drop);
|
||||
}
|
||||
|
@@ -105,13 +105,11 @@ int rt2x00pci_probe(struct pci_dev *pci_dev, const struct rt2x00_ops *ops)
|
||||
goto exit_release_regions;
|
||||
}
|
||||
|
||||
pci_enable_msi(pci_dev);
|
||||
|
||||
hw = ieee80211_alloc_hw(sizeof(struct rt2x00_dev), ops->hw);
|
||||
if (!hw) {
|
||||
rt2x00_probe_err("Failed to allocate hardware\n");
|
||||
retval = -ENOMEM;
|
||||
goto exit_disable_msi;
|
||||
goto exit_release_regions;
|
||||
}
|
||||
|
||||
pci_set_drvdata(pci_dev, hw);
|
||||
@@ -152,9 +150,6 @@ exit_free_reg:
|
||||
exit_free_device:
|
||||
ieee80211_free_hw(hw);
|
||||
|
||||
exit_disable_msi:
|
||||
pci_disable_msi(pci_dev);
|
||||
|
||||
exit_release_regions:
|
||||
pci_release_regions(pci_dev);
|
||||
|
||||
@@ -179,8 +174,6 @@ void rt2x00pci_remove(struct pci_dev *pci_dev)
|
||||
rt2x00pci_free_reg(rt2x00dev);
|
||||
ieee80211_free_hw(hw);
|
||||
|
||||
pci_disable_msi(pci_dev);
|
||||
|
||||
/*
|
||||
* Free the PCI device data.
|
||||
*/
|
||||
|
Referens i nytt ärende
Block a user