1. 03 Jul, 2014 30 commits
  2. 01 Jul, 2014 10 commits
    • Rafał Miłecki's avatar
      b43: add more bcma cores · 15be8e89
      Rafał Miłecki authored
      This adds some cores with 0x2057 radio which will be supported soon as
      well as core 40 that I missed in the earlier firmware patch.
      Signed-off-by: default avatarRafał Miłecki <zajec5@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      15be8e89
    • Rafał Miłecki's avatar
      b43: N-PHY: complete generic support for 0x2057 radio · fe255b40
      Rafał Miłecki authored
      It doesn't include any device (radio revision) specific code yet, so it
      isn't really usable. As the commit says, it's just some generic code.
      Signed-off-by: default avatarRafał Miłecki <zajec5@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      fe255b40
    • Rafał Miłecki's avatar
      b43: N-PHY: fixes for radio 0x2057 · e90cf1c7
      Rafał Miłecki authored
      Enable initialization and update calibration code to fix:
      b43-phy0 ERROR: Radio 0x2057 rcal timeout
      b43-phy0 debug: Radio 0x2057 rccal timeout
      b43-phy0 debug: Radio 0x2057 rccal timeout
      b43-phy0 ERROR: Radio 0x2057 rcal timeout
      Signed-off-by: default avatarRafał Miłecki <zajec5@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      e90cf1c7
    • Andrea Merello's avatar
      rtl818x_pci: fix pci probe returns success when it fails · c1084e02
      Andrea Merello authored
      There are several exit path from the PCI probe function.
      Some of them, that are taken in case of errors, forget to set the "err"
      variable, that is returned by the probe function.
      This can lead to the kernel thinking the probe function succeeds while it
      didn't, and this in turn causes extra calls to the "remove" function.
      
      This patch fix this problem by ensuring "err" variable is assigned to a proper
      non-zero value in each exit path.
      Signed-off-by: default avatarAndrea Merello <andrea.merello@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      c1084e02
    • Andrea Merello's avatar
      rtl818x_pci: handle broken PIO mapping · f4cf6287
      Andrea Merello authored
      All boards supported by this driver could work using PIO or MMIO for accessing
      registers.
      This driver tries to access HW by using MMIO, and, if this fails for somewhat
      reason, the driver tries to fall back to PIO mode.
      
      MMIO-mode is straightforward on all boards.
      PIO-mode is straightforward on rtl8180 only.
      
      On rtl8185 and rtl8187se boards not all registers are directly available in PIO
      mode (they are paged).
      
      On rtl8185 there are two pages and it is known how to switch page.
      PIO mode works, except for only one access to a register out of default page,
      recently added by me in the initialization code with patch:
      rtl818x_pci: Fix rtl8185 excessive IFS after CTS-to-self
      This can be easily fixed to work in both cases (MMIO and PIO).
      
      On rtl8187se, for a number of reasons, there is much more work to do to fix PIO
      access.
      PIO access is currently broken on rtl8187se, and it never worked.
      
      This patch fixes the said register write for rtl8185 and makes the driver to
      fail cleanly if PIO mode is attempted with rtl8187se boards.
      
      While doing this, I converted also a couple of printk(KERN_ERR) to dev_err(), in
      order to make checkpatch happy.
      Signed-off-by: default avatarAndrea Merello <andrea.merello@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      f4cf6287
    • Andrea Merello's avatar
      rtl8180: disable buggy rate fallback mechanism · fe67bcd4
      Andrea Merello authored
      Currently the driver configures mac80211 to provide two rates for each TX frame:
      One initial rate and one alternate fallback rate, each one with its retry count.
      
      HW does not support fully this: rtl8180 doesn't have support for rate scaling at
      all, and rtl8185/rtl8187SE supports it in a way that does not fit with mac80211:
      The HW does automatically fall back to the next lower rate, and only a lower
      limit can be specified, so the HW may TX also on rates in between the two rates
      specified by mac80211.  Furthermore only the total TX retry count can be
      specified for each packet, while the number of TX attempts before scaling rate
      can be configured only globally (not per each packet).
      
      Currently the driver sets the HW auto rate fallback mechanism to quickly scale
      rate after a couple of retries, and it uses the alternate rate requested by
      mac80211 as fallback limit rate (and it does this even wrongly).
      
      The HW indeed will behave differently than what mac80211 mandates, that is
      probably undesirable, and the reported TX retry count may not refer to what
      mac80211 thinks, and this could fool mac80211.
      
      This patch makes the driver to declare to mac80211 to support only one rate
      configuration for each packet, and it does disable the HW auto rate fallback
      mechanism, relying only on SW and letting mac80211 to do all by itself.
      
      This should ensure correct operation and fairness respect to mac80211.
      Indeed here tests with iperf do not show significant performance differences.
      Signed-off-by: default avatarAndrea Merello <andrea.merello@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      fe67bcd4
    • Andrea Merello's avatar
      rtl8180: fix incorrect TX retry. · 81129fce
      Andrea Merello authored
      HW is programmed with wrong retry count value for TX:
      
      Mac80211 passes to driver the number of times the TX should be attempted.
      The HW, instead, wants the number of time the TX should be retried if it fails
      the first time (assuming we have to TX it at least one time).
      
      This patch correct this.
      Signed-off-by: default avatarAndrea Merello <andrea.merello@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      81129fce
    • Andrea Merello's avatar
      rtl818x_pci: add comment pointing to the rtl8187se reference code · f82be7c4
      Andrea Merello authored
      Rtl8187se support has been added to the rtl818x_pci driver by extracting a lot
      of information from a rtl8187se Linux staging driver included in the kernel at
      the time rtl8187se support was added.
      The rtl818x_pci main file has a comment that advertises this.
      
      Recently this staging driver has been removed from the kernel, but I still feel
      it can be useful as "reference" code (in case of bugs, or to implement
      improvements in rtl818x_pci driver).
      
      This one-line patch adds a comment in rtl818x_pci driver to point people
      searching for that "reference code" to the last kernel version still containing
      it (3.14).
      Signed-off-by: default avatarAndrea Merello <andrea.merello@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      f82be7c4
    • Andrea Merello's avatar
      rtl818x_pci: Fix rtl8185 excessive IFS after CTS-to-self · 7df00724
      Andrea Merello authored
      Measuring time between _end_ of CTS-to-self and _end_ of datapacket (with a
      prism54 board and mac80211 hacked to let the MAC timestamp stay untouched in the
      radiotap header) resulted in about 300uS, while the datapacket itself should be
      by far shorter (less than 100uS) and IFS should be SIFS (10uS).
      This measure was confirmed whith a scope: about 250uS IFS has been seen between
      the two packets.
      
      This situation causes the CTS-to-self protection mechanism to work incorrectly
      due to the NAV expiring during, or even before beginning, the packet
      transmission, and it also causes the performances to be anyway reduced due to
      time waste.
      
      This problem has been seen at every packet TXed with CTS-to-self enabled on
      rtl8185 board.
      rtl8187se seems not affected (and rtl8180, being a 802.11b card, does not have
      CTS-to-self mechaninsm).
      
      This patch fixes this by adding a magic register write, making the board wait
      for correct SIFS after CTS-to-self packet.
      Signed-off-by: default avatarAndrea Merello <andrea.merello@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      7df00724
    • Andrea Merello's avatar
      rtl818x_pci: Fix BSSID register written incorrectly · 1f622d76
      Andrea Merello authored
      BSSID register was written with six byte-writes.
      It seems that, similarly to what happens with MAC registers, they needs to be
      written with one 16-bit and one 32-bit writes, otherwise the write does not work.
      
      The byte write didn't work only on my rtl8185, while it worked on rtl8180 and
      rtl8187se, BTW since there are probably a number of different ASIC revisions out
      of there, I let the change to affect all cards.
      It shouldn't hurt anyway.
      Signed-off-by: default avatarAndrea Merello <andrea.merello@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      1f622d76