27 Apr, 2009

1 commit

  • The IP MIB (RFC 4293) defines stats for InOctets, OutOctets, InMcastOctets and
    OutMcastOctets:
    http://tools.ietf.org/html/rfc4293
    But it seems we don't track those in any way that easy to separate from other
    protocols. This patch adds those missing counters to the stats file. Tested
    successfully by me

    With help from Eric Dumazet.

    Signed-off-by: Neil Horman
    Signed-off-by: David S. Miller

    Neil Horman
     

26 Apr, 2009

1 commit


25 Apr, 2009

1 commit

  • net/mac80211/tx.c: In function ‘ieee80211_tx_h_select_key’:
    net/mac80211/tx.c:448: warning: ‘key’ may be used uninitialized in this function

    drivers/net/wireless/ath/ath9k/rc.c: In function ‘ath_rc_rate_getidx’:
    drivers/net/wireless/ath/ath9k/rc.c:815: warning: ‘nextindex’ may be used uninitialized in this function

    drivers/net/wireless/hostap/hostap_plx.c: In function ‘prism2_plx_probe’:
    drivers/net/wireless/hostap/hostap_plx.c:438: warning: ‘cor_index’ may be used uninitialized in this function
    drivers/net/wireless/hostap/hostap_plx.c:438: warning: ‘cor_offset’ may be used uninitialized in this function

    Signed-off-by: John W. Linville

    John W. Linville
     

23 Apr, 2009

