1. 03 6月, 2014 15 次提交
    • E
      net: mvneta: Limit the TSO segments and adjust stop/wake thresholds · 8eef5f97
      Ezequiel Garcia 提交于
      Currently small MSS values may require too many TSO descriptors for
      the default queue size. This commit prevents this situation by fixing
      the maximum supported TSO number of segments to 100 and by setting a
      minimum Tx queue size. The minimum Tx queue size is set so that at
      least 2 worst-case skb can be accommodated.
      
      In addition, the queue stop and wake thresholds values are adjusted
      accordingly. The queue is stopped when there's room for only 1 worst-case
      skb and waked when the number of descriptors is half that value.
      Signed-off-by: NEzequiel Garcia <ezequiel.garcia@free-electrons.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      8eef5f97
    • E
      net: mvneta: Use default NAPI weight instead of a custom one · 9fa9379d
      Ezequiel Garcia 提交于
      This driver has no need for a custom NAPI weigth. Use the default
      one, which has the same value.
      Signed-off-by: NEzequiel Garcia <ezequiel.garcia@free-electrons.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9fa9379d
    • D
      macvlan: add netpoll support · 688cea83
      dingtianhong 提交于
      Add netpoll support to macvlan devices. Based on the netpoll support in the 802.1q vlan code.
      
      Tested and macvlan could work well with netconsole.
      Signed-off-by: NDing Tianhong <dingtianhong@huawei.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      688cea83
    • B
      net: cdc_ncm: allow tuning min_tx_pkt · 39eb7e0e
      Bjørn Mork 提交于
      The min_tx_pkt variable decides the cutoff point where the driver
      will stop padding out NTBs to maximum size. The padding is a tradeoff
      where we use some USB bus bandwidth to allow the device to receive
      fixed size buffers. Different devices will have different optimal
      settings, spanning from no padding at all to padding every NTB.
      There is no way to automatically figure out which setting is best
      for a specific device.
      
      The default value is a reasonable tradeoff, calculated based on the
      USB packet size and out NTB max size. This may have to be changed
      along with any tx_max changes.
      Signed-off-by: NBjørn Mork <bjorn@mork.no>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      39eb7e0e
    • B
      net: cdc_ncm: export NCM Transfer Block (NTB) parameters · 871578c9
      Bjørn Mork 提交于
      The mandatory GetNtbParameters control request is an important part of
      the host <-> device protocol negotiation in CDC NCM (and CDC MBIM). It
      gives device limits which the host must obey when configuring the
      protocol aggregation variables. The driver will enforce this by
      rejecting attempts to set any of the tunable variables to a value
      which is not supported by the device.  Exporting the parameter block
      helps userspace decide which values are allowed without resorting
      to trial and error.
      Signed-off-by: NBjørn Mork <bjorn@mork.no>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      871578c9
    • B
      net: cdc_ncm: drop ethtool coalesce support · e368d27f
      Bjørn Mork 提交于
      The ethtool coalesce API is not applicable for this driver. Forcing
      it to fit the NCM aggregation redefined the API in a driver specific
      way, which is much worse than defining a clean new API. These ethtool
      coalesce functions have therefore been replaced by a new sysfs API.
      Signed-off-by: NBjørn Mork <bjorn@mork.no>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      e368d27f
    • B
      net: cdc_ncm: use sysfs for rx/tx aggregation tuning · 289507d3
      Bjørn Mork 提交于
      Attach a driver specific sysfs group to the netdev, and use it
      for the rx/tx aggregation variables.
      
      The datagram aggregation defined by the CDC NCM specification is
      specific to this device class (including CDC MBIM). Using the
      ethtool interrupt coalesce API as an interface to the aggregation
      parameters redefined that API in a driver specific and confusing
      way.  A sysfs group
       - makes it clear that this is a driver specific userspace API, and
       - allows us to export the real values instead of some translated
         version, and
       - lets us include more aggregation variables which were impossible
         to force into the ethtool API.
      
      Additionally, using sysfs allows tuning the driver on space
      constrained hosts where userspace tools like ethtool are undesired.
      Suggested-by: NPeter Stuge <peter@stuge.se>
      Signed-off-by: NBjørn Mork <bjorn@mork.no>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      289507d3
    • B
      net: cdc_ncm: inform usbnet when rx buffers are reduced · f42763db
      Bjørn Mork 提交于
      It doesn't matter whether the buffer size goes up or down.  We have to
      keep usbnet and device syncronized to be able to split transfers at the
      correct boundaries. The spec allow skipping short packets when using
      max sized transfers.  If we don't tell usbnet about our new expected rx
      buffer size, then it will merge and/or split NTBs.  The driver does not
      support this, and the result will be lots of framing errors.
      
      Fix by always reallocating usbnet rx buffers when the rx_max value
      changes.
      
      Fixes: 68864abf ("net: cdc_ncm: support rx_max/tx_max updates when running")
      Signed-off-by: NBjørn Mork <bjorn@mork.no>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f42763db
    • B
      net: cdc_ncm: always reallocate tx_curr_skb when tx_max increases · 1ba5d0ff
      Bjørn Mork 提交于
      We are calling usbnet_start_xmit() to flush any remaining data,
      depending on the side effect that tx_curr_skb is set to NULL,
      ensuring a new allocation using the updated tx_max.  But this
      side effect will only happen if there were any cached data ready
      to transmit. If not, then an empty tx_curr_skb is still allocated
      using the old tx_max size. Free it to avoid a buffer overrun.
      
      Fixes: 68864abf ("net: cdc_ncm: support rx_max/tx_max updates when running")
      Signed-off-by: NBjørn Mork <bjorn@mork.no>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      1ba5d0ff
    • B
      net: cdc_ncm: reduce skb truesize in rx path · 1e2c6117
      Bjørn Mork 提交于
      Cloning the big skbs we use for USB buffering chokes up TCP and
      SCTP because the socket memory limits are hitting earlier than
      they should. It is better to unconditionally copy the unwrapped
      packets to freshly allocated skbs.
      Reported-by: NJim Baxter <jim_baxter@mentor.com>
      Acked-by: NEric Dumazet <edumazet@google.com>
      Signed-off-by: NBjørn Mork <bjorn@mork.no>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      1e2c6117
    • D
      macvlan: fix the problem when mac address changes for passthru mode · e289fd28
      dingtianhong 提交于
      The macvlan dev should always have the same mac address like lowerdev
      when in the passthru mode, change the mac address alone will break the
      work mechanism, so when the lowerdev or macvlan mac address changes,
      we should propagate the changes to another dev.
      
      v1->v2: Allow macvlan dev to change mac address for passthru mode and propagate to
      	lowerdev.
      
      v2->v3: Don't set the mac address to the lower dev's unicast address for
      	passthru mode when mac address changes.
      Signed-off-by: NDing Tianhong <dingtianhong@huawei.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      e289fd28
    • C
      net: stmmac: Handle different error codes from platform_get_irq_byname · d7ec8584
      Chen-Yu Tsai 提交于
      The following patch moved device tree interrupt resolution into
      platform_get_irq_byname:
      
        ad69674e of/irq: do irq resolution in platform_get_irq_byname()
      
      As a result, the function no longer only return -ENXIO on error.
      This breaks DT based probing of stmmac, as seen in test runs of
      linux-next next-20140526 cubie2-sunxi_defconfig:
      
        http://lists.linaro.org/pipermail/kernel-build-reports/2014-May/003659.html
      
      This patch makes the stmmac_platform probe function properly handle
      error codes, such as returning for deferred probing, and other codes
      returned by of_irq_get_by_name.
      Signed-off-by: NChen-Yu Tsai <wens@csie.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d7ec8584
    • E
      inetpeer: get rid of ip_id_count · 73f156a6
      Eric Dumazet 提交于
      Ideally, we would need to generate IP ID using a per destination IP
      generator.
      
      linux kernels used inet_peer cache for this purpose, but this had a huge
      cost on servers disabling MTU discovery.
      
      1) each inet_peer struct consumes 192 bytes
      
      2) inetpeer cache uses a binary tree of inet_peer structs,
         with a nominal size of ~66000 elements under load.
      
      3) lookups in this tree are hitting a lot of cache lines, as tree depth
         is about 20.
      
      4) If server deals with many tcp flows, we have a high probability of
         not finding the inet_peer, allocating a fresh one, inserting it in
         the tree with same initial ip_id_count, (cf secure_ip_id())
      
      5) We garbage collect inet_peer aggressively.
      
      IP ID generation do not have to be 'perfect'
      
      Goal is trying to avoid duplicates in a short period of time,
      so that reassembly units have a chance to complete reassembly of
      fragments belonging to one message before receiving other fragments
      with a recycled ID.
      
      We simply use an array of generators, and a Jenkin hash using the dst IP
      as a key.
      
      ipv6_select_ident() is put back into net/ipv6/ip6_output.c where it
      belongs (it is only used from this file)
      
      secure_ip_id() and secure_ipv6_id() no longer are needed.
      
      Rename ip_select_ident_more() to ip_select_ident_segs() to avoid
      unnecessary decrement/increment of the number of segments.
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      73f156a6
    • A
      enic: Update driver to use __dev_uc/mc_sync/unsync calls · f009618a
      Alexander Duyck 提交于
      This change updates the enic driver to make use of __dev_uc_sync and
      __dev_mc_sync calls.  Previously the driver was doing its own list
      management by storing the mc_addr and uc_addr list in a 32 address array.
      With this change the sync data is stored in the netdev_addr_list structures
      and instead we just track how many addresses we have written to the device.
      When we encounter 32 we stop and print a message as occurred previously with
      the old approach.
      
      Other than the core change the only other bit needed was to propagate the
      constant attribute with the MAC address as there were several spots where
      is twas only passed as a u8 * instead of a const u8 *.
      
      This patch is meant to maintain the original functionality without the use
      of the mc_addr and uc_addr arrays.
      Signed-off-by: NAlexander Duyck <alexander.h.duyck@intel.com>
      Acked-by: NGovindarajulu Varadarajan <_govind@gmx.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f009618a
    • E
      stmmac: Remove spin_lock call in stmmac_get_pauseparam() · 86c92ee3
      Emil Goode 提交于
      The following patch removed unnecessary spin_lock/unlock calls
      in ethtool_ops callback functions. In the second and final version
      of the patch one spin_lock call was left behind.
      
      commit cab6715c
      Author: Yang Wei <Wei.Yang@windriver.com>
      Date:   Sun May 25 09:53:44 2014 +0800
      
          net: driver: stmicro: Remove some useless the lock protection
      
      This introduced the following sparse warning:
      
      drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c:424:1: warning:
      	context imbalance in 'stmmac_get_pauseparam' -
      	different lock contexts for basic block
      Signed-off-by: NEmil Goode <emilgoode@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      86c92ee3
  2. 02 6月, 2014 5 次提交
  3. 31 5月, 2014 14 次提交
  4. 30 5月, 2014 6 次提交