29 Jan, 2008

40 commits

  • When merging the input paths of IPsec I accidentally left a hard-coded
    AF_INET for the state lookup call. This broke IPv6 obviously. This
    patch fixes by getting the input callers to specify the family through
    skb->cb.

    Credit goes to Kazunori Miyazawa for diagnosing this and providing an
    initial patch.

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

    Herbert Xu
     
  • System calls should be USER. So change the BH to USER for
    UDP*_INC_STATS_BH().

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

    Wang Chen
     
  • Since we have macro IS_UDPLITE, we can use it.

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

    Wang Chen
     
  • Thanks dave, herbert, gerrit, andi and other people for your
    discussion about this problem.

    UdpInDatagrams can be confusing because it counts packets that
    might be dropped later.
    Move UdpInDatagrams into recvmsg() as allowed by the RFC.

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

    Wang Chen
     
  • Pointing to the next skb is necessary to avoid referencing
    already SACKed skbs which will soon be on a separate list.

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

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

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

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

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

    Ilpo Järvinen
     
  • Lines won't be that long and it's compiler's job to optimize
    them.

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

    Ilpo Järvinen
     
  • They better be valid when call to write_queue functions is made
    once things that follow are going in.

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

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

    Ilpo Järvinen
     
  • Bogus seqno compares just mislead, the code is identical for
    both sides of the seqno compare (and was even executed just
    once because of return in between).

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

    Ilpo Järvinen
     
  • To get there, highest_sack must have advanced. When it advances,
    a new skb is SACKed, which already sets that FLAG. Besides, the
    original purpose of it has puzzled me, never understood why
    LOST bit setting of retransmitted skb is marked with
    FLAG_DATA_SACKED.

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

    Ilpo Järvinen
     
  • Usually those skbs will have L set, not counting them as lost
    retransmissions is misleading.

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

    Ilpo Järvinen
     
  • This looks very much like the patch for ipv4's devinet.

    This is also intended to help us with the net namespaces
    and saves the ipv6.ko size by ~320 bytes.

    The difference from the first version is just the patch
    offsets, that changed due to changes in the patch #2.

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

    Pavel Emelyanov
     
  • Currently this call is (ab)used similar to devinet one - it
    registers sysctls for devices and for the "default" confs, while
    the "all" sysctls are registered separately. But unlike its
    devinet brother, the passed inet6_device is needed.

    The fix is to make a __addrconf_sysctl_register(), which registers
    sysctls for all "devices" we need, including "default" and "all" :)

    The original addrconf_sysctl_register() calls the introduced
    function, passing the inet6_device, device name and ifindex (to
    be used as procname and ctl_name) into it.

    Thanks to Herbert again for pointing out, that we can shrink the
    argument list to 1 :)

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

    Pavel Emelyanov
     
  • This looks very much like the patch for neighbors.

    The path is also located on the stack and is prepared
    inside the function. This time, the call to the registering
    function is guarded with the RTNL lock, but I decided
    to keep it on the stack not to litter the devinet.c file
    with unneeded names and to make it look similar to the
    neighbors code.

    This is also intended to help us with the net namespaces
    and saves the vmlinux size as well - this time by more
    than 670 bytes.

    The difference from the first version is just the patch
    offsets, that changed due to changes in the patch #2.

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

    Pavel Emelyanov
     
  • Currently this call is used to register sysctls for devices
    and for the "default" confs. The "all" sysctls are registered
    separately.

    Besides, the inet_device is passed to this function, but it is
    not needed there at all - just the device name and ifindex are
    required.

    Thanks to Herbert, who noticed, that this call doesn't even
    require the devconf pointer (the last argument) - all we need
    we can take from the in_device itself.

    The fix is to make a __devinet_sysctl_register(), which registers
    sysctls for all "devices" we need, including "default" and "all" :)

    The original devinet_sysctl_register() works with struct net_device,
    not the inet_device, and calls the introduced function, passing
    the device name and ifindex (to be used as procname and ctl_name)
    into it.

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

    Pavel Emelyanov
     
  • Schedule softmac for for removal in the 2.6.26 development window.

    Signed-off-by: John W. Linville
    Signed-off-by: David S. Miller

    John W. Linville
     
  • Schedule bcm43xx for for removal in the 2.6.26 development window.

    Signed-off-by: John W. Linville
    Signed-off-by: David S. Miller

    John W. Linville
     
  • These bits were dead code before "mac80211: Remove local->scan_flags"
    (commit 6681dd3fd0e4d36a4547415853e83411baa7b705) and probably should
    have been removed as part of that commit.

    Signed-off-by: John W. Linville
    Signed-off-by: David S. Miller

    John W. Linville
     
  • This patch moves u8 amsdu_frame in ieee80211_txrx_data to the flags
    section as IEEE80211_TXRXD_RX_AMSDU

    Signed-off-by: Ron Rindjunsky
    Signed-off-by: John W. Linville
    Signed-off-by: David S. Miller

    Ron Rindjunsky
     
  • This patch configures the 802.11n mode of operation
    internally in ieee80211_conf structure and in the low-level
    driver as well (through op conf_ht).
    It does not include AP configuration flows.

    Signed-off-by: Ron Rindjunsky
    Signed-off-by: John W. Linville
    Signed-off-by: David S. Miller

    Ron Rindjunsky
     
  • This patch adds the ability to receive and handle A-MSDU frames.

    Signed-off-by: Ron Rindjunsky
    Signed-off-by: John W. Linville
    Signed-off-by: David S. Miller

    Ron Rindjunsky
     
  • This patch adds the capability to identify and answer an add block ACK
    request.
    As this series of patches only adds HT handling with no aggregations,
    (A-MPDU aggregations acceptance is not obligatory according to 802.11n
    draft) we are currently sending back a refusal upon this request.

    Signed-off-by: Ron Rindjunsky
    Signed-off-by: John W. Linville
    Signed-off-by: David S. Miller

    Ron Rindjunsky
     
  • This patch presents the ability to parse and compose HT IEs, and to put
    the IE relevant data inside the mac80211's internal HT structures

    Signed-off-by: Ron Rindjunsky
    Signed-off-by: John W. Linville
    Signed-off-by: David S. Miller

    Ron Rindjunsky
     
  • New structures:
    - ieee80211_ht_info: describing STA's HT capabilities
    - ieee80211_ht_bss_info: describing BSS's HT characteristics
    Changed structures:
    - ieee80211_hw_mode: now also holds PHY HT capabilities for each HW mode
    - ieee80211_conf: ht_conf holds current self HT configuration
    ht_bss_conf holds current BSS HT configuration
    - flag IEEE80211_CONF_SUPPORT_HT_MODE added to indicate if HT use is
    desired
    - sta_info: now also holds Peer's HT capabilities

    Signed-off-by: Ron Rindjunsky
    Signed-off-by: John W. Linville
    Signed-off-by: David S. Miller

    Ron Rindjunsky
     
  • This patch adds MAC80211_HT_DEBUG config variable
    to separate HT debug features

    Signed-off-by: Ron Rindjunsky
    Signed-off-by: John W. Linville
    Signed-off-by: David S. Miller

    Ron Rindjunsky
     
  • This patch allows wpa_supplicant to set the drop_unencrypted setting in
    mac80211.

    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville
    Signed-off-by: David S. Miller

    Johannes Berg
     
  • Interface iteration in mac80211 can be done without holding any
    locks because I converted it to RCU. Initially, I thought this
    wouldn't be needed for ieee80211_iterate_active_interfaces but
    it's turning out that multi-BSS AP support can be much simpler
    in a driver if ieee80211_iterate_active_interfaces can be called
    without holding locks. This converts it to use RCU, it adds a
    requirement that the callback it invokes cannot sleep.

    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville
    Signed-off-by: David S. Miller

    Johannes Berg
     
  • This patch restructures the Rx handlers chain by incorporating previously
    handlers ieee80211_rx_h_802_1x_pae and ieee80211_rx_h_drop_unencrypted
    into ieee80211_rx_h_data, already in 802.3 form. this scheme follows more
    precisely after the IEEE802.11 data plane archituecture, and will prevent
    code duplication to IEEE8021.11n A-MSDU handler.

    added function:
    - ieee80211_data_to_8023: transfering 802.11 data frames to 802.3 frame
    - ieee80211_deliver_skb: delivering the 802.3 frames to upper stack
    eliminated handlers:
    - ieee80211_rx_h_drop_unencrypted: now function ieee80211_drop_unencrypted
    - ieee80211_rx_h_802_1x_pae: now function ieee80211_802_1x_pae
    changed handlers:
    - ieee80211_rx_h_data: now contains calls to four above function

    Signed-off-by: Ron Rindjunsky
    Acked-by: Johannes Berg
    Signed-off-by: John W. Linville
    Signed-off-by: David S. Miller

    Ron Rindjunsky
     
  • The scan code in mac80211 makes the software scan assumption in various
    places. For example, we stop the Tx queue during a software scan so that
    all the Tx packets will be queued by the stack. We also drop frames not
    related to scan in the software scan process. But these are not true for
    hardware scan.

    Some wireless hardwares (for example iwl3945/4965) has the ability to
    perform the whole scan process by hardware and/or firmware. The hardware
    scan is relative powerful in that it tries to maintain normal network
    traffic while doing a scan in the background. Some drivers (i.e iwlwifi)
    do provide a way to tune the hardware scan parameters (for example if the
    STA is associated, what's the max time could the STA leave from the
    associated channel, how long the scans get suspended after returning to
    the service channel, etc). But basically this is transparent to the
    stack. mac80211 should not stop Tx queues or drop Rx packets during a
    hardware scan.

    This patch resolves the above problem by spliting the current scan
    indicator local->sta_scanning into local->sta_sw_scanning and
    local->sta_hw_scanning. It then changes the scan related code to be aware
    of hardware scan or software scan in various places. With this patch,
    iwlwifi performs much better in the scan-while-associated condition and
    disable_hw_scan=1 should never be required.

    Cc: Mohamed Abbas
    Cc: Ben Cahill
    Signed-off-by: Zhu Yi
    Acked-by: Johannes Berg
    Signed-off-by: John W. Linville
    Signed-off-by: David S. Miller

    Zhu Yi
     
  • This only includes fixing the space-indented lines and
    removing one unneeded else after the goto.

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

    Pavel Emelyanov
     
  • I moved the call to kmalloc() from the *t declaration into
    the code (this is confusing when a variable is initialized
    with the result of some call) and removed unneeded comment
    near the error path. Just like I did with the neigh ctl-s.

    Besides, I fixed the goto's and the labels - they were indented
    with spaces :(

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

    Pavel Emelyanov
     
  • The appropriate path is prepared right inside this function. It
    is prepared similar to how the ctl tables were.

    Since the path is modified, it is put on the stack, to avoid
    possible races with multiple calls to neigh_sysctl_register() : it
    is called by protocols and I didn't find any protection in this
    case. Did I overlooked the rtnl lock?.

    The stack growth of the neigh_sysctl_register() is 40 bytes. I
    believe this is OK, since this is not that much and this function
    is not called with the deep stack (device/protocols register).

    The device's name is stored on the template to free it later.

    This will help with the net namespaces, as each namespace should
    have its own set of these ctls.

    Besides, this saves ~350 bytes from the neigh template :)

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

    Pavel Emelyanov
     
  • This mainly removes the err variable, as this call always
    return the same error code (-ENOBUFS).

    Besides, I moved the call to kmalloc() from the *t declaration
    into the code (this is confusing when a variable is initialized
    with the result of some call) and removed unneeded comment near
    the error path.

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

    Pavel Emelyanov
     
  • This is the core.

    * add the ctl_table_header on the struct net;
    * make the unix_sysctl_register and _unregister clone the table;
    * moves calls to them into per-net init and exit callbacks;
    * move the .data pointer in the proper place.

    Signed-off-by: Pavel Emelyanov
    Acked-by: Eric W. Biederman
    Signed-off-by: Herbert Xu
    Signed-off-by: David S. Miller

    Pavel Emelyanov
     
  • Unlike previous ones, this patch is useful by its own,
    as it decreases the vmlinux size :)

    But it will be used later, when the per-namespace sysctl
    is added.

    Signed-off-by: Pavel Emelyanov
    Acked-by: Eric W. Biederman
    Signed-off-by: Herbert Xu
    Signed-off-by: David S. Miller

    Pavel Emelyanov
     
  • This will make all the sub-namespaces always use the
    default value (10) and leave the tuning via sysctl
    to the init namespace only.

    Per-namespace tuning is coming.

    Signed-off-by: Pavel Emelyanov
    Acked-by: Eric W. Biederman
    Signed-off-by: Herbert Xu
    Signed-off-by: David S. Miller

    Pavel Emelyanov