04 Feb, 2011

4 commits

  • Currently cfg80211 only configures the PSM state to the driver upon creation
    of a new virtual interface, but not after interface type change. The mac80211
    on the other hand reinitializes its sdata structure every time the interface
    type is changed, losing the PSM configuration.

    Hence, if the interface type is changed to, say, ad-hoc and then back to
    managed, "iw wlan0 get power_save" will claim that PSM is enabled, when in
    fact on mac80211 level it is not.

    Fix this in cfg80211 by configuring the PSM state to the driver each time
    the interface is brought up instead of just when the interface is created.

    Signed-off-by: Juuso Oikarinen
    Signed-off-by: John W. Linville

    Juuso Oikarinen
     
  • I have a netgear WNDR3700 that appears to have an off-by-four
    bug in how it fills out the hti->control_chan (I configure the
    AP to channel 11, it reports 15 as control_chan).

    Poke a message into the kernel logs to give users a
    clue as to why they are not getting the expected
    channel-type or rate.

    Signed-off-by: Ben Greear
    Signed-off-by: John W. Linville

    Ben Greear
     
  • Signed-off-by: Ben Greear
    Signed-off-by: John W. Linville

    Ben Greear
     
  • If we cannot set the channel type, set the channel back to the
    original.

    Don't update the driver hardware if nothing actually changed.

    Signed-off-by: Ben Greear
    Signed-off-by: John W. Linville

    Ben Greear
     

01 Feb, 2011

1 commit


29 Jan, 2011

5 commits


27 Jan, 2011

1 commit

  • For events that include only the local struct as
    their parameter, we can use DECLARE_EVENT_CLASS
    and save quite some binary size across segments
    as well lines of code.

    text data bss dec hex filename
    375745 19296 916 395957 60ab5 mac80211.ko.before
    367473 17888 916 386277 5e4e5 mac80211.ko.after
    -8272 -1408 0 -9680 -25d0 delta

    Some more tracepoints with identical arguments
    could be combined like this but for now this is
    the one that benefits most.

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

    Johannes Berg
     

26 Jan, 2011

1 commit

  • Some drivers (e.g. ath9k) do not always disable beacons when they're
    supposed to. When an interface is changed using the change_interface op,
    the mode specific sdata part is in an undefined state and trying to
    get a beacon at this point can produce weird crashes.

    To fix this, add a check for ieee80211_sdata_running before using
    anything from the sdata.

    Signed-off-by: Felix Fietkau
    Cc: stable@kernel.org
    Signed-off-by: John W. Linville

    Felix Fietkau
     

22 Jan, 2011

2 commits

  • Extend channel to frequency mapping for 802.11j Japan 4.9GHz band, according to
    IEEE802.11 section 17.3.8.3.2 and Annex J. Because there are now overlapping
    channel numbers in the 2GHz and 5GHz band we can't map from channel to
    frequency without knowing the band. This is no problem as in most contexts we
    know the band. In places where we don't know the band (and WEXT compatibility)
    we assume the 2GHz band for channels below 14.

    This patch does not implement all channel to frequency mappings defined in
    802.11, it's just an extension for 802.11j 20MHz channels. 5MHz and 10MHz
    channels as well as 802.11y channels have been omitted.

    The following drivers have been updated to reflect the API changes:
    iwl-3945, iwl-agn, iwmc3200wifi, libertas, mwl8k, rt2x00, wl1251, wl12xx.
    The drivers have been compile-tested only.

    Signed-off-by: Bruno Randolf
    Signed-off-by: Brian Prodoehl
    Acked-by: Luciano Coelho
    Signed-off-by: John W. Linville

    Bruno Randolf
     
  • This particular error isn't about multicast.

    Signed-off-by: Ben Greear
    Signed-off-by: John W. Linville

    Ben Greear
     

20 Jan, 2011