37 commits

  • From: Ursula Braun

    net/iucv/af_iucv.c in net-next-2.6 is almost correct. 4 lines should
    still be deleted. These are the remaining changes:

    Signed-off-by: David S. Miller

    Ursula Braun
     
  • Conflicts:
    net/iucv/af_iucv.c

    David S. Miller
     
  • The SO_MSGLIMIT socket option modifies the message limit for new
    IUCV communication paths.

    The message limit specifies the maximum number of outstanding messages
    that are allowed for connections. This setting can be lowered by z/VM
    when an IUCV connection is established.

    Expects an integer value in the range of 1 to 65535.
    The default value is 65535.

    The message limit must be set before calling connect() or listen()
    for sockets.

    If sockets are already connected or in state listen, changing the message
    limit is not supported.
    For reading the message limit value, unconnected sockets return the limit
    that has been set or the default limit. For connected sockets, the actual
    message limit is returned. The actual message limit is assigned by z/VM
    for each connection and it depends on IUCV MSGLIMIT authorizations
    specified for the z/VM guest virtual machine.

    Signed-off-by: Hendrik Brueckner
    Signed-off-by: Ursula Braun
    Signed-off-by: David S. Miller

    Hendrik Brueckner
     
  • If the skb cannot be copied to user iovec, always return -EFAULT.
    The skb is enqueued again, except MSG_PEEK flag is set, to allow user space
    applications to correct its iovec pointer.

    Signed-off-by: Hendrik Brueckner
    Signed-off-by: Ursula Braun
    Signed-off-by: David S. Miller

    Hendrik Brueckner
     
  • This patch provides the socket type SOCK_SEQPACKET in addition to
    SOCK_STREAM.

    AF_IUCV sockets of type SOCK_SEQPACKET supports an 1:1 mapping of
    socket read or write operations to complete IUCV messages.
    Socket data or IUCV message data is not fragmented as this is the
    case for SOCK_STREAM sockets.

    The intention is to help application developers who write
    applications or device drivers using native IUCV interfaces
    (Linux kernel or z/VM IUCV interfaces).

    Signed-off-by: Hendrik Brueckner
    Signed-off-by: Ursula Braun
    Signed-off-by: David S. Miller

    Hendrik Brueckner
     
  • Allow 'classification' of socket data that is sent or received over
    an af_iucv socket. For classification of data, the target class of an
    (native) iucv message is used.

    This patch provides the cmsg interface for iucv_sock_recvmsg() and
    iucv_sock_sendmsg(). Applications can use the msg_control field of
    struct msghdr to set or get the target class as a
    "socket control message" (SCM/CMSG).

    Signed-off-by: Hendrik Brueckner
    Signed-off-by: Ursula Braun
    Signed-off-by: David S. Miller

    Hendrik Brueckner
     
  • The patch allows to send and receive data in the parameter list of an
    iucv message.
    The parameter list is an arry of 8 bytes that are used by af_iucv as
    follows:
    0..6 7 bytes for socket data and
    7 1 byte to store the data length.

    Instead of storing the data length directly, the difference
    between 0xFF and the data length is used.
    This convention does not interfere with the existing use of PRM
    messages for shutting down the send direction of an AF_IUCV socket
    (shutdown() operation). Data lenghts greater than 7 (or PRM message
    byte 8 is less than 0xF8) denotes to special messages.
    Currently, the special SEND_SHUTDOWN message is supported only.

    To use IPRM messages, both communicators must set the IUCV_IPRMDATA
    flag during path negotiation, i.e. in iucv_connect() and
    path_pending().

    To be compatible to older af_iucv implementations, sending PRM
    messages is controlled by the socket option SO_IPRMDATA_MSG.
    Receiving PRM messages does not depend on the socket option (but
    requires the IUCV_IPRMDATA path flag to be set).

    Sending/Receiving data in the parameter list improves performance for
    small amounts of data by reducing message_completion() interrupts and
    memory copy operations.

    Signed-off-by: Hendrik Brueckner
    Signed-off-by: Ursula Braun
    Signed-off-by: David S. Miller

    Hendrik Brueckner
     
  • Provide the socket operations getsocktopt() and setsockopt() to enable/disable
    sending of data in the parameter list of IUCV messages.
    The patch sets respective flag only.

    Signed-off-by: Hendrik Brueckner
    Signed-off-by: Ursula Braun
    Signed-off-by: David S. Miller

    Hendrik Brueckner
     
  • If the af_iucv communication partner quiesces the path to shutdown its
    receive direction, provide a quiesce callback implementation to shutdown
    the (local) send direction. This ensures that both sides are synchronized.

    Signed-off-by: Hendrik Brueckner
    Signed-off-by: Ursula Braun
    Signed-off-by: David S. Miller

    Hendrik Brueckner
     
  • Some of the IUCV commands can be invoked in interrupt context.
    Those commands need a different per-cpu IUCV command parameter block,
    otherwise they might overwrite an IUCV command parameter of a not yet
    finished IUCV command invocation in process context.

    Signed-off-by: Ursula Braun
    Signed-off-by: David S. Miller

    Ursula Braun
     
  • SME needs to be notified when the authentication or association
    attempt times out and MLME has stopped processing in order to allow
    the SME to decide what to do next.

    Signed-off-by: Jouni Malinen
    Signed-off-by: John W. Linville

    Jouni Malinen
     
  • The maximum sleep interval, for powersave purposes, is
    determined by the DTIM period (it may not be larger)
    and the required networking latency (it must be small
    enough to fulfil those constraints).

    This makes mac80211 calculate the maximum sleep interval
    based on those constraints, and pass it to the driver.
    Then the driver should instruct the device to sleep at
    most that long.

    Note that the device is responsible for aligning the
    maximum sleep interval between DTIMs, we make sure it's
    not longer but it needs to make sure it's between them.

    Also, group some powersave documentation together and
    make it more explicit that we support managed mode only,
    and no IBSS powersaving (yet).

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

    Johannes Berg
     
  • Make the JOIN_IBSS command look at the beacon interval
    attribute to see if the user requested a specific beacon
    interval, if not default to 100 TU (wext too).

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

    Johannes Berg
     
  • Just setting IEEE80211_CONF_CHANGE_PS should be sufficient
    for changes in the power saving things. The driver already
    tells us whether it wants notification of dynps via the
    "have dynps support" hw flag.

    Signed-off-by: Johannes Berg
    Reviewed-by: Kalle Valo
    Signed-off-by: John W. Linville

    Johannes Berg
     
  • Stephen Rothwell reported these warnings from a 32-bit build:

    net/mac80211/mlme.c:1771: warning: left shift count >= width of type
    net/mac80211/mlme.c:1772: warning: left shift count >= width of type
    net/mac80211/mlme.c:1773: warning: left shift count >= width of type
    net/mac80211/mlme.c:1774: warning: left shift count >= width of type
    net/mac80211/mlme.c:1775: warning: left shift count >= width of type

    This shows a bug in my code -- BIT(X) uses just "1 << X" which means
    a 32-bit integer on 32-bit platforms, but the code here needs a u64
    on all platforms. Fix this by using "1ULL << X" instead of BIT(X).

    Thanks Stephen!

    Reported-by: Stephen Rothwell
    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     
  • With the RCU locking here we sleep while in an atomic context,
    since we can sleep just use mutex locking for the interface
    list instead of RCU. Sorry, seems I didn't get that in my UML
    test.

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

    Johannes Berg
     
  • The TIM IE must not be shorter than 4 bytes, so verify that
    when parsing it and use the proper type. To ease that adjust
    struct ieee80211_tim_ie to have a virtual bitmap of size
    at least 1.

    Also check that the TIM IE is actually present before trying
    to parse it!

    Because other people may need the function, make it a static
    inline in ieee80211.h.

    (The original "mac80211: validate TIM IE length" was a minimal fix for
    2.6.30. This purports to be the full, correct fix. -- JWL)

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

    Johannes Berg
     
  • The fact that these are exported is a technical detail
    of the conversion period -- we don't want anybody to
    start relying on these. Ultimately we want things to
    use cfg80211 only, and once everything that is in wext
    is converted to cfg80211 drivers will not need to touch
    wext _at all_.

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

    Johannes Berg
     
  • When we leave an IBSS, we should clear the SSID and not just the
    BSSID, but since WEXT allows configuring while the interface is
    down we must not clear it when leaving due to taking the iface
    down, so some complications are needed.

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

    Johannes Berg
     
  • Add new nl80211 attributes that can be used with NL80211_CMD_SET_WIPHY
    and NL80211_CMD_GET_WIPHY to manage fragmentation/RTS threshold and
    retry limits.

    Since these values are stored in struct wiphy, remove the local copy
    from mac80211 where feasible (frag & rts threshold). The retry limits
    are currently needed in struct ieee80211_conf, but these could be
    eventually removed since the driver should have access to the values
    in struct wiphy.

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

    Jouni Malinen
     
  • Trying to separate header files into net/wireless.h and
    net/cfg80211.h has been a source of confusion. Remove
    net/wireless.h (because there also is the linux/wireless.h)
    and subsume everything into net/cfg80211.h -- except the
    definitions for regulatory structures which get moved to
    a new header net/regulatory.h.

    The "new" net/cfg80211.h is now divided into sections.

    There are no real changes in this patch but code shuffling
    and some very minor documentation fixes.

    I have also, to make things reflect reality, put in a
    copyright line for Luis to net/regulatory.h since that
    is probably exclusively written by him but was formerly
    in a file that only had my copyright line.

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

    Johannes Berg
     
  • This converts mac80211 to the new cfg80211 IBSS API, the
    wext handling functions are called where appropriate.

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

    Johannes Berg
     
  • This adds IBSS API along with (preliminary) wext handlers.
    The wext handlers can only do IBSS so you need to call them
    from your own wext handlers if the mode is IBSS.

    The nl80211 API requires
    * an SSID
    * a channel (frequency) for the case that a new IBSS
    has to be created

    It optionally supports
    * a flag to fix the channel
    * a fixed BSSID

    The cfg80211 code also takes care to leave the IBSS before
    the netdev is set down. If wireless extensions are used, it
    also caches values when the interface is down and instructs
    the driver to join when the interface is set up.

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

    Johannes Berg
     
  • Since we have ->deauth and ->disassoc we can support the
    wext SIWMLME call directly without driver wext handlers.

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

    Johannes Berg
     
  • When listing all wireless netdevs in the system this
    is useful to print which wiphy they belong to. Just
    add the attribute, any program that doesn't care will
    just ignore it.

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

    Johannes Berg
     
  • This patch sets IEEE80211_TX_CTL_CLEAR_PS_FILT for outgoing
    frames for a half-wake station.

    this is necessary if one wants to get ps-poll working properly with a p54 ap.

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

    Christian Lamparter
     
  • We can allow scan requests in AP mode as long as the interface has not
    yet been configured to send out Beacon frames (or if beaconing has
    been disabled prior to the scan request). This makes it easier to scan
    for neighboring BSSes during AP initialization and makes it possible
    to run a scan without setting the interface down, if needed. Without
    this change, the only available option would be to set the interface
    down, move into station mode, and set the interface up, prior to
    requesting the scan.

    Signed-off-by: Jouni Malinen
    Signed-off-by: John W. Linville

    Jouni Malinen
     
  • Enable PS by default (depending on Kconfig) -- rely on drivers
    to control the level using pm_qos. Due to the previous patch
    we turn off PS when necessary due to latency requirements.

    This has a Kconfig symbol so people can, if they really want,
    configure the default in their kernels. We may want to keep it
    at "default y" only in wireless-testing for a while.

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

    Johannes Berg
     
  • Regardless of whether the hardware implements beacon filtering,
    there's no need to process all beacons in software all the time
    throughout the stack (mac80211 does a lot, then cfg80211, then
    in the future possibly userspace).

    This patch implements the "best possible" beacon filtering in
    mac80211. "Best possible" means that it can look for changes in
    all requested information elements, and distinguish vendor IEs
    by their OUI.

    In the future, we will add nl80211 API for userspace to request
    information elements and vendor IE OUIs to watch -- drivers can
    then implement the best they can do while software implements
    it fully.

    It is unclear whether or not this actually saves CPU time, but
    the data is all in the cache already so it should be fairly
    cheap. The additional _testing_, however, has great benefit;
    Without this, and on hardware that doesn't implement beacon
    filtering, wrong assumptions about, for example, scan result
    updates could quickly creep into code.

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

    Johannes Berg
     
  • When an application asks for a latency lower than the beacon interval
    there's nothing we can do -- we need to stay awake and not have the
    AP buffer frames for us. Add code to automatically calculate this
    constraint in mac80211 so drivers need not concern themselves with it.

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

    Johannes Berg
     
  • When you have multiple virtual interfaces the current
    implementation requires setting them up properly from
    userspace, which is undesirable when we want to default
    to power save mode. Keep track of powersave requested
    from userspace per managed mode interface, and only
    enable powersave globally when exactly one managed mode
    interface is active and has powersave turned on.

    Second, only start the dynPS timer when PS is turned
    on, and properly turn it off when PS is turned off.

    Third, fix the scan_sdata abuse in the dynps code.

    Finally, also reorder the code and refactor the code
    that enables PS or the dynps timer instead of having
    it copied in two places.

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

    Johannes Berg
     
  • Some hardware defects may require the hardware to be re-initialised
    completely from scratch. Drivers would need much information (for
    instance the current MAC address, crypto keys, beaconing information,
    etc.) stored duplicated from mac80211 to be able to do this, so let
    mac80211 help them.

    The new ieee80211_restart_hw() function requires the same code as
    resuming, so move that code into a new ieee80211_reconfig() function
    in util.c and leave only the suspend code in pm.c.

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

    Johannes Berg
     
  • That will make the various cases where the WARN_ON
    can happen distinguishable.

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

    Johannes Berg
     
  • The rfkill system fails to issue a LED trigger event when the rfkill state
    changes.

    Signed-off-by: Larry Finger
    Signed-off-by: John W. Linville

    Larry Finger
     
  • In the normal WPA or RSN case keys are only configured after
    associating, so we should do that in that order when resuming
    as well. It shouldn't really matter since we do not send any
    data at either point, but iwlwifi prefers it this way and it
    does seem more natural.

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

    Johannes Berg
     
  • This adds the necessary code and fields to let drivers specify
    their cipher capabilities and exports them to userspace. Also
    update mac80211 to export the ciphers it has.

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

    Johannes Berg
     
  • This informs userspace when a change has occured on a world
    roaming wiphy's channel which has lifted some restrictions
    due to a regulatory beacon hint.

    Because this is now sent to userspace through the regulatory
    multicast group we remove the debug prints we used to use as
    they are no longer necessary.

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

    Luis R. Rodriguez