09 Sep, 2009

24 commits

  • Add support for communicating with a Sonics Silicon Backplane through a
    SDIO interface, as found in the Nintendo Wii WLAN daughter card.

    The Nintendo Wii WLAN card includes a custom Broadcom 4318 chip with
    a SDIO host interface.

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

    Albert Herranz
     
  • Signed-off-by: Vasanthakumar Thiagarajan
    Signed-off-by: John W. Linville

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

    Vasanthakumar Thiagarajan
     
  • On Sun, 2009-09-06 at 12:26 -0700, Luis R. Rodriguez wrote:
    > On Sun, Sep 6, 2009 at 10:59 AM, Joe Perches wrote:
    > > On Thu, 2009-09-03 at 15:54 -0700, Luis R. Rodriguez wrote:
    > >> I'm pleased to announce the new home page to Atheros Linux wireless drivers:
    > >> http://wireless.kernel.org/en/users/Drivers/Atheros
    > > Perhaps add this to MAINTAINERS?
    > Fine by me, except ath5k and ath9k also have their own respective page
    > so those can also be added.

    (cc's trimmed and maintainers added)

    Perhaps this instead:

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

    Joe Perches
     
  • This fixes a sparse warning in the hardware-TKIP code:

    drivers/net/wireless/b43/xmit.c:272:18: warning: incorrect type in assignment (different base types)
    drivers/net/wireless/b43/xmit.c:272:18: expected unsigned short [unsigned] [short]
    drivers/net/wireless/b43/xmit.c:272:18: got restricted unsigned short [usertype]

    The code should work correctly with and without this patch applied.

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

    Michael Buesch
     
  • Currently, when QoS-disable is requested, we would leave QoS enabled
    in firmware, but only queue frames on one queue.
    Change that and also tell firmware about disabled QoS, so it
    completely ignores all the QoS parameters. Also don't upload the parameters,
    if QoS is disabled.

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

    Michael Buesch
     
  • The calculated values for the ACK timeout and ACK
    consume time are different then the values as
    used by the Legacy drivers.

    After testing from James Ledwith it appeared that
    the calculated values caused a high amount of TX
    failures, and the values from the Legacy drivers
    were the most optimal to prevent TX failure due to
    excessive retries.

    The symptoms of this problem:
    - Rate control module always falls back to 1Mbs
    - Low throughput when bitrate was fixed

    Possible side-effects (not confirmed but highly likely)
    - Problems with DHCP
    - Broken connections due to lack of probe response

    This should fix at least:
    Kernel bugzilla reports: [13362], [13009], [9273]
    Fedora bugzilla reports: [443203]
    but possible some additional bugs as well.

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

    Ivo van Doorn
     
  • PCMCIA support works well and is not experimental anymore.

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

    Michael Buesch
     
  • apply the conformance test limits (CTL) stored in the eeprom upon
    the values calculated for the tx power (ar->power_*).

    This is based on the implementation in the vendor driver
    (hal/hpmain.c, line 3700 ff.) with one difference:
    If any ctl mode isn't found in the eeprom, we fall back to the "lower",
    legacy modes (5GHT20,11A or 2GHT20,11G,11B). Otus only did 5GHT20->11A.

    Currently CTL are applied for the FCC group only.

    Signed-off-by: Joerg Albert
    Signed-off-by: John W. Linville

    Joerg Albert
     
  • The ar9170 driver needs the defines for conformance test limit groups
    and cannot include regd_common.h

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

    Joerg Albert
     
  • SSB modinit should not succeed, if busattach failed.

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

    Michael Buesch
     
  • This removes the SHM spinlock.
    SHM is protected by wl->mutex.

    Signed-off-by: Michael Buesch
    Tested-by: Larry Finger
    Signed-off-by: John W. Linville

    Michael Buesch
     
  • This removes the PIO RX work. It's not needed anymore, because
    we can sleep in the threaded interrupt handler.

    Signed-off-by: Michael Buesch
    Tested-by: Larry Finger
    Signed-off-by: John W. Linville

    Michael Buesch
     
  • This removes the DMA/PIO queue locks. Locking is handled by
    wl->mutex now.

    Signed-off-by: Michael Buesch
    Tested-by: Larry Finger
    Signed-off-by: John W. Linville

    Michael Buesch
     
  • This removes the TX spinlock and defers TX to a workqueue to allow
    locking wl->mutex instead and to allow sleeping for register accesses.

    Signed-off-by: Michael Buesch
    Tested-by: Larry Finger
    Signed-off-by: John W. Linville

    Michael Buesch
     
  • Use a threaded IRQ handler to allow locking the mutex and
    sleeping while executing an interrupt.
    This removes usage of the irq_lock spinlock, but introduces
    a new hardirq_lock, which is _only_ used for the PCI/SSB lowlevel
    hard-irq handler. Sleeping busses (SDIO) will use mutex instead.

    Signed-off-by: Michael Buesch
    Tested-by: Larry Finger
    Signed-off-by: John W. Linville

    Michael Buesch
     
  • cfg80211 is now *the* wireless configuration API. Lets also
    give a little explanation as to what it is and refer people to
    the wireless wiki for more information.

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

    Luis R. Rodriguez
     
  • This patch ports some code from the vendor driver, which is
    supposed to upload the right calibration values for the
    chosen frequency.

    In theory, this should give a better range and throughput
    for all users with the open, or one-stage firmware.

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

    Christian Lamparter
     
  • CHANNEL_G has to be set for 2GHZ channels since
    IS_CHAN_G() checks for this in channelFlags and not in
    chanmode. To make things messier, ath9k_hw_process_ini()
    checks for CHANNEL_G in chanmode and not in channelFlags.
    The supreme, brain-searing fix is to set the
    flag in both cases.

    Signed-off-by: Sujith
    Signed-off-by: John W. Linville

    Sujith
     
  • BAR frames have to be sent to mac80211 only if the
    current channel is HT. Also, move the macro to
    enum ath9k_rx_filter.

    Signed-off-by: Sujith
    Signed-off-by: John W. Linville

    Sujith
     
  • ath9k ahb requests an IRQ and indicates 'ath9k' claimed it,
    ath9k pci requests an IRQ and indicates 'ath' claims it;
    since 'ath' is another module sync both ahb and pci to claim
    the irq using 'ath9k'.

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

    Luis R. Rodriguez
     
  • We've cleaned up ath_init_device() and its children enough
    to pass meaninful errors back from probe. When this fails
    it means our device could not be initialized and a meaninful
    error will have been passed.

    Do the same for request_irq() and also synchronize the error
    messages while at it.

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

    Luis R. Rodriguez
     
  • The -ENOMEM was never being passed on failure.
    While at it use dev_err() as ahb does upon failure.

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

    Luis R. Rodriguez
     
  • This patch adds the initialisation of some PHY registers
    from the modal_header[] values in the EEPROM
    (see otus/hal/hpmain.c, line 333 ff.)

    Signed-off-by: Joerg Albert
    Acked-by: Christian Lamparter
    Signed-off-by: John W. Linville

    Joerg Albert
     

06 Sep, 2009

6 commits

  • This patch adds a classful dummy scheduler which can be used as root qdisc
    for multiqueue devices and exposes each device queue as a child class.

    This allows to address queues individually and graft them similar to regular
    classes. Additionally it presents an accumulated view of the statistics of
    all real root qdiscs in the dummy root.

    Two new callbacks are added to the qdisc_ops and qdisc_class_ops:

    - cl_ops->select_queue selects the tx queue number for new child classes.

    - qdisc_ops->attach() overrides root qdisc device grafting to attach
    non-shared qdiscs to the queues.

    Signed-off-by: Patrick McHardy
    Signed-off-by: David S. Miller

    David S. Miller
     
  • It will be used in a following patch by the multiqueue qdisc.

    Signed-off-by: Patrick McHardy
    Signed-off-by: David S. Miller

    Patrick McHardy
     
  • Currently the multiqueue integration with the qdisc API suffers from
    a few problems:

    - with multiple queues, all root qdiscs use the same handle. This means
    they can't be exposed to userspace in a backwards compatible fashion.

    - all API operations always refer to queue number 0. Newly created
    qdiscs are automatically shared between all queues, its not possible
    to address individual queues or restore multiqueue behaviour once a
    shared qdisc has been attached.

    - Dumps only contain the root qdisc of queue 0, in case of non-shared
    qdiscs this means the statistics are incomplete.

    This patch reintroduces dev->qdisc, which points to the (single) root qdisc
    from userspace's point of view. Currently it either points to the first
    (non-shared) default qdisc, or a qdisc shared between all queues. The
    following patches will introduce a classful dummy qdisc, which will be used
    as root qdisc and contain the per-queue qdiscs as children.

    Signed-off-by: Patrick McHardy
    Signed-off-by: David S. Miller

    Patrick McHardy
     
  • The class argument to the ->graft(), ->leaf(), ->dump(), ->dump_stats() all
    originate from either ->get() or ->walk() and are always valid.

    Remove unnecessary checks.

    Signed-off-by: Patrick McHardy
    Signed-off-by: David S. Miller

    Patrick McHardy
     
  • Some schedulers don't support creating, changing or deleting classes.
    Make the respective callbacks optionally and consistently return
    -EOPNOTSUPP for unsupported operations, instead of currently either
    -EOPNOTSUPP, -ENOSYS or no error.

    In case of sch_prio and sch_multiq, the removed operations additionally
    checked for an invalid class. This is not necessary since the class
    argument can only orginate from ->get() or in case of ->change is 0
    for creation of new classes, in which case ->change() incorrectly
    returned -ENOENT.

    As a side-effect, this patch fixes a possible (root-only) NULL pointer
    function call in sch_ingress, which didn't implement a so far mandatory
    ->delete() operation.

    Signed-off-by: Patrick McHardy
    Signed-off-by: David S. Miller

    Patrick McHardy
     
  • Some qdiscs don't support attaching filters. Handle this centrally in
    cls_api and return a proper errno code (EOPNOTSUPP) instead of EINVAL.

    Signed-off-by: Patrick McHardy
    Signed-off-by: David S. Miller

    Patrick McHardy
     

05 Sep, 2009

10 commits

  • If the parent qdisc doesn't support classes, use EOPNOTSUPP.
    If the parent class doesn't exist, use ENOENT. Currently EINVAL
    is returned in both cases.

    Additionally check whether grafting is supported and remove a now
    unnecessary graft function from sch_ingress.

    Signed-off-by: Patrick McHardy
    Signed-off-by: David S. Miller

    Patrick McHardy
     
  • CC net/netlink/genetlink.o
    net/netlink/genetlink.c: In function ‘genl_register_mc_group’:
    net/netlink/genetlink.c:139: warning: ‘err’ may be used uninitialized in this function

    From following the code 'err' is initialized, but set it to zero to
    silence the warning.

    Signed-off-by: Brian Haley
    Signed-off-by: David S. Miller

    Brian Haley
     
  • Since our TSN map is capable of holding at most a 4K chunk gap,
    there is no way that during this gap, a stream sequence number
    (unsigned short) can wrap such that the new number is smaller
    then the next expected one. If such a case is encountered,
    this is a protocol violation.

    Signed-off-by: Vlad Yasevich

    Vlad Yasevich
     
  • Use sctp_packet_reset() instead of dup code.

    Signed-off-by: Wei Yongjun
    Signed-off-by: Vlad Yasevich

    Wei Yongjun
     
  • This shrinks the size of struct sctp_association a little.

    Signed-off-by: Wei Yongjun
    Signed-off-by: Vlad Yasevich

    Wei Yongjun
     
  • This patch introduces a new sysctl option to make IPv4 Address Scoping
    configurable .

    In networking environments where DNAT rules in iptables prerouting
    chains convert destination IP's to link-local/private IP addresses,
    SCTP connections fail to establish as the INIT chunk is dropped by the
    kernel due to address scope match failure.
    For example to support overlapping IP addresses (same IP address with
    different vlan id) a Layer-5 application listens on link local IP's,
    and there is a DNAT rule that maps the destination IP to a link local
    IP. Such applications never get the SCTP INIT if the address-scoping
    draft is strictly followed.

    This sysctl configuration allows SCTP to function in such
    unconventional networking environments.

    Sysctl options:
    0 - Disable IPv4 address scoping draft altogether
    1 - Enable IPv4 address scoping (default, current behavior)
    2 - Enable address scoping but allow IPv4 private addresses in init/init-ack
    3 - Enable address scoping but allow IPv4 link local address in init/init-ack

    Signed-off-by: Bhaskar Dutta
    Signed-off-by: Vlad Yasevich

    Bhaskar Dutta
     
  • We used to perform 2 routing lookups for a new transport: one
    just for path mtu detection, and one to actually route to destination
    and path mtu update when sending a packet. There is no point in doing
    both of them, especially since the first one just for path mtu doesn't
    take into account source address and sometimes gives the wrong route,
    causing path mtu updates anyway.

    We now do just the one call to do both route to destination and get
    path mtu updates.

    Signed-off-by: Vlad Yasevich

    Vlad Yasevich
     
  • This shrinks the size of sctp_packet a little.

    Signed-off-by: Vlad Yasevich

    Vlad Yasevich
     
  • We currently track if AUTH has been bundled using the 'auth'
    pointer to the chunk. However, AUTH is disallowed after DATA
    is already in the packet, so we need to instead use the
    'has_auth' field.

    Signed-off-by: Vlad Yasevich

    Vlad Yasevich
     
  • The packet information does not reset after packet transmit, this
    may cause some problems such as following DATA chunk be sent without
    AUTH chunk, even if the authentication of DATA chunk has been
    requested by the peer.

    Signed-off-by: Wei Yongjun
    Signed-off-by: Vlad Yasevich

    Wei Yongjun