17 commits

  • The conn->sec_level value is supposed to represent the current level of
    security that the connection has. However, by assigning to it before
    requesting authentication it will have the wrong value during the
    authentication procedure. To fix this a pending_sec_level variable is
    added which is used to track the desired security level while making
    sure that sec_level always represents the current level of security.

    Signed-off-by: Johan Hedberg
    Signed-off-by: Gustavo F. Padovan

    Johan Hedberg
     
  • When there is an existing connection l2cap_check_security needs to be
    called to ensure that the security level of the new socket is fulfilled.
    Normally l2cap_do_start takes care of this, but that function doesn't
    get called for SOCK_RAW type sockets. This patch adds the necessary
    l2cap_check_security call to the appropriate branch in l2cap_do_connect.

    Signed-off-by: Johan Hedberg
    Acked-by: Marcel Holtmann
    Signed-off-by: Gustavo F. Padovan

    Johan Hedberg
     
  • The logic for determining the needed auth_type for an L2CAP socket is
    rather complicated and has so far been duplicated in
    l2cap_check_security as well as l2cap_do_connect. Additionally the
    l2cap_check_security code was completely missing the handling of
    SOCK_RAW type sockets. This patch creates a unified function for the
    evaluation and makes l2cap_do_connect and l2cap_check_security use that
    function.

    Signed-off-by: Johan Hedberg
    Acked-by: Marcel Holtmann
    Signed-off-by: Gustavo F. Padovan

    Johan Hedberg
     
  • If an existing connection has a MITM protection requirement (the first
    bit of the auth_type) then that requirement should not be cleared by new
    sockets that reuse the ACL but don't have that requirement.

    Signed-off-by: Johan Hedberg
    Acked-by: Marcel Holtmann
    Signed-off-by: Gustavo F. Padovan

    Johan Hedberg
     
  • This reverts commit 045309820afe047920a50de25634dab46a1e851d. That
    commit is wrong for two reasons:

    - The conn->sec_level shouldn't be updated without performing
    authentication first (as it's supposed to represent the level of
    security that the existing connection has)

    - A higher auth_type value doesn't mean "more secure" like the commit
    seems to assume. E.g. dedicated bonding with MITM protection is 0x03
    whereas general bonding without MITM protection is 0x04. hci_conn_auth
    already takes care of updating conn->auth_type so hci_connect doesn't
    need to do it.

    Signed-off-by: Johan Hedberg
    Acked-by: Marcel Holtmann
    Signed-off-by: Gustavo F. Padovan

    Johan Hedberg
     
  • Fix a bug introduced in commit 9cf5b0ea3a7f1432c61029f7aaf4b8b338628884:
    function rfcomm_recv_ua calls rfcomm_session_put without checking that
    the session is not referenced by some DLC. If the session is freed, that
    DLC would refer to deallocated memory, causing an oops later, as shown
    in this bug report: https://bugzilla.kernel.org/show_bug.cgi?id=15994

    Signed-off-by: Lukas Turek
    Signed-off-by: Gustavo F. Padovan

    Lukáš Turek
     
  • The blacklist should be freed before the hci device gets unregistered.

    Signed-off-by: Johan Hedberg
    Signed-off-by: Gustavo F. Padovan

    Johan Hedberg
     
  • CC: Marcel Holtmann
    CC: "Gustavo F. Padovan"
    CC: João Paulo Rechi Vita
    Signed-off-by: David Sterba
    Signed-off-by: Gustavo F. Padovan

    David Sterba
     
  • When running as a 4-addr station against an AP that has the 4-addr VLAN
    interface and the main 3-addr AP interface bridged together, sometimes
    frames originating from the station were looping back from the 3-addr AP
    interface, causing the bridge code to emit warnings about receiving frames
    with its own source address.
    I'm not sure why this is happening yet, but I think it's a good idea to
    drop all frames (except 802.1x/EAP frames) that do not match the configured
    addressing mode, including 4-address frames sent to a 3-address station.
    User test reports indicate that the problem goes away with this patch.

    Signed-off-by: Felix Fietkau
    Signed-off-by: John W. Linville

    Felix Fietkau
     
  • Currently, mac80211 always advertises that it may send
    up to 64 subframes in an aggregate. This is fine, since
    it's the max, but might as well be set to zero instead
    since it doesn't have any information.

    However, drivers might have that information, so allow
    them to set a variable giving it, which will then be
    used. The default of zero will be fine since to the
    peer that means we don't know and it will just use its
    own limit for the buffer size.

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

    Johannes Berg
     
  • The aggregation code currently doesn't implement the
    buffer size negotiation. It will always request a max
    buffer size (which is fine, if a little pointless, as
    the mac80211 code doesn't know and might just use 0
    instead), but if the peer requests a smaller size it
    isn't possible to honour this request.

    In order to fix this, look at the buffer size in the
    addBA response frame, keep track of it and pass it to
    the driver in the ampdu_action callback when called
    with the IEEE80211_AMPDU_TX_OPERATIONAL action. That
    way the driver can limit the number of subframes in
    aggregates appropriately.

    Note that this doesn't fix any drivers apart from the
    addition of the new argument -- they all need to be
    updated separately to use this variable!

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

    Johannes Berg
     
  • When mesh is disabled, mac80211 was returning
    beacons with an empty mesh ID. That isn't
    desirable, even if drivers shouldn't be trying
    to get beacons to start with.

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

    Johannes Berg
     
  • Signed-off-by: Ben Greear
    Signed-off-by: John W. Linville

    Ben Greear
     
  • mppath is mesh related parameter and maybe unused

    Signed-off-by: Wey-Yi Guy
    Signed-off-by: John W. Linville

    Wey-Yi Guy
     
  • Some devices don't support the maximum AMDPU buffer size of 64, so we
    need to add an option to configure this in the hardware configuration.
    This value will be used in the ADDBA response instead of the value
    suggested in the request, if the latter is greater than the max
    supported.

    Signed-off-by: Luciano Coelho
    Tested-by: Juuso Oikarinen
    Signed-off-by: John W. Linville

    Luciano Coelho
     
  • Replace MESH_WORK_GROW_MPATH_TABLE by MESH_WORK_GROW_MPP_TABLE in
    mesh_mpp_table_grow call condition.

    (Clearly the original was a typo... -- JWL)

    Signed-off-by: Nickolay Ledovskikh
    Signed-off-by: John W. Linville

    Nick Ledovskikh
     
  • Rewrote code for checking if the destination is proxied by a mesh portal, to facilitate better
    understanding of the functionality.

    Signed-off-by: Joel A Fernandes
    Acked-by: Javier Cardona
    Signed-off-by: John W. Linville

    Joel A Fernandes
     

