30 Jan, 2009

40 commits

  • Add mechanism for managing BIP keys (IGTK) and integrate BIP into the
    TX/RX paths.

    Signed-off-by: Jouni Malinen
    Acked-by: Johannes Berg
    Signed-off-by: John W. Linville

    Jouni Malinen
     
  • This modifies hardware flags for powersave to support three different
    flags:
    * IEEE80211_HW_SUPPORTS_PS - indicates general PS support
    * IEEE80211_HW_PS_NULLFUNC_STACK - indicates nullfunc sending in software
    * IEEE80211_HW_SUPPORTS_DYNAMIC_PS - indicates dynamic PS on the device

    It also adds documentation for all this which explains how to set the
    various flags.

    Additionally, it fixes a few things:
    * a spot where && was used to test flags
    * enable CONF_PS only when associated again

    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     
  • This patch addresses all recent comments from Johannes Berg:

    1st: (reference http://marc.info/?l=linux-wireless&m=123124685019631 )
    >First off: all those should return NETDEV_TX_OK/BUSY.
    >iwl-agn: returns 0 (== NETDEV_TX_OK, but still should be changed)
    >[...]
    >p54: same (some paths)

    2nd:
    > due to your PS patch ("p54: power save management"), please run sparse:
    > make C=2 CF=-D__CHECK_ENDIAN__ M=...
    > +drivers/net/wireless/p54/p54common.c:1753:8: warning: incorrect type in assignment (different base types)
    > +drivers/net/wireless/p54/p54common.c:1769:29: warning: incorrect type in assignment (different base types)
    The cpu_to_le16 ended up in the wrong line... Sorry!

    Signed-off-by: Christian Lamparter
    Signed-off-by: John W. Linville

    Christian Lamparter
     
  • rt2x00 should only register the RFKILL input device when the hardware indicated
    the key was present.

    Signed-off-by: Ivo van Doorn
    Signed-off-by: John W. Linville

    Ivo van Doorn
     
  • The channel_type really doesn't need to be the only member in
    a new structure, so remove the struct. Additionally, remove
    the _CONF_CHANGE_HT flag and use _CONF_CHANGE_CHANNEL when the
    channel type changes, since that's enough of a change to require
    reprogramming the hardware anyway.

    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     
  • Probably something leftover from experimentation with tasklets. Now the
    structure declaration orinoco_rx_data can be relocated to orinoco.c

    Signed-off-by: David Kilroy
    Signed-off-by: John W. Linville

    David Kilroy
     
  • * Sync qcu.c with legacy-hal
    * Add some more comments
    * Set QCU mask to save power (QCU mask controls which QCUs are attached
    to each DCU, we do a 1:1 mapping)

    TODO: Use max QCU from EEPROM, further sync with legacy-hal and sam's
    hal and a few more minor fixes.

    I think after this we are ready to implement WME on the driver
    part. Anyone interested ?

    Signed-Off-by: Nick Kossifidis
    Signed-off-by: John W. Linville

    Nick Kossifidis
     
  • As discussed on linux-wireless rt2x00 does not offer a true RFKILL key,
    for that reason RFKILL support should be entirely removed.

    The key which is attached to the hardware should be treated as normal
    input device instead. Implement input_poll_dev support to poll the device
    frequently. When the key status has changed report it as a SW event.

    Signed-off-by: Ivo van Doorn
    Signed-off-by: John W. Linville

    Ivo van Doorn
     
  • Signed-off-by: Vasanthakumar Thiagarajan
    Signed-off-by: John W. Linville

    Vasanthakumar Thiagarajan
     
  • Sanity checks against AR5K_NUM_GPIO were all broken. This doesn't
    currently cause any problems since we only use the first four gpios.

    Changes-licensed-under: ISC

    Reported-by: Andreas Mohr
    Signed-off-by: Bob Copeland
    Signed-off-by: John W. Linville

    Bob Copeland
     
  • Add vendor ID for Foxconn and use it to set the ath5k LED gpio and
    polarity for Acer branded laptops.

    base.c:
    Changes-licensed-under: 3-Clause-BSD

    Reported-by: Maxim Levitsky
    Tested-by: Maxim Levitsky
    Tested-by: Andreas Mohr
    Signed-off-by: Bob Copeland
    Signed-off-by: John W. Linville

    Bob Copeland
     
  • This patch implements dynamic power save feature for p54.

    Signed-off-by: Christian Lamparter
    Signed-off-by: John W. Linville

    Christian Lamparter
     
  • According to STMicroelectronics' LMAC documentation, the P54_FILTER_TYPE_TRANSPARENT flag
    "configures the receive frame filter to pass all frames without regard to type and address matching."

    Signed-off-by: Christian Lamparter
    Signed-off-by: John W. Linville

    Christian Lamparter
     
  • Respect all documented bits in the eeprom about the device diversity features.

    Signed-off-by: Christian Lamparter
    Signed-off-by: John W. Linville

    Christian Lamparter
     
  • Signed-off-by: Gabor Juhos
    Signed-off-by: John W. Linville

    Gabor Juhos
     
  • The set_key callback now seems rather odd, passing a MAC address
    instead of a station struct, and a local address instead of a
    vif struct. Change that.

    Signed-off-by: Johannes Berg
    Acked-by: Bob Copeland [ath5k]
    Acked-by: Ivo van Doorn [rt2x00]
    Acked-by: Christian Lamparter [p54]
    Tested-by: Kalle Valo [iwl3945]
    Tested-by: Samuel Ortiz [iwl3945]
    Signed-off-by: John W. Linville

    Johannes Berg
     
  • The scheduled date for the removal of old fw support was in July 2008.
    However, we're not going to remove the support unless it causes a major
    headache. So change the schedule from "July 2008" to "when it causes headaches".

    Signed-off-by: Michael Buesch
    Signed-off-by: John W. Linville

    Michael Buesch
     
  • This patch adds a sub-routine that parses the default country eeprom entry
    and forwards the obtained Alpha2 identifier to the regulatory sub-system.

    Note: I dropped the p54 specific regdomainalpha2 conversion code for now.
    But it will be added as soon as there's the common library function is ready.

    Signed-off-by: Christian Lamparter
    Signed-off-by: John W. Linville

    Christian Lamparter
     
  • This patch will prevent anyone to upload a firmware which was not designed for his device.

    There's still a catch:
    There is no easy way to detect if a firmware is for PCI or for USB (1st Gen),
    because they all share the same LM86 identifier.

    Signed-off-by: Christian Lamparter
    Signed-off-by: John W. Linville

    Christian Lamparter
     
  • Sometimes on unload or reboot the 3887 USB devices become stuck.

    kernel: usbcore: registered new interface driver p54usb
    kernel: usb 2-10: (p54usb) reset failed! (-110)
    kernel: p54usb: probe of 2-10:1.0 failed with error -110
    [...]

    and a physical unplug and replug was necessary.
    However we should be able to do this in software as well,
    without any user interaction.

    Signed-off-by: Christian Lamparter
    Signed-off-by: John W. Linville

    Christian Lamparter
     
  • This adds detection code for the LP-PHY and SPROM
    extraction code for version 8, which is needed by the LP-PHY and
    newer N-PHY.

    Signed-off-by: Michael Buesch
    Signed-off-by: John W. Linville

    Michael Buesch
     
  • Does nothing unless you enable the hidden N PHY config.

    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     
  • Signed-off-by: Senthil Balasubramanian
    Signed-off-by: John W. Linville

    Senthil Balasubramanian
     
  • This is used on my macbook. N PHY, obviously nothing works
    yet, but we can detect the chip with this patch.

    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     
  • Fix sparse warnings:

    drivers/net/wireless/ath9k/hw.c:1850:17: warning: symbol 'tmp' shadows an earlier one
    drivers/net/wireless/ath9k/hw.c:1713:6: originally declared here
    drivers/net/wireless/ath9k/hw.c:2051:17: warning: symbol 'tmp' shadows an earlier one
    drivers/net/wireless/ath9k/hw.c:1961:6: originally declared here

    drivers/net/wireless/ath9k/eeprom.c:195:6: warning: symbol 'ath9k_fill_eeprom' was not declared. Should it be static?
    drivers/net/wireless/ath9k/eeprom.c:463:5: warning: symbol 'ath9k_check_eeprom' was not declared. Should it be static?
    drivers/net/wireless/ath9k/eeprom.c:1219:6: warning: symbol 'ath9k_hw_set_def_power_per_rate_table' was not declared. Should it be static?
    drivers/net/wireless/ath9k/eeprom.c:1510:6: warning: symbol 'ath9k_hw_set_4k_power_per_rate_table' was not declared. Should it be static?
    drivers/net/wireless/ath9k/eeprom.c:2007:5: warning: symbol 'ath9k_set_txpower' was not declared. Should it be static?
    drivers/net/wireless/ath9k/eeprom.c:2106:6: warning: symbol 'ath9k_set_addac' was not declared. Should it be static?
    drivers/net/wireless/ath9k/eeprom.c:2543:6: warning: symbol 'ath9k_eeprom_set_board_values' was not declared. Should it be static?
    drivers/net/wireless/ath9k/eeprom.c:2606:5: warning: symbol 'ath9k_get_eeprom_antenna_cfg' was not declared. Should it be static?
    drivers/net/wireless/ath9k/eeprom.c:2622:4: warning: symbol 'ath9k_hw_get_4k_num_ant_config' was not declared. Should it be static?
    drivers/net/wireless/ath9k/eeprom.c:2628:4: warning: symbol 'ath9k_hw_get_def_num_ant_config' was not declared. Should it be static?
    drivers/net/wireless/ath9k/eeprom.c:2647:4: warning: symbol 'ath9k_get_num_ant_config' was not declared. Should it be static?
    drivers/net/wireless/ath9k/eeprom.c:2790:5: warning: symbol 'ath9k_get_eeprom' was not declared. Should it be static?

    drivers/net/wireless/ath9k/calib.c:962:30: warning: symbol 'iq_cal_multi_sample' was not declared. Should it be static?
    drivers/net/wireless/ath9k/calib.c:969:30: warning: symbol 'iq_cal_single_sample' was not declared. Should it be static?
    drivers/net/wireless/ath9k/calib.c:976:30: warning: symbol 'adc_gain_cal_multi_sample' was not declared. Should it be static?
    drivers/net/wireless/ath9k/calib.c:983:30: warning: symbol 'adc_gain_cal_single_sample' was not declared. Should it be static?
    drivers/net/wireless/ath9k/calib.c:990:30: warning: symbol 'adc_dc_cal_multi_sample' was not declared. Should it be static?
    drivers/net/wireless/ath9k/calib.c:997:30: warning: symbol 'adc_dc_cal_single_sample' was not declared. Should it be static?
    drivers/net/wireless/ath9k/calib.c:1004:30: warning: symbol 'adc_init_dc_cal' was not declared. Should it be static?

    Signed-off-by: Luis R. Rodriguez
    Signed-off-by: John W. Linville

    Luis R. Rodriguez
     
  • When we try to change the channel in ath9k its because
    either the configuration indicates we *have* changed
    channels or HT configuration has changed. In both cases
    we want to do a reset. Either way mac80211 will inform us
    when we want to actually change the channel so trust those
    calls.

    Although in the patch it may seem as I am doing more code
    changes I am not, all I am doing is removing the initial
    branch conditional and shifting the code to the left.

    Signed-off-by: Luis R. Rodriguez
    Signed-off-by: John W. Linville

    Luis R. Rodriguez
     
  • The only check we care about in ath9k_hw_check_chan() is
    the internal regulatory check so use that.

    Signed-off-by: Luis R. Rodriguez
    Signed-off-by: John W. Linville

    Luis R. Rodriguez
     
  • The only left users are for timing for ACK timeout, slotime and
    CTS timeout. We currently use an array CLOCK_RATE to keep
    these values per mode and since as only will use A and G
    we can depend on the band to get the appropriate values.

    We note that we should be using a different clock rate value
    for CCK, we can do this in separate patch, currently this is
    being disregarded and should only affect when we want to
    change the default ACK/CTS timeout or slot time and stuck
    with using using 802.11b.

    Signed-off-by: Luis R. Rodriguez
    Signed-off-by: John W. Linville

    Luis R. Rodriguez
     
  • The NOISE_FLOOR array we have is mode specific, and the only
    possible indexed values are A, B and G. The mode routine only
    can return G or A, so this is band specific. Then since the
    values for A and G (5ghz or 2ghz) are the same (-96) we simply
    remove the array and use a static value.

    If we later determine we want to use special values for
    HT configurations we can use the new mac80211 conf_is_ht*()
    helpers.

    Signed-off-by: Luis R. Rodriguez
    Signed-off-by: John W. Linville

    Luis R. Rodriguez
     
  • The CCK and OFDM ANI error triggers are not mode specific but rather
    band specific so just make use of the already available band from
    ieee80211_conf.

    Signed-off-by: Luis R. Rodriguez
    Signed-off-by: John W. Linville

    Luis R. Rodriguez
     
  • Signed-off-by: Luis R. Rodriguez
    Acked-by: Johannes Berg
    Signed-off-by: John W. Linville

    Luis R. Rodriguez
     
  • Use shiny new conf_is_ht*() helpers, we can later remove ht.enabled if
    desired.

    Signed-off-by: Luis R. Rodriguez
    Signed-off-by: John W. Linville

    Luis R. Rodriguez
     
  • ath9k_hw_iscal_supported() just needs to be aware of your band
    and if HT20 is being used so lets abandon our internal channel,
    HT appended values and internal mode values and use ieee80211_conf
    which already carries this information. This works as calibration
    is being done for the currently configured channel.

    Signed-off-by: Luis R. Rodriguez
    Signed-off-by: John W. Linville

    Luis R. Rodriguez
     
  • Lets make the request to get the current noise floor threshold
    from the EEPROM band specific as it is band specific, not mode
    specific.

    This also adds a backpointer on the private channel structure
    back to the ieee80211_channel structure as this is now needed during
    ath9k_hw_getnf().

    Signed-off-by: Luis R. Rodriguez
    Signed-off-by: John W. Linville

    Luis R. Rodriguez
     
  • HW reset calls pass the same variables or structs
    which we can obtain easily from ah. Although this also applies
    during channel changes as we will keep around the ath9k_channel
    passed as an argument for now.

    We now also now propagate the hw reset errors down.

    Signed-off-by: Luis R. Rodriguez
    Signed-off-by: John W. Linville

    Luis R. Rodriguez
     
  • ath_setcurmode() is a bit misleading, all we are doing is
    caching the rate for the corresponding configuration we
    are using.

    Signed-off-by: Luis R. Rodriguez
    Signed-off-by: John W. Linville

    Luis R. Rodriguez
     
  • No need to cache when we want to use 2Mbit/s for all protection
    frames for 802.11g as we can determine that dynamically on
    ath_buf_set_rate() itself.

    Signed-off-by: Luis R. Rodriguez
    Signed-off-by: John W. Linville

    Luis R. Rodriguez
     
  • We don't need to use our own mode for setting the
    the routine tries to do, in fact lets remove ath_chan2mode() now as
    we can simply use the currently set band and the HT configuration
    provided by mac80211 through the ieee80211_conf. This works on
    changing channels as well as the internal ath9k_channel we use is
    based on the ieee80211_channel in the config.

    Signed-off-by: Luis R. Rodriguez
    Signed-off-by: John W. Linville

    Luis R. Rodriguez
     
  • This patch uses rx queue alloc free and reset function from iwlcore.
    This should fix the regression reported by Kalle Valo.

    Signed-off-by: Tomas Winkler
    Signed-off-by: Zhu Yi
    Signed-off-by: John W. Linville

    Winkler, Tomas
     
  • The patch replaces iwl_tx_cmd with iwl3945_tx_cmd to complete
    transitions introduced by "iwlwifi: use iwl_cmd instead
    of iwl3945_cmd"

    Signed-off-by: Tomas Winkler
    Signed-off-by: Zhu Yi
    Signed-off-by: John W. Linville

    Winkler, Tomas