04 Sep, 2013

38 commits

  • We used to poll vhost queue before making DMA is done, this is racy if vhost
    thread were waked up before marking DMA is done which can result the signal to
    be missed. Fix this by always polling the vhost thread before DMA is done.

    Signed-off-by: Jason Wang
    Signed-off-by: David S. Miller

    Jason Wang
     
  • Currently, even if the packet length is smaller than VHOST_GOODCOPY_LEN, if
    upend_idx != done_idx we still set zcopy_used to true and rollback this choice
    later. This could be avoided by determining zerocopy once by checking all
    conditions at one time before.

    Signed-off-by: Jason Wang
    Signed-off-by: David S. Miller

    Jason Wang
     
  • Let vhost_add_used() to use vhost_add_used_n() to reduce the code
    duplication. To avoid the overhead brought by __copy_to_user(). We will use
    put_user() when one used need to be added.

    Signed-off-by: Jason Wang
    Signed-off-by: David S. Miller

    Jason Wang
     
  • We tend to batch the used adding and signaling in vhost_zerocopy_callback()
    which may result more than 100 used buffers to be updated in
    vhost_zerocopy_signal_used() in some cases. So switch to use
    vhost_add_used_and_signal_n() to avoid multiple calls to
    vhost_add_used_and_signal(). Which means much less times of used index
    updating and memory barriers.

    2% performance improvement were seen on netperf TCP_RR test.

    Signed-off-by: Jason Wang
    Signed-off-by: David S. Miller

    Jason Wang
     
  • None of its caller use its return value, so let it return void.

    Signed-off-by: Jason Wang
    Signed-off-by: David S. Miller

    Jason Wang
     
  • Use the wrapper functions for getting and setting the driver data
    using pci_dev instead of using dev_{get,set}_drvdata() with
    &pdev->dev, so we can directly pass a struct pci_dev. This is
    a purely cosmetic change.

    Signed-off-by: Jingoo Han
    Signed-off-by: David S. Miller

    Jingoo Han
     
  • Use the wrapper functions for getting and setting the driver data
    using pci_dev instead of using dev_{get,set}_drvdata() with
    &pdev->dev, so we can directly pass a struct pci_dev. This is
    a purely cosmetic change.

    Signed-off-by: Jingoo Han
    Signed-off-by: David S. Miller

    Jingoo Han
     
  • Use the wrapper functions for getting and setting the driver data
    using platform_device instead of using dev_{get,set}_drvdata()
    with &pdev->dev, so we can directly pass a struct platform_device.
    This is a purely cosmetic change.

    Signed-off-by: Jingoo Han
    Signed-off-by: David S. Miller

    Jingoo Han
     
  • Use the wrapper functions for getting and setting the driver data
    using platform_device instead of using dev_{get,set}_drvdata()
    with &pdev->dev, so we can directly pass a struct platform_device.
    This is a purely cosmetic change.

    Signed-off-by: Jingoo Han
    Signed-off-by: David S. Miller

    Jingoo Han
     
  • Use the wrapper functions for getting and setting the driver data
    using platform_device instead of using dev_{get,set}_drvdata()
    with &pdev->dev, so we can directly pass a struct platform_device.
    This is a purely cosmetic change.

    Signed-off-by: Jingoo Han
    Signed-off-by: David S. Miller

    Jingoo Han
     
  • This function is being removed, so remove the reference to it.

    Signed-off-by: Joe Perches
    Signed-off-by: David S. Miller

    Joe Perches
     
  • This function is being removed, rename the reference.

    Signed-off-by: Joe Perches
    Acked-by: Antonio Quartulli
    Signed-off-by: David S. Miller

    Joe Perches
     
  • Convert the llc_ static inlines to the
    equivalents from etherdevice.h and remove
    the llc_ static inline functions.

    llc_mac_null -> is_zero_ether_addr
    llc_mac_multicast -> is_multicast_ether_addr
    llc_mac_match -> ether_addr_equal

    Signed-off-by: Joe Perches
    Signed-off-by: David S. Miller

    Joe Perches
     
  • Use the new bool function ether_addr_equal to add
    some clarity and reduce the likelihood for misuse
    of compare_ether_addr for sorting.

    Done via cocci script: (and a little typing)

    $ cat compare_ether_addr.cocci
    @@
    expression a,b;
    @@
    - !compare_ether_addr(a, b)
    + ether_addr_equal(a, b)

    @@
    expression a,b;
    @@
    - compare_ether_addr(a, b)
    + !ether_addr_equal(a, b)

    @@
    expression a,b;
    @@
    - !ether_addr_equal(a, b) == 0
    + ether_addr_equal(a, b)

    @@
    expression a,b;
    @@
    - !ether_addr_equal(a, b) != 0
    + !ether_addr_equal(a, b)

    @@
    expression a,b;
    @@
    - ether_addr_equal(a, b) == 0
    + !ether_addr_equal(a, b)

    @@
    expression a,b;
    @@
    - ether_addr_equal(a, b) != 0
    + ether_addr_equal(a, b)

    @@
    expression a,b;
    @@
    - !!ether_addr_equal(a, b)
    + ether_addr_equal(a, b)

    Signed-off-by: Joe Perches
    Signed-off-by: David S. Miller

    Joe Perches
     
  • Signed-off-by: Liu Junliang
    Signed-off-by: David S. Miller

    Liu Junliang
     
  • SkyHawk-R can support VEB or VEPA mode.
    This patch will allow the user to set/query this switch setting.

    Signed-off-by: Ajit Khaparde
    Signed-off-by: David S. Miller

    Ajit Khaparde
     
  • The name of the function in the comment is __skb_alloc_page() while we
    are actually commenting __skb_alloc_pages(). Fix this typo and make it
    a valid kernel doc comment.

    Signed-off-by: Florian Fainelli
    Signed-off-by: David S. Miller

    Florian Fainelli
     
  • Fix the amount of sent bytes reported to BQL by reporting the
    number of bytes on wire in the xmit routine, and recording that
    value for each skb in order to be correctly confirmed on Tx
    confirmation cleanup.

    Reporting skb->len to BQL just before exiting xmit is not correct
    due to possible insertions of TOE block and alignment bytes in the
    skb->data, which are being stripped off by the controller before
    transmission on wire. This led to mismatch of (incorrectly)
    reported bytes to BQL b/w xmit and Tx confirmation, resulting in
    Tx timeout firing, for the h/w tx timestamping acceleration case.

    There's no easy way to obtain the number of bytes on wire in the Tx
    confirmation routine, so skb->cb is used to convey that information
    from xmit to Tx confirmation, for now (as proposed by Eric). Revived
    the currently unused GFAR_CB() construct for that purpose.

    Signed-off-by: Claudiu Manoil

    Cc: Eric Dumazet
    Signed-off-by: David S. Miller

    Claudiu Manoil
     
  • When my 'ifup eth' script was fired multiple times and ran concurrent on
    my laptop, for some obscure /etc scripting reason, it was revealed
    that the store_enabled() function in netconsole doesn't handle it nicely,
    as recorded by the Oops below (a syslog paste, but not mangled too much
    to prevent from discerning the traceback).

    On Linux 3.10.4, this patch seeks to remedy the problem, and it has been
    running stable on my laptop for a few days.

    [52608.609325] BUG: unable to handle kernel NULL pointer dereference at 00000000000003e0
    [52608.609331] IP: [] __netpoll_cleanup+0x27/0xe0
    [52608.609339] PGD 15e51a067 PUD 15433e067 PMD 0
    [52608.609343] Oops: 0000 [#1] SMP re firewire_ohci firewire_core crc_itu_t [last unloaded: kvm_intel]
    [52608.609347] Modules linked in: kvm_intel tun vfat fat ppdev parport_pc parport fuse ipt_MASQUERADE usb_storage nf_conntrack_netbios_ns nf_conn [..garbled..]
    [52608.609433] RAX: 0000000000000000 RBX: ffff880210bbcc68 RCX: 0000000000000000
    [52608.609435] RDX: 0000000000000000 RSI: ffff8801ba447da0 RDI: ffff880210bbcc68
    [52608.609437] RBP: ffff8801ba447e18 R08: 0000000000000000 R09: 0000000000000001
    [52608.609439] R10: 000000000000000a R11: f000000000000000 R12: ffff880210bbcc68
    [52608.609441] R13: ffff88020bc41000 R14: 0000000000000002 R15: 000000000000000200000000000
    [52608.609443] FS: 00007f38d7bff740(0000) GS:ffff88021dc40000(0000) knlGS:0000000000000000
    [52608.609446] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003300000000001427e0
    [52608.609448] CR2: 00000000000003e0 CR3: 0000000154103000 CR4: 00000000001427e0
    [52608.609450] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [52608.609452] netpoll: netconsole: local port 6665ess 10.0.0.27
    [52608.609454] netpoll: netconsole: local IPv4 address 10.0.0.27
    [52608.609456] netpoll: netconsole: interface 'em1'
    [52608.609457] netpoll: netconsole: remote port 514ress 10.0.0.15
    [52608.609459] netpoll: netconsole: remote IPv4 address 10.0.0.15:65:a8:9a:c7
    [52608.609461] netpoll: netconsole: remote ethernet address 1c:6f:65:a8:9a:c7
    [52608.609463] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
    [52608.609464] Stack:801ba447e08 ffff880210bbcc68 ffffffffffffffea ffff88020bc41000
    [52608.609466] ffff8801ba447e08 ffff880210bbcc68 ffffffffffffffea ffff88020bc41000
    [52608.609471] 0000000000000002 0000000000000002 ffff8801ba447e38 ffffffff81532af4
    [52608.609475] 0000000000000000 ffff880210bbcc00 ffff8801ba447e78 ffffffff81420e7c
    [52608.609479] Call Trace:
    [52608.609484] [] netpoll_cleanup+0x24/0x50
    [52608.609489] [] store_enabled+0x5c/0xe0
    [52608.609492] [] netconsole_target_attr_store+0x2e/0x40
    [52608.609498] [] configfs_write_file+0xd2/0x130
    [52608.609503] [] vfs_write+0xc5/0x1f0
    [52608.609506] [] SyS_write+0x52/0xa0/0x10
    [52608.609511] [] ? do_page_fault+0xe/0x10
    [52608.609516] [] system_call_fastpath+0x16/0x1b
    [52608.609517] Code: 1f 44 00 00 0f 1f 44 00 00 55 48 89 e5 48 83 ec 30 4c 89 65 e0 48 89 5d d8 49 89 fc 4c 89 6d e8 4c 89 75 f0 4c 89 7d f8 48 8 [..garbled..]
    [52608.609559] RIP [] __netpoll_cleanup+0x27/0xe0
    [52608.609563] RSP
    [52608.609564] CR2: 00000000000003e0
    [52608.609567] ---[ end trace d25ec343349b61d2 ]---

    Signed-off-by: Dan Aloni
    Signed-off-by: Neil Horman
    CC: David S. Miller
    Signed-off-by: David S. Miller

    Dan Aloni
     
  • This corrects an oversight when r8a7790 support was added to sh_eth.

    Signed-off-by: Kouei Abe
    Signed-off-by: Simon Horman
    Signed-off-by: David S. Miller

    Kouei Abe
     
  • Signed-off-by: Kouei Abe
    Signed-off-by: Simon Horman
    Signed-off-by: David S. Miller

    Kouei Abe
     
  • Store VID in ->vlan_id (if any), and remove the useless ->tag.

    CC: Jay Vosburgh
    CC: Andy Gospodarek
    Signed-off-by: Veaceslav Falico
    Signed-off-by: David S. Miller

    Veaceslav Falico
     
  • We're using it currently to verify if we have vlans before getting the tag
    from the skb we're about to send. It's useless because the vlan_get_tag()
    verifies if the skb has the tag (and returns an error if not), and we can
    receive tagged skbs only if we *already* have vlans.

    Plus, the current RCUed implementation is kind of useless anyway - the we
    can remove the last vlan in the moment we return from the function.

    So remove the only usage of it and the whole function.

    CC: Jay Vosburgh
    CC: Andy Gospodarek
    Signed-off-by: Veaceslav Falico
    Signed-off-by: David S. Miller

    Veaceslav Falico
     
  • Marc Kleine-Budde says:

    ====================
    this is a pull request for net-next. There are two patches from Gerhard
    Sittig, which improves the clock handling on mpc5121. Oliver Hartkopp
    provides a patch that adds a per rule limitation of frame hops.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • John W. Linville says:

    ====================
    Please accept this batch of updates intended for the 3.12 stream.

    For the mac80211 bits, Johannes says this:

    "This time I have various improvements all over the place: IBSS, mesh,
    testmode, AP client powersave handling, one of the rare rfkill patches
    and some code cleanup."

    Also for mac80211:

    "And I also have some more changes for -next, just a few small fixes and
    improvements, nothing really stands out."

    And for iwlwifi:

    "This time I have some powersave work (notably uAPSD support), CQM
    offloads, support for a new firmware API and various code cleanups."

    Regarding the Bluetooth bits, Gustavo says:

    "Patches to 3.12, here we have:

    * implementation of a proper tty_port for RFCOMM devices, this fixes some
    issues people were seeing lately in the kernel.
    * Add voice_setting option for SCO, it is used for SCO Codec selection
    * bugfixes, small improvements and clean ups"

    For the NFC bits, Samuel says:

    "With this one we have:

    - A few pn533 improvements and minor fixes. Testing our pn533 driver
    against Google's NCI stack triggered a few issues that we fixed now.
    We also added Tx fragmentation support to this driver.

    - More NFC secure element handling. We added a GET_SE netlink command
    for getting all the discovered secure elements, and we defined 2
    additional secure element netlink event (transaction and connectivity).
    We also fixed a couple of typos and copy-paste bugs from the secure
    element handling code.

    - Firmware download support for the pn544 driver. This chipset can enter a
    special mode where it's waiting for firmware blobs to replace the
    already flashed one. We now support that mode."

    With repect to the ath tree, Kalle says:

    "New features in ath10k are rx/tx checsumming in hw and survey scan
    implemented by Michal. Also he made fixes to different areas of the
    driver, most notable being fixing the case when using two streams and
    reducing the number of interface combinations to avoid firmware crashes.
    Bartosz did a clean related to how we handle SoC power save in PCI
    layer.

    For ath6kl Mohammed and Vasanth sent each a patch to fix two infrequent
    crashes."

    I also pulled the wireless tree into wireless-next to support a
    request from Johannes. On top of all that, there are the usual
    sort of driver updates. The mwifiex, brcmfmac, brcmsmac, ath9k,
    and rt2x00 drivers all get some attention, as does the bcma bus and
    a few other random bits here and there.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • This is a follow-up commit for commit b1dcdc68b1f4 ("net: tcp_probe:
    allow more advanced ingress filtering by mark") that allows for
    advanced SCTP probe module filtering based on skb mark (for a more
    detailed description and advantages using mark, refer to b1dcdc68b1f4).
    The current option to filter by a given port is still being preserved.

    Signed-off-by: Daniel Borkmann
    Acked-by: Neil Horman
    Signed-off-by: David S. Miller

    Daniel Borkmann
     
  • This config option is superfluous in that it only guards a call
    to neigh_app_ns(). Enabling CONFIG_ARPD by default has no
    change in behavior. There will now be call to __neigh_notify()
    for each ARP resolution, which has no impact unless there is a
    user space daemon waiting to receive the notification, i.e.,
    the case for which CONFIG_ARPD was designed anyways.

    Suggested-by: Eric W. Biederman
    Cc: "David S. Miller"
    Cc: Alexey Kuznetsov
    Cc: James Morris
    Cc: Hideaki YOSHIFUJI
    Cc: Patrick McHardy
    Cc: "Eric W. Biederman"
    Cc: Gao feng
    Cc: Joe Perches
    Cc: Veaceslav Falico
    Signed-off-by: Tim Gardner
    Reviewed-by: "Eric W. Biederman"
    Signed-off-by: David S. Miller

    Tim Gardner
     
  • If the VIRTIO_NET_F_GUEST_CSUM virtio feature is available, the guest
    does not have to calculate the checksums on all received packets. This
    is pretty much the same feature as RX checksum offloading on real
    network cards, so the virtio-net driver should report this by setting
    the NETIF_F_RXCSUM flag. When the user now runs "ethtool -k", he or she
    can see whether the virtio-net interface has to calculate RX checksums
    or not.

    Signed-off-by: Thomas Huth
    Acked-by: Rusty Russell
    Signed-off-by: David S. Miller

    Thomas Huth
     
  • Bjørn Mork says:

    ====================
    net: set addr_assign_type when inheriting a dev_addr

    Copying the dev_addr from a parent device is an operation
    common to a number of drivers. The addr_assign_type should
    be updated accordingly, either by reusing the value from
    the source device or explicitly indicating that the address
    is stolen by setting addr_assign_type to NET_ADDR_STOLEN.

    This patch set adds a helper copying both the dev_addr and
    the addr_assign_type, and use this helper in drivers which
    don't currently set the addr_assign_type. Using NET_ADDR_STOLEN
    might be more appropriate in some of these cases. Please
    let me know, and I'll update the patch accordingly.

    Changes in v2:
    - assuming addr_len == ETH_ALEN to allow optimized memcpy
    - dropped the vt6656 patch due to addr_len being unset in that driver
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • A device inheriting a random or set address should reflect this in
    its addr_assign_type.

    Cc: Forest Bond
    Signed-off-by: Bjørn Mork
    Acked-by: Greg Kroah-Hartman
    Signed-off-by: David S. Miller

    Bjørn Mork
     
  • A device inheriting a random or set address should reflect this in
    its addr_assign_type.

    Acked-by: John W. Linville
    Signed-off-by: Bjørn Mork
    Signed-off-by: David S. Miller

    Bjørn Mork
     
  • A device inheriting a random or set address should reflect this in
    its addr_assign_type.

    Cc: Jouni Malinen
    Signed-off-by: Bjørn Mork
    Signed-off-by: David S. Miller

    Bjørn Mork
     
  • A device inheriting a random or set address should reflect this in
    its addr_assign_type.

    Acked-by: John W. Linville
    Signed-off-by: Bjørn Mork
    Signed-off-by: David S. Miller

    Bjørn Mork
     
  • A device inheriting a random or set address should reflect this in
    its addr_assign_type.

    Cc: Jiri Pirko
    Signed-off-by: Bjørn Mork
    Signed-off-by: David S. Miller

    Bjørn Mork
     
  • A device inheriting a random or set address should reflect this in
    its addr_assign_type.

    Cc: Patrick McHardy
    Signed-off-by: Bjørn Mork
    Signed-off-by: David S. Miller

    Bjørn Mork
     
  • A device inheriting a random or set address should reflect this in
    its addr_assign_type.

    Signed-off-by: Bjørn Mork
    Signed-off-by: David S. Miller

    Bjørn Mork
     
  • A device inheriting a random or set address should reflect this in
    its addr_assign_type.

    Cc: Patrick McHardy
    Signed-off-by: Bjørn Mork
    Signed-off-by: David S. Miller

    Bjørn Mork
     
  • Some etherdevices inherit their address from a parent or
    master device. The addr_assign_type should be updated along
    with the address in these cases. Adding a helper function
    to simplify this.

    Signed-off-by: Bjørn Mork
    Signed-off-by: David S. Miller

    Bjørn Mork
     

03 Sep, 2013

2 commits

  • Fengguang reported:

    net/built-in.o: In function `in6_dev_finish_destroy':
    (.text+0x4ca7d): undefined reference to `snmp_mib_free'

    this is due to snmp_mib_free() is defined when CONFIG_INET is enabled,
    but in6_dev_finish_destroy() is now moved to core kernel.

    I think snmp_mib_free() is small enough to be inlined, so just make it
    static inline.

    Reported-by: kbuild test robot
    Signed-off-by: Cong Wang
    Signed-off-by: David S. Miller

    Cong Wang
     
  • Fengguang reported a compile warning:

    drivers/net/vxlan.c: In function 'vxlan6_xmit_skb':
    drivers/net/vxlan.c:1352:3: error: implicit declaration of function 'csum_ipv6_magic' [-Werror=implicit-function-declaration]
    cc1: some warnings being treated as errors

    this patch fixes it.

    Reported-by: kbuild test robot
    Signed-off-by: Cong Wang
    Signed-off-by: David S. Miller

    Cong Wang