diff options
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt2500pci.c')
| -rw-r--r-- | drivers/net/wireless/rt2x00/rt2500pci.c | 34 | 
1 files changed, 23 insertions, 11 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2500pci.c b/drivers/net/wireless/rt2x00/rt2500pci.c index 58277878889..d27d7b8ba3b 100644 --- a/drivers/net/wireless/rt2x00/rt2500pci.c +++ b/drivers/net/wireless/rt2x00/rt2500pci.c @@ -1446,8 +1446,8 @@ static void rt2500pci_txdone(struct rt2x00_dev *rt2x00dev,  	}  } -static void rt2500pci_enable_interrupt(struct rt2x00_dev *rt2x00dev, -				       struct rt2x00_field32 irq_field) +static inline void rt2500pci_enable_interrupt(struct rt2x00_dev *rt2x00dev, +					      struct rt2x00_field32 irq_field)  {  	u32 reg; @@ -1500,8 +1500,10 @@ static void rt2500pci_tbtt_tasklet(unsigned long data)  static void rt2500pci_rxdone_tasklet(unsigned long data)  {  	struct rt2x00_dev *rt2x00dev = (struct rt2x00_dev *)data; -	rt2x00pci_rxdone(rt2x00dev); -	rt2500pci_enable_interrupt(rt2x00dev, CSR8_RXDONE); +	if (rt2x00pci_rxdone(rt2x00dev)) +		tasklet_schedule(&rt2x00dev->rxdone_tasklet); +	else +		rt2500pci_enable_interrupt(rt2x00dev, CSR8_RXDONE);  }  static irqreturn_t rt2500pci_interrupt(int irq, void *dev_instance) @@ -1685,14 +1687,14 @@ static int rt2500pci_init_eeprom(struct rt2x00_dev *rt2x00dev)  	 * Detect if this device has an hardware controlled radio.  	 */  	if (rt2x00_get_field16(eeprom, EEPROM_ANTENNA_HARDWARE_RADIO)) -		__set_bit(CONFIG_SUPPORT_HW_BUTTON, &rt2x00dev->flags); +		__set_bit(CAPABILITY_HW_BUTTON, &rt2x00dev->cap_flags);  	/*  	 * Check if the BBP tuning should be enabled.  	 */  	rt2x00_eeprom_read(rt2x00dev, EEPROM_NIC, &eeprom);  	if (!rt2x00_get_field16(eeprom, EEPROM_NIC_DYN_BBP_TUNE)) -		__set_bit(DRIVER_SUPPORT_LINK_TUNING, &rt2x00dev->flags); +		__set_bit(CAPABILITY_LINK_TUNING, &rt2x00dev->cap_flags);  	/*  	 * Read the RSSI <-> dBm offset information. @@ -1956,9 +1958,9 @@ static int rt2500pci_probe_hw(struct rt2x00_dev *rt2x00dev)  	/*  	 * This device requires the atim queue and DMA-mapped skbs.  	 */ -	__set_bit(DRIVER_REQUIRE_ATIM_QUEUE, &rt2x00dev->flags); -	__set_bit(DRIVER_REQUIRE_DMA, &rt2x00dev->flags); -	__set_bit(DRIVER_REQUIRE_SW_SEQNO, &rt2x00dev->flags); +	__set_bit(REQUIRE_ATIM_QUEUE, &rt2x00dev->cap_flags); +	__set_bit(REQUIRE_DMA, &rt2x00dev->cap_flags); +	__set_bit(REQUIRE_SW_SEQNO, &rt2x00dev->cap_flags);  	/*  	 * Set the rssi offset. @@ -2011,6 +2013,9 @@ static const struct ieee80211_ops rt2500pci_mac80211_ops = {  	.tx_last_beacon		= rt2500pci_tx_last_beacon,  	.rfkill_poll		= rt2x00mac_rfkill_poll,  	.flush			= rt2x00mac_flush, +	.set_antenna		= rt2x00mac_set_antenna, +	.get_antenna		= rt2x00mac_get_antenna, +	.get_ringparam		= rt2x00mac_get_ringparam,  };  static const struct rt2x00lib_ops rt2500pci_rt2x00_ops = { @@ -2031,6 +2036,7 @@ static const struct rt2x00lib_ops rt2500pci_rt2x00_ops = {  	.start_queue		= rt2500pci_start_queue,  	.kick_queue		= rt2500pci_kick_queue,  	.stop_queue		= rt2500pci_stop_queue, +	.flush_queue		= rt2x00pci_flush_queue,  	.write_tx_desc		= rt2500pci_write_tx_desc,  	.write_beacon		= rt2500pci_write_beacon,  	.fill_rxdone		= rt2500pci_fill_rxdone, @@ -2092,7 +2098,7 @@ static const struct rt2x00_ops rt2500pci_ops = {   * RT2500pci module information.   */  static DEFINE_PCI_DEVICE_TABLE(rt2500pci_device_table) = { -	{ PCI_DEVICE(0x1814, 0x0201), PCI_DEVICE_DATA(&rt2500pci_ops) }, +	{ PCI_DEVICE(0x1814, 0x0201) },  	{ 0, }  }; @@ -2103,10 +2109,16 @@ MODULE_SUPPORTED_DEVICE("Ralink RT2560 PCI & PCMCIA chipset based cards");  MODULE_DEVICE_TABLE(pci, rt2500pci_device_table);  MODULE_LICENSE("GPL"); +static int rt2500pci_probe(struct pci_dev *pci_dev, +			   const struct pci_device_id *id) +{ +	return rt2x00pci_probe(pci_dev, &rt2500pci_ops); +} +  static struct pci_driver rt2500pci_driver = {  	.name		= KBUILD_MODNAME,  	.id_table	= rt2500pci_device_table, -	.probe		= rt2x00pci_probe, +	.probe		= rt2500pci_probe,  	.remove		= __devexit_p(rt2x00pci_remove),  	.suspend	= rt2x00pci_suspend,  	.resume		= rt2x00pci_resume,  |