1. 13 6月, 2013 1 次提交
  2. 23 5月, 2013 1 次提交
  3. 23 4月, 2013 1 次提交
    • J
      rt2x00: Use more current logging styles, shrink object size · ec9c4989
      Joe Perches 提交于
      Reduce object space ~2% using more current logging styles.
      
      Neaten and simplify logging macros.
      Use wiphy_<level> where appropriate.
      Coalesce formats.
      
      Convert ERROR/WARNING/INFO macros to rt2x00_<level>
      Convert EEPROM to rt2x00_eeprom_dbg
      Convert PROBE_ERROR to rt2x00_probe_err
      Convert DEBUG to rt2x00_dbg
      Convert EEPROM to rt2x00_eeprom_dbg
      
      $ size drivers/net/wireless/rt2x00/built-in.o*
         text	   data	    bss	    dec	    hex	filename
       245639	  71696	  69584	 386919	  5e767	drivers/net/wireless/rt2x00/built-in.o.new
       240609	  70096	  68944	 379649	  5cb01	drivers/net/wireless/rt2x00/built-in.o.new.nodyndbg
       240609	  70096	  68944	 379649	  5cb01	drivers/net/wireless/rt2x00/built-in.o.new.no_rt2x00_debug
       249198	  70096	  70352	 389646	  5f20e	drivers/net/wireless/rt2x00/built-in.o.old
       249198	  70096	  70352	 389646	  5f20e	drivers/net/wireless/rt2x00/built-in.o.old.nodyndbg
       244222	  70096	  69712	 384030	  5dc1e	drivers/net/wireless/rt2x00/built-in.o.old.no_rt2x00_debug
      Signed-off-by: NJoe Perches <joe@perches.com>
      Acked-by: NGertjan van Wingerde <gwingerde@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      ec9c4989
  4. 11 4月, 2013 1 次提交
  5. 04 4月, 2013 1 次提交
    • G
      rt2x00: rt2x00pci: fix build error on Ralink RT3x5x SoCs · 69a2bac8
      Gabor Juhos 提交于
      The rt2800pci driver supports the built-in wireless
      MAC of the Ralink RT3x5x SoCs. However building the
      driver for these SoCs leads to the following error:
      
          LD      init/built-in.o
        drivers/built-in.o: In function `rt2800pci_rxdone_tasklet':
        <...>/drivers/net/wireless/rt2x00/rt2800pci.c:1012: undefined reference to `rt2x00pci_rxdone'
        drivers/built-in.o:(.rodata+0x4780): undefined reference to `rt2x00pci_initialize'
        drivers/built-in.o:(.rodata+0x4784): undefined reference to `rt2x00pci_uninitialize'
        drivers/built-in.o:(.rodata+0x47bc): undefined reference to `rt2x00pci_flush_queue'
        drivers/built-in.o:(.rodata+0x4818): undefined reference to `rt2x00pci_regbusy_read'
        make[5]: *** [vmlinux] Error 1
      
      The missing functions are provided by the rt2x00pci
      module. This module is only selected by the rt2800pci
      driver if PCI support is enabled in the kernel, because
      some parts of the rt2x00pci code depends on PCI support.
      
      PCI support is not available on the RT3x5x SoCs because
      those have no PCI host controller at all.
      
      Move the non PCI specific code from rt2x00pci into a
      separate module. This makes it possible to use that
      code even if PCI support is disabled. The affected
      functions are used by all of the rt2x00 PCI drivers
      so select the new module for those drivers.
      Signed-off-by: NGabor Juhos <juhosg@openwrt.org>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      69a2bac8
  6. 26 3月, 2013 1 次提交
  7. 07 12月, 2012 1 次提交
  8. 26 9月, 2012 1 次提交
  9. 08 9月, 2012 1 次提交
  10. 06 9月, 2012 1 次提交
  11. 07 8月, 2012 1 次提交
  12. 17 7月, 2012 1 次提交
  13. 17 4月, 2012 1 次提交
    • A
      net/wireless: use module_pci_driver · 5b0a3b7e
      Axel Lin 提交于
      This patch converts the drivers in drivers/net/wireless/* to use
      module_pci_driver() macro which makes the code smaller and a bit simpler.
      Signed-off-by: NAxel Lin <axel.lin@gmail.com>
      Cc: "John W. Linville" <linville@tuxdriver.com>
      Cc: Jiri Slaby <jirislaby@gmail.com>
      Cc: Nick Kossifidis <mickflemm@gmail.com>
      Cc: "Luis R. Rodriguez" <mcgrof@qca.qualcomm.com>
      Cc: Simon Kelley <simon@thekelleys.org.uk>
      Cc: Jouni Malinen <j@w1.fi>
      Cc: Lennert Buytenhek <buytenh@wantstofly.org>
      Cc: Christian Lamparter <chunkeey@googlemail.com>
      Cc: Ivo van Doorn <IvDoorn@gmail.com>
      Cc: Larry Finger <Larry.Finger@lwfinger.net>
      Cc: linux-wireless@vger.kernel.org
      Acked-by: NLennert Buytenhek <buytenh@wantstofly.org>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      5b0a3b7e
  14. 20 12月, 2011 1 次提交
  15. 23 11月, 2011 1 次提交
  16. 18 11月, 2011 1 次提交
  17. 04 10月, 2011 1 次提交
    • E
      mac80211: pass vif param to conf_tx() callback · 8a3a3c85
      Eliad Peller 提交于
      tx params should be configured per interface.
      add ieee80211_vif param to the conf_tx callback,
      and change all the drivers that use this callback.
      
      The following spatch was used:
      @rule1@
      struct ieee80211_ops ops;
      identifier conf_tx_op;
      @@
      	ops.conf_tx = conf_tx_op;
      
      @rule2@
      identifier rule1.conf_tx_op;
      identifier hw, queue, params;
      @@
      	conf_tx_op (
      -		struct ieee80211_hw *hw,
      +		struct ieee80211_hw *hw, struct ieee80211_vif *vif,
      		u16 queue,
      		const struct ieee80211_tx_queue_params *params) {...}
      Signed-off-by: NEliad Peller <eliad@wizery.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      8a3a3c85
  18. 28 9月, 2011 1 次提交
  19. 10 8月, 2011 1 次提交
    • H
      rt2x00: Fix PCI interrupt processing race on SMP systems · abc11994
      Helmut Schaa 提交于
      When toggle_irq is called for PCI devices to disable device interrupts
      it used tasklet_disable to wait for a possibly running tasklet to finish.
      However, on SMP systems the tasklet might still be scheduled on another CPU.
      Instead, use tasklet_kill to ensure that all scheduled tasklets are finished
      before returning from toggle_irq.
      
      Furthermore, it was possible that a tasklet reenabled its interrupt even
      though interrupts have been disabled already. Fix this by checking the
      DEVICE_STATE_ENABLED_RADIO flag before reenabling single interrupts
      during tasklet processing.
      
      While at it also enable/kill the TBTT and PRETBTT tasklets in the
      toggle_irq callback and only use tasklet_kill in stop_queue to wait
      for a currently scheduled beacon update before returning.
      Signed-off-by: NHelmut Schaa <helmut.schaa@googlemail.com>
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      abc11994
  20. 08 7月, 2011 1 次提交
  21. 20 4月, 2011 6 次提交
    • I
      rt2x00: Implement get_antenna and set_antenna callback functions · 0ed7b3c0
      Ivo van Doorn 提交于
      Implement the get_antenna and set_antenna callback functions, which will
      allow clients to control the antenna for all non-11n hardware (Antenna handling
      in rt2800 is still a bit magical, so we can't use the set_antenna for those drivers
      yet).
      
      To best support the set_antenna callback some modifications are needed in the
      diversity handling. We should never look at the default antenna settings to determine
      if software diversity is enabled. Instead we should set the diversity flag when
      possible, which will allow the link_tuner to automatically pick up the tuning.
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Acked-by: NGertjan van Wingerde <gwingerde@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      0ed7b3c0
    • I
      rt2x00: Implement get_ringparam callback function · e7dee444
      Ivo van Doorn 提交于
      With the get_ringparam callback function we can export ring parameters
      to ethtool through the mac80211 interface.
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Acked-by: NGertjan van Wingerde <gwingerde@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      e7dee444
    • G
      rt2x00: Allow dynamic addition of PCI/USB IDs. · e01ae27f
      Gertjan van Wingerde 提交于
      Both USB and PCI drivers allow a system administrator to dynamically add
      USB/PCI IDs to the device table that a driver supports via the
      /sys/bus/{usb,pci,pci_express}/drivers/<driver-name>/new_id files.
      
      However, for the rt2x00 drivers using this method currently crashes the
      system with a NULL pointer failure.
      
      This is due to the set-up of rt2x00 where the probe functions require a
      rt2x00_ops structure in the driver_info field of the probed device. As
      this field is empty for the dynamically added devices this fails for
      these devices.
      
      Fix this by introducing driver-specific probe wrappers that do nothing
      but calling the bus-specific probe functions with the rt2x00_ops structure
      as an argument, rather than depending on the driver_info field.
      Signed-off-by: NGertjan van Wingerde <gwingerde@gmail.com>
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      e01ae27f
    • H
      rt2x00: Always inline rt2x00pci_enable_interrupt · 7a5a681a
      Helmut Schaa 提交于
      This allows the compiler to perform the necessary bitfield calculations
      during compile time instead of run time and thus reduces the number of
      instructions to run during each tasklet invocation. This should improve
      performance in the RX hotpath.
      
      This comes at the cost of a slight increase in the module size (for
      example rt2800pci):
      
      Before:
         text    data     bss     dec     hex filename
        14133     832       4   14969    3a79 drivers/net/wireless/rt2x00/rt2800pci.ko
      
      After:
         text    data     bss     dec     hex filename
        14149     832       4   14985    3a89 drivers/net/wireless/rt2x00/rt2800pci.ko
      Signed-off-by: NHelmut Schaa <helmut.schaa@googlemail.com>
      Acked-by: NGertjan van Wingerde <gwingerde@gmail.com>
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      7a5a681a
    • I
      rt2x00: Decrease association time for USB devices · 152a5992
      Ivo van Doorn 提交于
      When powersaving is enabled, assocaition times are very high
      (for WPA2 networks, the time can easily be around the 3 seconds).
      
      This is caused, because the flushing of the queues takes
      too much time. Without the flushing callback mac80211 assumes
      a timeout of 100ms while scanning. Limit all flush waiting
      loops to the same maximum.
      
      We can apply this maximum by passing the drop status to the
      driver, which makes sure the driver performs extra actions
      during the waiting for the queue to become empty.
      
      After these changes, association times fall within the
      healthy range of ~0.6 seconds with powersaving enabled.
      The difference between association time between powersaving
      enabled and disabled is now only ~0.1 second (which can also
      be due to the measuring method).
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Acked-by: NGertjan van Wingerde <gwingerde@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      152a5992
    • I
      rt2x00: Split rt2x00dev->flags · 7dab73b3
      Ivo van Doorn 提交于
      The number of flags defined for the rt2x00dev->flags field,
      has been growing over the years. Currently we are approaching
      the maximum number of bits which are available in the field.
      
      A secondary problem, is that one part of the field are initialized only
      during boot, because the driver requirements are initialized or device
      requirements are loaded from the EEPROM. In both cases, the flags are
      fixed and will not change during device operation. The other flags are
      the device state, and will change frequently. So far this resulted in the fact
      that for some flags, the atomic bit accessors are used, while for the others
      the non-atomic variants are used.
      
      By splitting the flags up into a "flags" and "cap_flags" we can put all flags
      which are fixed inside "cap_flags". This field can then be read non-atomically.
      In the "flags" field we keep the device state, which is going to be read atomically.
      
      This adds more room for more flags in the future, and sanitizes the field access methods.
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Acked-by: NHelmut Schaa <helmut.schaa@googlemail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      7dab73b3
  22. 05 4月, 2011 1 次提交
  23. 05 3月, 2011 4 次提交
  24. 15 2月, 2011 1 次提交
  25. 01 2月, 2011 4 次提交
    • G
      rt2x00: Fix FIXME comments in rt61pci and rt73usb on Michael MIC. · a0aff623
      Gertjan van Wingerde 提交于
      Both rt61pci and rt73usb check the Michael MIC in hardware and strip the
      Michael MIC from received frames. This is perfectly allowed by mac80211 as
      long as this is properly reported to mac80211.
      Both these drivers reported the Michael MIC handling properly to mac80211, but
      still contained a FIXME comment on this, which is not needed to be handled, since
      mac80211 doesn't really need the Michael MIC in this case.
      Signed-off-by: NGertjan van Wingerde <gwingerde@gmail.com>
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      a0aff623
    • H
      rt2x00: Remove STATE_RADIO_IRQ_OFF_ISR and STATE_RADIO_IRQ_ON_ISR · b550911a
      Helmut Schaa 提交于
      Remove STATE_RADIO_IRQ_OFF_ISR and STATE_RADIO_IRQ_ON_ISR as they are
      not used anymore.
      Signed-off-by: NHelmut Schaa <helmut.schaa@googlemail.com>
      Acked-by: NGertjan van Wingerde <gwingerde@gmail.com>
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      b550911a
    • H
      rt2x00: Convert rt61pci to use tasklets · 5846a550
      Helmut Schaa 提交于
      Fix interrupt processing on slow machines by using individual tasklets
      for each different device interrupt. This ensures that while a RX or TX
      status tasklet is scheduled only the according device interrupt is
      masked and other interrupts such as TBTT can still be processed.
      
      Also, this allows us to use tasklet_hi_schedule for TBTT processing
      which is required to not send out beacons with a wrong DTIM count (due
      to delayed periodic beacon updates). Furthermore, this improves the
      latency between the TBTT and sending out buffered multi- and broadcast
      traffic.
      
      As a nice bonus, the interrupt handling overhead should be much lower.
      
      Compile-tested only.
      Signed-off-by: NHelmut Schaa <helmut.schaa@googlemail.com>
      Acked-by: NGertjan van Wingerde <gwingerde@gmail.com>
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      5846a550
    • H
      rt2x00: Refactor beacon code to make use of start- and stop_queue · 69cf36a4
      Helmut Schaa 提交于
      This patch allows to dynamically remove beaconing interfaces without
      shutting beaconing down on all interfaces.
      
      The only place to start and stop beaconing are now the start- and
      stop_queue callbacks. Hence, we can remove some register writes during
      interface bring up (config_intf) and only write the correct sync mode
      to the register there.
      
      When multiple beaconing interfaces are present we should enable
      beaconing as soon as mac80211 enables beaconing on at least one of
      them. The beacon queue gets stopped when the last beaconing
      interface was stopped by mac80211. Therefore, introduce another
      interface counter to keep track ot the number of enabled beaconing
      interfaces and start or stop the beacon queue accordingly.
      
      To allow single interfaces to stop beaconing, add a new driver
      callback clear_beacon to clear a single interface's beacon without
      affecting the other interfaces. Don't overload the clear_entry callback
      for clearing beacons as that would introduce additional overhead
      (check for each TX queue) into the clear_entry callback which is used
      on the drivers TX/RX hotpaths.
      
      Furthermore, the write beacon callback doesn't need to enable beaconing
      anymore but since beaconing should be disabled while a new beacon is
      written or cleared we still disable beacon generation and enable it
      afterwards again in the driver specific callbacks. However, beacon
      related interrupts should not be disabled/enabled here, that's solely
      done from the start- and stop queue callbacks. It would be nice to stop
      the beacon queue just before the beacon update and enable it afterwards
      in rt2x00queue itself instead of the current implementation that relies
      on the driver doing the right thing. However, since start- and
      stop_queue are mutex protected we cannot use them for atomic beacon
      updates.
      Signed-off-by: NHelmut Schaa <helmut.schaa@googlemail.com>
      Acked-by: NGertjan van Wingerde <gwingerde@gmail.com>
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      69cf36a4
  26. 14 12月, 2010 4 次提交