15 Jan, 2011

3 commits

  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (47 commits)
    GRETH: resolve SMP issues and other problems
    GRETH: handle frame error interrupts
    GRETH: avoid writing bad speed/duplex when setting transfer mode
    GRETH: fixed skb buffer memory leak on frame errors
    GRETH: GBit transmit descriptor handling optimization
    GRETH: fix opening/closing
    GRETH: added raw AMBA vendor/device number to match against.
    cassini: Fix build bustage on x86.
    e1000e: consistent use of Rx/Tx vs. RX/TX/rx/tx in comments/logs
    e1000e: update Copyright for 2011
    e1000: Avoid unhandled IRQ
    r8169: keep firmware in memory.
    netdev: tilepro: Use is_unicast_ether_addr helper
    etherdevice.h: Add is_unicast_ether_addr function
    ks8695net: Use default implementation of ethtool_ops::get_link
    ks8695net: Disable non-working ethtool operations
    USB CDC NCM: Don't deref NULL in cdc_ncm_rx_fixup() and don't use uninitialized variable.
    vxge: Remember to release firmware after upgrading firmware
    netdev: bfin_mac: Remove is_multicast_ether_addr use in netdev_for_each_mc_addr
    ipsec: update MAX_AH_AUTH_LEN to support sha512
    ...

    Linus Torvalds
     
  • * 'for-2.6.38' of git://linux-nfs.org/~bfields/linux: (62 commits)
    nfsd4: fix callback restarting
    nfsd: break lease on unlink, link, and rename
    nfsd4: break lease on nfsd setattr
    nfsd: don't support msnfs export option
    nfsd4: initialize cb_per_client
    nfsd4: allow restarting callbacks
    nfsd4: simplify nfsd4_cb_prepare
    nfsd4: give out delegations more quickly in 4.1 case
    nfsd4: add helper function to run callbacks
    nfsd4: make sure sequence flags are set after destroy_session
    nfsd4: re-probe callback on connection loss
    nfsd4: set sequence flag when backchannel is down
    nfsd4: keep finer-grained callback status
    rpc: allow xprt_class->setup to return a preexisting xprt
    rpc: keep backchannel xprt as long as server connection
    rpc: move sk_bc_xprt to svc_xprt
    nfsd4: allow backchannel recovery
    nfsd4: support BIND_CONN_TO_SESSION
    nfsd4: modify session list under cl_lock
    Documentation: fl_mylease no longer exists
    ...

    Fix up conflicts in fs/nfsd/vfs.c with the vfs-scale work. The
    vfs-scale work touched some msnfs cases, and this merge removes support
    for that entirely, so the conflict was trivial to resolve.

    Linus Torvalds
     
  • rxrpc_workqueue isn't depended upon while reclaiming memory. Convert
    to alloc_workqueue() without WQ_MEM_RECLAIM.

    Signed-off-by: Tejun Heo
    Signed-off-by: David Howells
    Cc: linux-afs@lists.infradead.org
    Signed-off-by: Linus Torvalds

    Tejun Heo
     

