1. 22 May, 2014 40 commits
    • Veaceslav Falico's avatar
      bonding: populate essential new_slave->bond/dev early · dc73c41f
      Veaceslav Falico authored
      The new bond_free_slave() needs new_slave->bond to verify if additional
      structures were allocated, so populate it early so that, in case of failure
      in bond_enslave(), we would be able to get it.
      
      Also populate the new_slave->dev field, as it's too one of the most needed
      things to assign early.
      
      CC: Jay Vosburgh <j.vosburgh@gmail.com>
      CC: Andy Gospodarek <andy@greyhouse.net>
      Signed-off-by: default avatarVeaceslav Falico <vfalico@gmail.com>
      Acked-by: default avatarDing Tianhong <dingtianhong@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      dc73c41f
    • David S. Miller's avatar
      Merge branch 'genphy' · 11ee46f2
      David S. Miller authored
      Sascha Hauer says:
      
      ====================
      make of_set_phy_supported work with genphy driver
      
      The mdio phys recently gained support for specifying the phy speed
      via devicetree. This currently only works with the hardware specific
      phy drivers but not with the genphy driver. This series fixes this.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      11ee46f2
    • Sascha Hauer's avatar
      net: phy: make of_set_phy_supported work with genphy driver · de906af1
      Sascha Hauer authored
      of_set_phy_supported allows overwiting hardware capabilities of
      a phy with values from the devicetree. of_set_phy_supported is
      called right after phy_device_register in the assumption that
      phy_probe is called from phy_device_register and the features
      of the phy are already initialized. For the genphy driver this
      is not true, here phy_probe is called later during phy_connect
      time. phy_probe will then overwrite all settings done from
      of_set_phy_supported
      Fix this by moving of_set_phy_supported to the core phy code
      and calling it from phy_probe.
      Signed-off-by: default avatarSascha Hauer <s.hauer@pengutronix.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      de906af1
    • Sascha Hauer's avatar
      net: phy: genphy: Allow overwriting features · c242a472
      Sascha Hauer authored
      of_set_phy_supported allows overwiting hardware capabilities of
      a phy with values from the devicetree. This does not work with
      the genphy driver though because the genphys config_init function
      will overwrite all values adjusted by of_set_phy_supported. Fix
      this by initialising the genphy features in the phy_driver struct
      and in config_init just limit the features to the ones the hardware
      can actually support. The resulting features are a subset of the
      devicetree specified features and the hardware features.
      Signed-off-by: default avatarSascha Hauer <s.hauer@pengutronix.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c242a472
    • David S. Miller's avatar
      Merge tag 'linux-can-next-for-3.16-20140521' of git://gitorious.org/linux-can/linux-can-next · a6cea535
      David S. Miller authored
      Marc Kleine-Budde says:
      
      ====================
      pull-request: can-next 2014-05-19
      
      this is a pull request of a single patch for net-next/master. It fixes a
      use after free(), which slipped into to gs_usb driver.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a6cea535
    • Cong Wang's avatar
      bridge: make br_device_notifier static · b1282726
      Cong Wang authored
      Merge net/bridge/br_notify.c into net/bridge/br.c,
      since it has only br_device_event() and br.c is small.
      
      Cc: Stephen Hemminger <stephen@networkplumber.org>
      Cc: David S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarCong Wang <xiyou.wangcong@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b1282726
    • Chen Gang's avatar
      net/dccp/timer.c: use 'u64' instead of 's64' to avoid compiler's warning · 5c4a43b0
      Chen Gang authored
      'dccp_timestamp_seed' is initialized once by ktime_get_real() in
      dccp_timestamping_init(). It is always less than ktime_get_real()
      in dccp_timestamp().
      
      Then, ktime_us_delta() in dccp_timestamp() will always return positive
      number. So can use manual type cast to let compiler and do_div() know
      about it to avoid warning.
      
      The related warning (with allmodconfig under unicore32):
      
          CC [M]  net/dccp/timer.o
        net/dccp/timer.c: In function ‘dccp_timestamp’:
        net/dccp/timer.c:285: warning: comparison of distinct pointer types lacks a cast
      Signed-off-by: default avatarChen Gang <gang.chen.5i5j@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5c4a43b0
    • Phoebe Buckheister's avatar
      mac802154: llsec: correctly lookup implicit-indexed keys · 53819a6c
      Phoebe Buckheister authored
      Key id comparison for type 1 keys (implicit source, with index) should
      return true if mode and id are equal, not false.
      Signed-off-by: default avatarPhoebe Buckheister <phoebe.buckheister@itwm.fraunhofer.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      53819a6c
    • David S. Miller's avatar
      Merge branch 'mac80211' · beb58427
      David S. Miller authored
      Phoebe Buckheister says:
      
      ====================
      mac802154: llsec oversights
      
      Fixes an unlock operation not matching a previous lock operation in an
      unlikely error path and removes a redundant check.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      beb58427
    • Phoebe Buckheister's avatar
      mac802154: llsec: fold useless return value check · 62e9c117
      Phoebe Buckheister authored
      llsec_do_encrypt will never return a positive value, so the restriction
      to 0-or-negative on return is useless.
      Signed-off-by: default avatarPhoebe Buckheister <phoebe.buckheister@itwm.fraunhofer.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      62e9c117
    • Phoebe Buckheister's avatar
      mac802154: llsec: fix incorrect lock pairing · 6f3eabcd
      Phoebe Buckheister authored
      In encrypt, sec->lock is taken with read_lock_bh, so in the error path,
      we must read_unlock_bh.
      Signed-off-by: default avatarPhoebe Buckheister <phoebe.buckheister@itwm.fraunhofer.de>
      Reported-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6f3eabcd
    • Sekhar Nori's avatar
      net: davinci_emac: fix oops caused by uninitialized ndev->dev · 68bc74fe
      Sekhar Nori authored
      Commit e1943128 (drivers: net:
      davinci_cpdma: Convert kzalloc() to devm_kzalloc()) triggered
      a bug in emac_probe() wherein dev member of net_device is used
      for devres allocations even before it is initialized.
      
      This patch fixes that by using the struct device in platform_device
      instead.
      
      While at it, use &pdev->dev consistently for console messages instead
      of using ndev->dev for just one case and remove an unnecessary line
      continuation.
      Reported-by: default avatarKevin Hilman <khilman@linaro.org>
      Helped-by: default avatarGeorge Cherian <george.cherian@ti.com>
      Signed-off-by: default avatarSekhar Nori <nsekhar@ti.com>
      Acked-by: default avatarMugunthan V N <mugunthanvnm@ti.com>
      Tested-by: default avatarLad, Prabhakar <prabhakar.csengg@gmail.com>
      Tested-by: default avatarKevin Hilman <khilman@linaro.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      68bc74fe
    • David S. Miller's avatar
      Merge branch 'fixed_phy' · cb421c28
      David S. Miller authored
      Florian Fainelli says:
      
      ====================
      net: of_phy_connect_fixed_link removal
      
      This patch set removes of_phy_connect_fixed_link() from the tree now that
      we have a better solution for dealing with fixed PHY (emulated PHY) devices
      for drivers that require them.
      
      First two patches update the 'fixed-link' Device Tree binding and drivers to
      refere to it.
      
      Patches 3 to 7 update the in-tree network drivers that use
      of_phy_connect_fixed_link()
      
      Patch 8 removes of_phy_connect_fixed_link
      
      Patch 9 removes the PowerPC code that parsed the 'fixed-link' property.
      
      Patch 9 can be merged via the net-next tree if the PowerPC folks ack it,
      but it really has to be merged after the first 8 patches in order to avoid
      breakage.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      cb421c28
    • Florian Fainelli's avatar
      powerpc/fsl: fsl_soc: remove 'fixed-link' parsing code · 1f8c486f
      Florian Fainelli authored
      Parsing and registration of fixed PHY devices was needed with the use of
      of_phy_connect_fixed_link() because this function was using the
      designated PHY address identifier (first cell of the property) as the
      address to bind the PHY on the emulated bus.
      
      Since commit 3be2a49e ("of: provide a
      binding for fixed link PHYs") a new pair of functions has been
      introduced which allows for dynamic address allocation of these fixed
      PHY devices, but also parses the old 'fixed-link' 5-digit property.
      
      Registration of fixed PHY early in platform code was needed because we
      could not issue a fixed MDIO bus re-scan within network drivers. The
      fixed PHYs had to be registered before the network drivers would call
      of_phy_connect_fixed_link(). All of these caveats are solved now, such
      that we can safely remove of_add_fixed_phys() now.
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1f8c486f
    • Florian Fainelli's avatar
      of: mdio: remove of_phy_connect_fixed_link · ea3429c7
      Florian Fainelli authored
      All in-tree drivers have been converted to use the new pair of
      functions: of_is_fixed_phy_link() plus of_phy_register_fixed_link(), we
      can now safely remove of_phy_connect_fixed_link.
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ea3429c7
    • Florian Fainelli's avatar
      ucc_geth: use the new fixed PHY helpers · 87009814
      Florian Fainelli authored
      of_phy_connect_fixed_link() is becoming obsolete, and also required
      platform code to register the fixed PHYs at the specified addresses for
      those to be usable. Get rid of it and use the new of_phy_is_fixed_link()
      plus of_phy_register_fixed_link() helpers to transition over the new
      scheme.
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      87009814
    • Florian Fainelli's avatar
      gianfar: use the new fixed PHY helpers · be403645
      Florian Fainelli authored
      of_phy_connect_fixed_link() is becoming obsolete, and also required
      platform code to register the fixed PHYs at the specified addresses for
      those to be usable. Get rid of it and use the new of_phy_is_fixed_link()
      plus of_phy_register_fixed_link() helpers to transition over the new
      scheme.
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      be403645
    • Florian Fainelli's avatar
      fs_enet: use the new fixed PHY helpers · bb74d9a4
      Florian Fainelli authored
      of_phy_connect_fixed_link() is becoming obsolete, and also required
      platform code to register the fixed PHYs at the specified addresses for
      those to be usable. Get rid of it and use the new of_phy_is_fixed_link()
      plus of_phy_register_fixed_link() helpers to transition over the new
      scheme.
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      bb74d9a4
    • Florian Fainelli's avatar
      net: systemport: use the new fixed PHY helpers · 186534a3
      Florian Fainelli authored
      of_phy_connect_fixed_link() is becoming obsolete, and also required
      platform code to register the fixed PHYs at the specified addresses for
      those to be usable. Get rid of it and use the new of_phy_is_fixed_link()
      plus of_phy_register_fixed_link() helpers to transition over the new
      scheme.
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      186534a3
    • Florian Fainelli's avatar
      net: bcmgenet: use the new fixed PHY helpers · 9abf0c2b
      Florian Fainelli authored
      of_phy_connect_fixed_link() is becoming obsolete, and also required
      platform code to register the fixed PHYs at the specified addresses for
      those to be usable. Get rid of it and use the new of_phy_is_fixed_link()
      plus of_phy_register_fixed_link() helpers to transition over the new
      scheme.
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9abf0c2b
    • Florian Fainelli's avatar
      Documentation: devicetree: net: refer to fixed-link.txt · ae21888f
      Florian Fainelli authored
      Update the Freescale TSEC PHY, Broadcom GENET & SYSTEMPORT Device Tree
      binding documentation to refer to the fixed-link Device Tree binding in
      fixed-link.txt.
      Reviewed-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ae21888f
    • Florian Fainelli's avatar
      Documentation: devicetree: add old and deprecated 'fixed-link' · 91c1d980
      Florian Fainelli authored
      Update the fixed-link Device Tree binding documentation to contain
      information about the old and deprecated 5-digit 'fixed-link' property.
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      91c1d980
    • David S. Miller's avatar
      Merge branch 'vlan_features' · a33fa47e
      David S. Miller authored
      Michal Kubecek says:
      
      ====================
      net: device features handling fixes
      
      > I think we need to think more about what exact behavior is desired in
      > mixed csum feature set cases.  Probably whatever csum offload type is
      > the most prevelant should be the one advertised by the master.  It
      > means we will do that software checksum fixup for the oddball slaves,
      > but it seems the best we can do.
      
      I've been thinking about it some more and I believe what I proposed is
      correct: features that are or-ed (ONE_FOR_ALL) should start with 0,
      those which are and-ed (ALL_FOR_ALL) with 1.
      
      But once we do that, we have to fix another problem in vlan module:
      features of a vlan device are mostly computed as bitwise AND of features
      and vlan_features of its underlying device. The problem is checksumming
      features don't really behave like independent flags as their main
      purpose is to be used in can_checksum_protocol() whose logic is that
      HW_CSUM (GEN_CSUM) means "can checksum everything" so that it kind of
      contains IP(V6)_CSUM functionality. Therefore intersection of HW_CSUM
      and IP(V6)_CSUM should result in the latter.
      
      An alternative approach would be to always set IP(V6)_CSUM once HW_CSUM
      (any of GEN_CSUM) is set but as for long time people were taught not to
      do that and we even have a warning for it, switching to the exact
      opposite could cause a lot of problems.
      
      > Also, like Jay, I agree that whatever we do in bonding needs to be
      > done in team too and I'd like the bug fixed at the same time in both
      > places.
      
      Agreed. Added a similar patch for teaming driver.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a33fa47e
    • Michal Kubeček's avatar
      teaming: fix vlan_features computing · 3625920b
      Michal Kubeček authored
      __team_compute_features() uses netdev_increment_features() to
      combine vlan_features of slaves into vlan_features of the team.
      As netdev_increment_features() only adds most features and we
      start with TEAM_VLAN_FEATURES, we can end up with features none
      of the slaves provided.
      
      Initialize vlan_features only with the flags which are both in
      TEAM_VLAN_FEATURES and NETIF_F_ALL_FOR_ALL. Right now there is
      no such feature so that we actually initialize vlan_features
      with zero but stating it explicitely will make the code more
      future proof.
      Signed-off-by: default avatarMichal Kubecek <mkubecek@suse.cz>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3625920b
    • Michal Kubeček's avatar
      bonding: fix vlan_features computing · a9b3ace4
      Michal Kubeček authored
      bond_compute_features() uses netdev_increment_features() to
      combine vlan_features of slaves into vlan_features of the bond.
      As netdev_increment_features() only adds most features and we
      start with BOND_VLAN_FEATURES, we can end up with features none
      of the slaves provided.
      
      If there is at least one slave, initialize vlan_features only
      with the flags in NETIF_F_ALL_FOR_ALL. Right now there is none
      in BOND_VLAN_FEATURES but stating it explicitely will make the
      code more future proof.
      Signed-off-by: default avatarMichal Kubecek <mkubecek@suse.cz>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a9b3ace4
    • Michal Kubeček's avatar
      vlan: more careful checksum features handling · da08143b
      Michal Kubeček authored
      When combining real_dev's features and vlan_features, simple
      bitwise AND is used. This doesn't work well for checksum
      offloading features as if one set has NETIF_F_HW_CSUM and the
      other NETIF_F_IP_CSUM and/or NETIF_F_IPV6_CSUM, we end up with
      no checksum offloading. However, from the logical point of view
      (how can_checksum_protocol() works), NETIF_F_HW_CSUM contains
      the functionality of NETIF_F_IP_CSUM and NETIF_F_IPV6_CSUM so
      that the result should be IP/IPV6.
      
      Add helper function netdev_intersect_features() implementing
      this logic and use it in vlan_dev_fix_features().
      Signed-off-by: default avatarMichal Kubecek <mkubecek@suse.cz>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      da08143b
    • Nimrod Andy's avatar
      net: fec: correct the MDIO clock source · 98a6eeb8
      Nimrod Andy authored
      Since imx serials FEC/ENET MDIO clock source is internal ipg clock,
      and "ahb" clock is defined as FEC/ENET bus clock, so the patch just
      correct the fec driver MDIO clock source.
      Signed-off-by: default avatarFugang Duan <B38611@freescale.com>
      Acked-by: default avatarFrank Li <frank.li@freescale.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      98a6eeb8
    • Nimrod Andy's avatar
      net: fec: optimize the clock management to save power · e8fcfcd5
      Nimrod Andy authored
      Add below clock management to save fec power:
      - After probe, disable all clocks incluing ipg, ahb, enet_out, ptp clock.
      - Open ethx interface enable necessary clocks.
        Close ethx interface disable all clocks.
      
      The patch also encapsulates the all enet clocks enable/disable to
      .fec_enet_clk_enable(), which can reduce the repetitional code in
      driver.
      Signed-off-by: default avatarFugang Duan <B38611@freescale.com>
      Acked-by: default avatarFrank Li <Frank.li@freescale.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e8fcfcd5
    • David S. Miller's avatar
      Merge branch 'sw_tso' · fddb8872
      David S. Miller authored
      Ezequiel Garcia says:
      
      ====================
      net: Introduce a software TSO helper API
      
      Here's a first proposal for a generic software TSO helper API, following
      David's suggestion.
      
      There are at least two drivers that currently implement some form of software
      TSO: Solarflare network driver (drivers/net/ethernet/sfc) and Tilera GX
      network driver (drivers/net/ethernet/tile/tilegx.c).
      
      The rationale behind adding a generic API is to provide a boiler plate with the
      segmentation and other common tasks, making this support easier to add in other
      drivers.
      
      When designing the API, I've considered mainly two design choices:
      
        1. Implement a series of callbacks that each driver would implement
           and the net core code would call to fill in descriptors and egress
           that data.
      
        2. Implement an API for drivers to use in a driver's specific tx_tso
           function. This functions would exhaust a sk_buff payload, and use the
           API as helper for building the headers and segmented data.
      
      I've chosen (2), to avoid function pointers (which was Willy's concern) and
      because it seemed less fragile. Of course, this is argueable.
      
      The API is by no means complete, and lacks some features, however it allows
      to support TSO in mv643xx_eth and mvneta network drivers with some very
      good performance results. I've added this support as an example of the API
      in action.
      
      In particular the following needs some revisiting:
      
        1. IPv6 support is lacking.
      
        2. The required descriptor counting needs some verification. The current
           implementation might be too "sketchy". The tilegx one can be a good
           starting point.
      
        3. The implemenation assumes the hardware can compute the TCP and IP
           checksums for the built headers. However, some controllers may need
           some initial calculation (such as tilegx, for instance).
      
      Despite this, I hope this proposal is good enough to trigger some discussion
      and to check if I'm on the right track. Feedback is much appreciated!
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      fddb8872
    • Ezequiel Garcia's avatar
      net: mv643xx_eth: Implement software TSO · 3ae8f4e0
      Ezequiel Garcia authored
      Now that the TSO helper API has been introduced, this commit makes use
      of it to add support for software TSO in this driver.
      
      This feature allows to improve outbound throughput performance significantly.
      Running iperf tests shows a 30% improvement, tested on a Kirkwood Openblocks
      A6 board.
      
      $ ethtool -K eth0 tso off
      $ iperf -c 192.168.0.45 -t 3
      ------------------------------------------------------------
      Client connecting to 192.168.0.45, TCP port 5001
      TCP window size: 43.8 KByte (default)
      ------------------------------------------------------------
      [  3] local 192.168.0.159 port 46389 connected with 192.168.0.45 port 5001
      [ ID] Interval       Transfer     Bandwidth
      [  3]  0.0- 3.0 sec   217 MBytes   607 Mbits/sec
      
      $ ethtool -K eth0 tso on
      $ iperf -c 192.168.0.45 -t 3
      ------------------------------------------------------------
      Client connecting to 192.168.0.45, TCP port 5001
      TCP window size: 43.8 KByte (default)
      ------------------------------------------------------------
      [  3] local 192.168.0.159 port 46390 connected with 192.168.0.45 port 5001
      [ ID] Interval       Transfer     Bandwidth
      [  3]  0.0- 3.0 sec   336 MBytes   938 Mbits/sec
      
      This commit is just an example of the usage of the TSO API, it works fine
      but needs some more work. In particular, the descriptor unmapping path must
      avoid unmapping the TSO headers.
      Signed-off-by: default avatarEzequiel Garcia <ezequiel.garcia@free-electrons.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3ae8f4e0
    • Ezequiel Garcia's avatar
      net: mv643xx_eth: Use dma_map_single() to map the skb fragments · 69ad0dd7
      Ezequiel Garcia authored
      Using dma_map_single() instead of skb_frag_dma_map() allows to unmap
      all the descriptors using dma_unmap_single(). This change allows
      to introduce software TSO in a less intrusive way.
      Signed-off-by: default avatarEzequiel Garcia <ezequiel.garcia@free-electrons.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      69ad0dd7
    • Ezequiel Garcia's avatar
      net: mv643xx_eth: Factorize feature setting · 4d48d589
      Ezequiel Garcia authored
      In order to ease the addition of new features, let's factorize the
      feature list.
      Signed-off-by: default avatarEzequiel Garcia <ezequiel.garcia@free-electrons.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4d48d589
    • Ezequiel Garcia's avatar
      net: mv643xx_eth: Avoid setting the initial TCP checksum · 84411f73
      Ezequiel Garcia authored
      As specified in the datasheet, the driver can set the "L4Chk_Mode" flag
      (bit 10) in the Tx descriptor command/status to specify that a frame is not
      IP fragmented and that the controller is in charge of generating the TCP/IP
      checksum. This must be used together with the "GL4chk" flag (bit 17).
      
      These two flags allow to avoid setting the initial TCP checksum in the l4i_chk
      field of the Tx descriptor, which is needed to support software TSO.
      Signed-off-by: default avatarEzequiel Garcia <ezequiel.garcia@free-electrons.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      84411f73
    • Ezequiel Garcia's avatar
      net: mv643xx_eth: Factorize initial checksum and command preparation · 0a8fa933
      Ezequiel Garcia authored
      Make the code more readable by moving the initial checksum setup
      and the command/status preparation to its own function.
      Signed-off-by: default avatarEzequiel Garcia <ezequiel.garcia@free-electrons.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0a8fa933
    • Ezequiel Garcia's avatar
      net: mvneta: Implement software TSO · 2adb719d
      Ezequiel Garcia authored
      Now that the TSO helper API has been introduced, this commit makes use
      of it to implement the TSO in this driver.
      
      Using iperf to test and vmstat to check the CPU usage, shows a substantial
      CPU usage drop when TSO is on (~15% vs. ~25%). HTTP-based tests performed
      by Willy Tarreau have shown performance improvements.
      Signed-off-by: default avatarEzequiel Garcia <ezequiel.garcia@free-electrons.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2adb719d
    • Ezequiel Garcia's avatar
      net: mvneta: Clean mvneta_tx() sk_buff handling · e19d2dda
      Ezequiel Garcia authored
      Rework mvneta_tx() so that the code that performs the final handling
      before a sk_buff is transmitted is done only if the numbers of fragments
      processed if positive.
      
      This is preparation work to add the support for software TSO.
      Signed-off-by: default avatarEzequiel Garcia <ezequiel.garcia@free-electrons.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e19d2dda
    • Ezequiel Garcia's avatar
      net: mvneta: Factorize feature setting · 01ef26ca
      Ezequiel Garcia authored
      In order to ease the addition of new features, let's factorize the
      feature list.
      Signed-off-by: default avatarEzequiel Garcia <ezequiel.garcia@free-electrons.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      01ef26ca
    • Ezequiel Garcia's avatar
      net: Add a software TSO helper API · e876f208
      Ezequiel Garcia authored
      Although the implementation probably needs a lot of work, this initial API
      allows to implement software TSO in mvneta and mv643xx_eth drivers in a not
      so intrusive way.
      Signed-off-by: default avatarEzequiel Garcia <ezequiel.garcia@free-electrons.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e876f208
    • David S. Miller's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nftables · 8af750d7
      David S. Miller authored
      Pablo Neira Ayuso says:
      
      ====================
      Netfilter/nftables updates for net-next
      
      The following patchset contains Netfilter/nftables updates for net-next,
      most relevantly they are:
      
      1) Add set element update notification via netlink, from Arturo Borrero.
      
      2) Put all object updates in one single message batch that is sent to
         kernel-space. Before this patch only rules where included in the batch.
         This series also introduces the generic transaction infrastructure so
         updates to all objects (tables, chains, rules and sets) are applied in
         an all-or-nothing fashion, these series from me.
      
      3) Defer release of objects via call_rcu to reduce the time required to
         commit changes. The assumption is that all objects are destroyed in
         reverse order to ensure that dependencies betweem them are fulfilled
         (ie. rules and sets are destroyed first, then chains, and finally
         tables).
      
      4) Allow to match by bridge port name, from Tomasz Bursztyka. This series
         include two patches to prepare this new feature.
      
      5) Implement the proper set selection based on the characteristics of the
         data. The new infrastructure also allows you to specify your preferences
         in terms of memory and computational complexity so the underlying set
         type is also selected according to your needs, from Patrick McHardy.
      
      6) Several cleanup patches for nft expressions, including one minor possible
         compilation breakage due to missing mark support, also from Patrick.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8af750d7
    • David S. Miller's avatar
      Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next · 758bd61a
      David S. Miller authored
      Jeff Kirsher says:
      
      ====================
      Intel Wired LAN Driver Updates
      
      This series contains updates to i40e and i40evf.
      
      Shannon makes minor changes to the AdminQ interface to bring it up to
      date.  Removes the hard coding of stats struct size in ethtool, in prep
      for adding data fields which are configuration dependent.
      
      Catherine removes some unused and unneeded PCI bus defines.
      
      Jesse fixes the copyright headers and finishes up the removal of the PTP
      Tx work functionality which allows us to rely on the Tx timesync interrupt.
      
      Mitch provides a number of fixes and cleanups for i40e/i40evf based on
      suggestions from Ben Hutchings.  First is to use a macro parameter for
      ethtool stats instead of just assuming that a valid netdev variable
      exists.  Second is not to tell ethtool that the VF can do 10GbaseT, when
      it really has no idea what its link speed is, so set the supported value
      to 0 instead.  Make the ethtool_ops structure constant since it is
      extremely unlikely to change at runtime.  Ethtool consistently reports
      0 values for our ITR settings because we never actually use them, so
      fix this by setting the default values to the specified default values.
      
      Greg avoids a compile error by wrapping the call to i40e_alloc_vfs() in
      CONFIG_PCI_IOV because the function itself is wrapped in the same
      conditional compile block.
      
      Alexander Gordeev updates the driver to use the new pci_enable_msi_range()
      and pci_enable_msix_range() or pci_enable_msi_exact() and
      pci_enable_msix_exact().
      
      Jean Sacren provides a fix where the wrong error code was being passed to
      i40e_open().
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      758bd61a