11 Oct, 2007

40 commits

  • All drivers use the same values for TSF sync,
    this will move the value determination into rt2x00config.c,
    and the definition for the values to rt2x00reg.h

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

    Ivo van Doorn
     
  • As reported by Modestas Vainius, enabling rkfill in 1 driver and
    disabling it in a second could cause a NULL pointer exception when
    the rfkill-disabled driver still sets the CONFIG_SUPPORT_HW_BUTTON flag.

    Furthermore, rfkill expects the timeout as a value in milliseconds
    instead of jiffies. Also increase the timeout to a second,
    since this 250ms would be overkill.

    Also the flag DEVICE_ENABLED_RADIO_HW is causing problems
    for devices which do not support the hardware button
    while rfkill is enabled in the driver.

    To remidy this we should inverse the flag and its meaning,
    rename the flag to DEVICE_DISABLED_RADIO_HW this means that
    by default the radio is enabled by the hardware button (if present)
    and can only be disabled explicitely.

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

    Ivo van Doorn
     
  • We shouldn't use changed_flags when configuring the packet filter,
    we work directly with the total_flags which is safe enough since
    we already check if something has changed after we applied our
    packet filtering flag rules.
    Also make sure that when the packet filter is scheduled, the
    rt2x00dev->interface.filter is cleared to make sure the drivers
    will update the packet filter instead of failing at the check:
    *total_flags == rt2x00dev->interface.filter

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

    Ivo van Doorn
     
  • By putting the flags into a enumeration we can
    make it easier maintable since we don't have to
    assign numbers for each flag. This makes it easier
    to insert and remove flags.

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

    Ivo van Doorn
     
  • Store the started state into a new flag DEVICE_STARTED_SUSPEND
    and set this when suspending while the device was started.
    We can't check for is_interface_present() since only mac80211
    knows if there are monitor interfaces present.

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

    Ivo van Doorn
     
  • Don't check if the radio is enabled in rt2x00lib_toggle_rx,
    this is required since the link tuner should be disabled
    when shutting down the device. The remaining calls inside the
    rt2x00lib_toggle_rx handler should deliver no problems when
    called while the radio is done.

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

    Ivo van Doorn
     
  • The various drivers contained duplicate code to handle the
    MAC and BSSID initialization correctly. This moves the
    address copy to little endian variables to rt2x00config.

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

    Ivo van Doorn
     
  • Add the device ID for Linksys WUSB54AG.

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

    Martti Huttunen
     
  • This adds the device ID for the HP wireless print kit usb dongle.

    Thanks to Thierry Merle for the patch to the original rtl8187 driver.

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

    Michael Wu
     
  • ipw2200 makes extensive use of background scanning when unassociated or
    down. Unfortunately, the firmware sends scan completed events many
    times per second, which the driver pushes directly up to userspace.
    This needlessly wakes up processes listening for wireless events many
    times per second. Batch together scan completed events for
    non-user-requested scans and send them up to userspace every 4 seconds.
    Scan completed events resulting from an SIOCSIWSCAN call are pushed up
    without delay.

    Signed-off-by: Dan Williams
    Signed-off-by: John W. Linville

    Dan Williams
     
  • Socket 1:
    product info: "The Linksys Group, Inc.", "Wireless Network CF Card", "ISL37300P", "RevA"
    manfid: 0x0274, 0x3301

    Signed-off-by: Marcin Juszkiewicz
    Signed-off-by: John W. Linville

    Marcin Juszkiewicz
     
  • Tested by Su-Jong You
    zd1211b chip 0471:1237 v4810 high 00-12-bf AL2230_RF pa0 g--N

    Signed-off-by: Daniel Drake
    Signed-off-by: John W. Linville

    Daniel Drake
     
  • This adds the PCMCIA device ID for the Deutsche Telekom T-Sinus 111card to
    hostap_cs.

    $ /sbin/lspcmcia -v
    [...]
    Socket 0 Device 0: [hostap_cs] (bus ID: 0.0)
    Configuration: state: on
    Product Name: T-Sinus 111card 2.0.0
    Identification: manf_id: 0x01bf card_id: 0x3301
    function: 6 (network)
    prod_id(1): "T-Sinus" (0x8c389dc1)
    prod_id(2): "111card" (0x6a23ac17)
    prod_id(3): --- (---)
    prod_id(4): "2.0.0" (0x92b9effb)

    Signed-off-by: Stefan Lippers-Hollmann
    Signed-off-by: John W. Linville

    Stefan Lippers-Hollmann
     
  • This patch releases the lock on the state before calling x->type->output.
    It also adds the lock to the spots where they're currently needed.

    Most of those places (all except mip6) are expected to disappear with
    async crypto.

    Signed-off-by: Herbert Xu
    Signed-off-by: David S. Miller

    Herbert Xu
     
  • This patch adds locking so that when we're copying non-atomic fields such as
    life-time or coaddr to user-space we don't get a partial result.

    For af_key I've changed every instance of pfkey_xfrm_state2msg apart from
    expiration notification to include the keys and life-times. This is in-line
    with XFRM behaviour.

    The actual cases affected are:

    * pfkey_getspi: No change as we don't have any keys to copy.
    * key_notify_sa:
    + ADD/UPD: This wouldn't work otherwise.
    + DEL: It can't hurt.

    Signed-off-by: Herbert Xu
    Signed-off-by: David S. Miller

    Herbert Xu
     
  • Here's a good example of code duplication leading to code rot. The
    notification patch did its own netlink message creation for xfrm states.
    It duplicated code that was already in dump_one_state. Guess what, the
    next time (and the time after) when someone updated dump_one_state the
    notification path got zilch.

    This patch moves that code from dump_one_state to copy_to_user_state_extra
    and uses it in xfrm_notify_sa too. Unfortunately whoever updates this
    still needs to update xfrm_sa_len since the notification path wants to
    know the exact size for allocation.

    At least I've added a comment saying so and if someone still forgest, we'll
    have a WARN_ON telling us so.

    I also changed the security size calculation to use xfrm_user_sec_ctx since
    that's what we actually put into the skb. However it makes no practical
    difference since it has the same size as xfrm_sec_ctx.

    Signed-off-by: Herbert Xu
    Signed-off-by: David S. Miller

    Herbert Xu
     
  • This patch moves some common code that conceptually belongs to the xfrm core
    from af_key/xfrm_user into xfrm_alloc_spi.

    In particular, the spin lock on the state is now taken inside xfrm_alloc_spi.
    Previously it also protected the construction of the response PF_KEY/XFRM
    messages to user-space. This is inconsistent as other identical constructions
    are not protected by the state lock. This is bad because they in fact should
    be protected but only in certain spots (so as not to hold the lock for too
    long which may cause packet drops).

    The SPI byte order conversion has also been moved.

    Signed-off-by: Herbert Xu
    Signed-off-by: David S. Miller

    Herbert Xu
     
  • There is no point in waking people up when creating/updating larval states
    because they'll just go back to sleep again as larval states by definition
    cannot be found by xfrm_state_find.

    We should only wake them up when the larvals mature or die.

    Signed-off-by: Herbert Xu
    Signed-off-by: David S. Miller

    Herbert Xu
     
  • Current the x->mode->output functions store the IPv6 nh pointer in the
    skb network header. This is inconvenient because the network header then
    has to be fixed up before the packet can leave the IPsec stack. The mac
    header field is unused on output so we can use that to store this instead.

    This patch does that and removes the network header fix-up in xfrm_output.

    It also uses ipv6_hdr where appropriate in the x->type->output functions.

    There is also a minor clean-up in esp4 to make it use the same code as
    esp6 to help any subsequent effort to merge the two.

    Lastly it kills two redundant skb_set_* statements in BEET that were
    simply copied over from transport mode.

    Signed-off-by: Herbert Xu
    Signed-off-by: David S. Miller

    Herbert Xu
     
  • Constructs of the form

    xfrm_state_hold(x);
    foo(x);
    xfrm_state_put(x);

    tend to be broken because foo is either synchronous where this is totally
    unnecessary or if foo is asynchronous then the reference count is in the
    wrong spot.

    In the case of xfrm_secpath_reject, the function is synchronous and therefore
    we should just kill the reference count.

    Signed-off-by: Herbert Xu
    Signed-off-by: David S. Miller

    Herbert Xu
     
  • The newly created net namespace is set to 0 with memset()
    in setup_net(). The setup_net() is also called for the
    init_net_ns(), which is zeroed naturally as a global var.

    So remove this memset and allocate new nets with the
    kmem_cache_zalloc().

    Signed-off-by: Pavel Emelyanov
    Signed-off-by: David S. Miller

    Pavel Emelyanov
     
  • In ip6_fib.c, fib6_clean_node() casts a fib6_walker_t pointer to
    a fib6_cleaner_t pointer assuming a struct fib6_walker_t (field 'w')
    is the first field in struct fib6_walker_t.

    To prevent any future problems that may occur if one day a field
    is inadvertently inserted before the 'w' field in struct fib6_cleaner_t,
    (and to improve readability), this patch uses the container_of() macro.

    Signed-off-by: Benjamin Thery
    Signed-off-by: David S. Miller

    Benjamin Thery
     
  • With the net namespaces many code leaved the __init section,
    thus making the kernel occupy more memory than it did before.
    Since we have a config option that prohibits the namespace
    creation, the functions that initialize/finalize some netns
    stuff are simply not needed and can be freed after the boot.

    Currently, this is almost not noticeable, since few calls
    are no longer in __init, but when the namespaces will be
    merged it will be possible to free more code. I propose to
    use the __net_init, __net_exit and __net_initdata "attributes"
    for functions/variables that are not used if the CONFIG_NET_NS
    is not set to save more space in memory.

    The exiting functions cannot just reside in the __exit section,
    as noticed by David, since the init section will have
    references on it and the compilation will fail due to modpost
    checks. These references can exist, since the init namespace
    never dies and the exit callbacks are never called. So I
    introduce the __exit_refok attribute just like it is already
    done with the __init_refok.

    Signed-off-by: Pavel Emelyanov
    Signed-off-by: David S. Miller

    Pavel Emelyanov
     
  • Signed-off-by: Karsten Keil
    Signed-off-by: David S. Miller

    Karsten Keil
     
  • A net_device struct provides field dev_id. It is used for
    unique ipv6 generation in case of shared network cards
    (as for the OSA network cards of IBM System z).
    If VLAN devices are built on top of such shared network cards,
    this dev_id information needs to be transferred to the VLAN device.

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

    Ursula Braun
     
  • The lastused update check in xfrm_output can be done just as well in
    the mode output function which is specific to RO.

    Signed-off-by: Herbert Xu
    Signed-off-by: David S. Miller

    Herbert Xu
     
  • Now that the only callers of xfrm_replay_notify are in xfrm, we can remove
    the export.

    This patch also removes xfrm_aevent_doreplay since it's now called in just
    one spot.

    Signed-off-by: Herbert Xu
    Signed-off-by: David S. Miller

    Herbert Xu
     
  • The replay counter is one of only two remaining things in the output code
    that requires a lock on the xfrm state (the other being the crypto). This
    patch moves it into the generic xfrm_output so we can remove the lock from
    the transforms themselves.

    Signed-off-by: Herbert Xu
    Signed-off-by: David S. Miller

    Herbert Xu
     
  • The functions xfrm_state_check and xfrm_state_check_space are only used by
    the output code in xfrm_output.c so we can move them over.

    Signed-off-by: Herbert Xu
    Signed-off-by: David S. Miller

    Herbert Xu
     
  • Most of the code in xfrm4_output_one and xfrm6_output_one are identical so
    this patch moves them into a common xfrm_output function which will live
    in net/xfrm.

    In fact this would seem to fix a bug as on IPv4 we never reset the network
    header after a transform which may upset netfilter later on.

    Signed-off-by: Herbert Xu
    Signed-off-by: David S. Miller

    Herbert Xu
     
  • The keys are only used during initialisation so we don't need to carry them
    in esp_data. Since we don't have to allocate them again, there is no need
    to place a limit on the authentication key length anymore.

    Signed-off-by: Herbert Xu
    Signed-off-by: David S. Miller

    Herbert Xu
     
  • The keys are only used during initialisation so we don't need to carry them
    in esp_data. Since we don't have to allocate them again, there is no need
    to place a limit on the authentication key length anymore.

    This patch also kills the unused auth.icv member.

    Signed-off-by: Herbert Xu
    Signed-off-by: David S. Miller

    Herbert Xu
     
  • AF_IUCV socket programs may waste Linux storage, because af_iucv
    allocates an skb whenever posted by the receive callback routine and
    receives the message immediately.
    Message receival is now postponed if data from previous callbacks has
    not yet been transferred to the receiving socket program. Instead a
    message handle is saved in a message queue as a reminder. Once
    messages could be given to the receiving socket program, there is
    an additional checking for entries in the message queue, followed
    by skb allocation and message receival if applicable.

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

    Ursula Braun
     
  • Signed-off-by: Heiko Carstens
    Signed-off-by: Ursula Braun
    Signed-off-by: David S. Miller

    Heiko Carstens
     
  • I recently noticed that when calling:

    # ethtool -s eth0 autoneg on

    on a 5722 (though I'm sure it's not specific to that card) that
    subsequent checks of the cards status looked like this:

    # ethtool eth0
    Settings for eth0:
    Supported ports: [ MII ]
    Supported link modes: 10baseT/Half 10baseT/Full
    100baseT/Half 100baseT/Full
    1000baseT/Half 1000baseT/Full
    Supports auto-negotiation: Yes
    Advertised link modes: 10baseT/Half 10baseT/Full
    100baseT/Half 100baseT/Full
    1000baseT/Half 1000baseT/Full
    Advertised auto-negotiation: No
    Date: Thu Dec 7 00:21:48 2006 -0800

    [TG3]: Allow partial speed advertisement.

    Honor the advertisement bitmask from ethtool. We used to always
    advertise the full capability when autoneg was set to on.

    changed things around so that ethtool speed settings were strictly
    followed. Unfortunately ethtool doesn't seem to set ADVERTISED_Autoneg
    in the advertising field (and maybe it shouldn't have to). I'd vote
    that it should be fixed there, but it should also be added here just in
    case someone using ethtool ioctls in their own application gets what
    they want.

    Adding that flag in tg3_set_settings seemed like the most logical place
    since the driver works fine on boot. This is just an issue when
    re-enabling autonegotiation, so we should probably nip it there.

    Signed-off-by: Andy Gospodarek
    Acked-by: Michael Chan
    Signed-off-by: David S. Miller

    Andy Gospodarek
     
  • This fixes a kernel oops triggered by the ksdazzle SIR driver.
    We need more space for input frames, and 2048 should be plenty of it.

    Signed-off-by: Alex Villacís Lasso
    Signed-off-by: Samuel Ortiz
    Signed-off-by: David S. Miller

    Alex Villacís Lasso
     
  • This always bugged me: dev_ioctl() called dev_ifsioc() either inside
    read_lock(dev_base_lock) or rtnl_lock(), depending on the ioctl being
    executed.

    This change moves the ioctls executed inside dev_base_lock to a new
    function, dev_ifsioc_locked(). Now the locking context is completely
    clear to the reader.

    Signed-off-by: Jeff Garzik
    Signed-off-by: David S. Miller

    Jeff Garzik
     
  • Fix a bunch of sparse warnings. Mostly about 0 used as
    NULL pointer, and shadowed variable declarations.
    One notable case was that hash size should have been unsigned.

    Signed-off-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    Stephen Hemminger
     
  • This should no longer be necessary because fackets_out is
    accurate. It indicates bugs elsewhere, thus report it.

    Signed-off-by: Ilpo Järvinen
    Signed-off-by: David S. Miller

    Ilpo Järvinen
     
  • Signed-off-by: Ilpo Järvinen
    Signed-off-by: David S. Miller

    Ilpo Järvinen