14 Jan, 2011

6 commits

  • After recent changes, (percpu stats on vlan/tunnels...), we dont need
    anymore per struct netdev_queue tx_bytes/tx_packets/tx_dropped counters.

    Only remaining users are ixgbe, sch_teql, gianfar & macvlan :

    1) ixgbe can be converted to use existing tx_ring counters.

    2) macvlan incremented txq->tx_dropped, it can use the
    dev->stats.tx_dropped counter.

    3) sch_teql : almost revert ab35cd4b8f42 (Use net_device internal stats)
    Now we have ndo_get_stats64(), use it, even for "unsigned long"
    fields (No need to bring back a struct net_device_stats)

    4) gianfar adds a stats structure per tx queue to hold
    tx_bytes/tx_packets

    This removes a lockdep warning (and possible lockup) in rndis gadget,
    calling dev_get_stats() from hard IRQ context.

    Ref: http://www.spinics.net/lists/netdev/msg149202.html

    Reported-by: Neil Jones
    Signed-off-by: Eric Dumazet
    CC: Jarek Poplawski
    CC: Alexander Duyck
    CC: Jeff Kirsher
    CC: Sandeep Gopalpet
    CC: Michal Nazarewicz
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • When the buffer size is set to zero in the block ack parameter set
    field, we should use the maximum supported number of subframes. The
    existing code was bogus and was doing some unnecessary calculations
    that lead to wrong values.

    Thanks Johannes for helping me figure this one out.

    Cc: stable@kernel.org
    Cc: Johannes Berg
    Signed-off-by: Luciano Coelho
    Reviewed-by: Johannes Berg
    Signed-off-by: John W. Linville

    Luciano Coelho
     
  • Since the introduction of the fixes for the
    reorder timer, mac80211 will cause lockdep
    warnings because lockdep confuses
    local->skb_queue and local->rx_skb_queue
    and treats their lock as the same.

    However, their locks are different, and are
    valid in different contexts (the former is
    used in IRQ context, the latter in BH only)
    and the only thing to be done is mark the
    former as a different lock class so that
    lockdep can tell the difference.

    Reported-by: Larry Finger
    Reported-by: Sujith
    Reported-by: Miles Lane
    Tested-by: Sujith
    Tested-by: Johannes Berg
    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     
  • David S. Miller
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (41 commits)
    fs: add documentation on fallocate hole punching
    Gfs2: fail if we try to use hole punch
    Btrfs: fail if we try to use hole punch
    Ext4: fail if we try to use hole punch
    Ocfs2: handle hole punching via fallocate properly
    XFS: handle hole punching via fallocate properly
    fs: add hole punching to fallocate
    vfs: pass struct file to do_truncate on O_TRUNC opens (try #2)
    fix signedness mess in rw_verify_area() on 64bit architectures
    fs: fix kernel-doc for dcache::prepend_path
    fs: fix kernel-doc for dcache::d_validate
    sanitize ecryptfs ->mount()
    switch afs
    move internal-only parts of ncpfs headers to fs/ncpfs
    switch ncpfs
    switch 9p
    pass default dentry_operations to mount_pseudo()
    switch hostfs
    switch affs
    switch configfs
    ...

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (46 commits)
    hwrng: via_rng - Fix memory scribbling on some CPUs
    crypto: padlock - Move padlock.h into include/crypto
    hwrng: via_rng - Fix asm constraints
    crypto: n2 - use __devexit not __exit in n2_unregister_algs
    crypto: mark crypto workqueues CPU_INTENSIVE
    crypto: mv_cesa - dont return PTR_ERR() of wrong pointer
    crypto: ripemd - Set module author and update email address
    crypto: omap-sham - backlog handling fix
    crypto: gf128mul - Remove experimental tag
    crypto: af_alg - fix af_alg memory_allocated data type
    crypto: aesni-intel - Fixed build with binutils 2.16
    crypto: af_alg - Make sure sk_security is initialized on accept()ed sockets
    net: Add missing lockdep class names for af_alg
    include: Install linux/if_alg.h for user-space crypto API
    crypto: omap-aes - checkpatch --file warning fixes
    crypto: omap-aes - initialize aes module once per request
    crypto: omap-aes - unnecessary code removed
    crypto: omap-aes - error handling implementation improved
    crypto: omap-aes - redundant locking is removed
    crypto: omap-aes - DMA initialization fixes for OMAP off mode
    ...

    Linus Torvalds