1. 08 Oct, 2014 7 commits
    • Dan Carpenter's avatar
      cxgb4: clean up a type issue · fb5ac0de
      Dan Carpenter authored
      
      
      The tx_desc struct holds 8 __be64 values.  The original code in
      ring_tx_db() took a tx_desc pointer then casted it to an int pointer and
      then casted it to a u64 pointer.  It was confusing and triggered some
      static checker warnings.
      
      I have changed the cxgb_pio_copy() function to only take tx_desc
      pointers.  This isn't really a loss of flexibility because anything else
      was buggy to begin with.
      
      I also removed the casting on the destination pointer since that was
      unnecessary and a bit messy.
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      fb5ac0de
    • Dan Carpenter's avatar
      cxgb4: potential shift wrapping bug · 9fef8478
      Dan Carpenter authored
      
      
      "cntxt_id" is an unsigned int but "udb" is a u64 so there is a potential
      shift wrapping bug here.
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9fef8478
    • Eric Dumazet's avatar
      i40e: skb->xmit_more support · 4567dc10
      Eric Dumazet authored
      
      
      Support skb->xmit_more in i40e is straightforward : we need to move
      around i40e_maybe_stop_tx() call to correctly test netif_xmit_stopped()
      before taking the decision to not kick the NIC.
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDaniel Borkmann <dborkman@redhat.com>
      Acked-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4567dc10
    • David S. Miller's avatar
      Merge branch 'fs_enet_napi' · 44783d87
      David S. Miller authored
      
      
      Christophe Leroy says:
      
      ====================
      net: fs_enet: Remove non NAPI RX and add NAPI for TX
      
      When using a MPC8xx as a router, 'perf' shows a significant time spent in
      fs_enet_interrupt() and fs_enet_start_xmit().
      'perf annotate' shows that the time spent in fs_enet_start_xmit is indeed spent
      between spin_unlock_irqrestore() and the following instruction, hence in
      interrupt handling. This is due to the TX complete interrupt that fires after
      each transmitted packet.
      This patchset first remove all non NAPI handling as NAPI has become the only
      mode for RX, then adds NAPI for handling TX complete.
      This improves NAT TCP throughput by 21% on MPC885 with FEC.
      
      Tested on MPC885 with FEC.
      
      [PATCH 1/2] net: fs_enet: Remove non NAPI RX
      [PATCH 2/2] net: fs_enet: Add NAPI TX
      Signed-off-by: default avatarChristophe Leroy <christophe.leroy@c-s.fr>
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      44783d87
    • LEROY Christophe's avatar
      net: fs_enet: Add NAPI TX · d43a396a
      LEROY Christophe authored
      
      
      When using a MPC8xx as a router, 'perf' shows a significant time spent in
      fs_enet_interrupt() and fs_enet_start_xmit().
      'perf annotate' shows that the time spent in fs_enet_start_xmit is indeed spent
      between spin_unlock_irqrestore() and the following instruction, hence in
      interrupt handling. This is due to the TX complete interrupt that fires after
      each transmitted packet.
      This patch modifies the handling of TX complete to use NAPI.
      With this patch, my NAT router offers a throughput improved by 21%
      
      Original performance:
      
      [root@localhost tmp]# scp toto pgs:/tmp
      toto                                          100%  256MB   2.8MB/s   01:31
      
      Performance with the patch:
      
      [root@localhost tmp]# scp toto pgs:/tmp
      toto                                          100%  256MB   3.4MB/s   01:16
      Signed-off-by: default avatarChristophe Leroy <christophe.leroy@c-s.fr>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d43a396a
    • LEROY Christophe's avatar
      net: fs_enet: Remove non NAPI RX · 583d4a68
      LEROY Christophe authored
      
      
      In the probe function, use_napi is inconditionnaly set to 1. This patch removes
      all the code which is conditional to !use_napi, and removes use_napi which has
      then become useless.
      Signed-off-by: default avatarChristophe Leroy <christophe.leroy@c-s.fr>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      583d4a68
    • Chun-Hao Lin's avatar
      r8169:add support for RTL8168EP · 935e2218
      Chun-Hao Lin authored
      
      
      RTL8168EP is Realtek PCIe Gigabit Ethernet controller with DASH support.
      It is a successor chip of RTL8168DP.
      
      For RTL8168EP, the read/write ocp register is via eri channel type 2, so I
      move ocp_xxx() related functions under rtl_eri_xxx. And use r8168dp_ocp_xxx()
      for RTL8168DP ocp read/write, r8168ep_ocp_xxx() for RTL8168EP ocp read/write.
      
      The way of checking dash enable is different with RTL8168DP. I use
      r8168dp_check_dash()for RTL8168DP and r8168ep_check_dash() for RTL8168EP,
      to check if dash is enabled.
      
      The driver_start() and driver_stop() of RTL8168EP is also different with
      RTL8168DP. I use rtl8168dp_driver_xxx() for RTL8168DP and
      rtl8168ep_driver_xxx for RTL8168EP.
      
      Right now, RTL8168EP phy mcu did not need firmware code patch, so I did not
      add firmware code for it.
      so I did not add firmware code for it.
      Signed-off-by: default avatarChun-Hao Lin <hau@realtek.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      935e2218
  2. 07 Oct, 2014 8 commits
    • Fabian Frederick's avatar
      wimax: convert printk to pr_foo() · 28b7deae
      Fabian Frederick authored
      
      
      Use current logging functions and add module name prefix.
      Signed-off-by: default avatarFabian Frederick <fabf@skynet.be>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      28b7deae
    • Fabian Frederick's avatar
      af_unix: remove 0 assignment on static · 505e907d
      Fabian Frederick authored
      
      
      static values are automatically initialized to 0
      Signed-off-by: default avatarFabian Frederick <fabf@skynet.be>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      505e907d
    • David S. Miller's avatar
      ipv6: Do not warn for informational ICMP messages, regardless of type. · ea85a0a2
      David S. Miller authored
      
      
      There is no reason to emit a log message for these.
      
      Based upon a suggestion from Hannes Frederic Sowa.
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Acked-by: default avatarHannes Frederic Sowa <hannes@stressinduktion.org>
      ea85a0a2
    • Jon Maloy's avatar
      tipc: fix bug in multicast congestion handling · 908344cd
      Jon Maloy authored
      One aim of commit 50100a5e
      
       ("tipc:
      use pseudo message to wake up sockets after link congestion") was
      to handle link congestion abatement in a uniform way for both unicast
      and multicast transmit. However, the latter doesn't work correctly,
      and has been broken since the referenced commit was applied.
      
      If a user now sends a burst of multicast messages that is big
      enough to cause broadcast link congestion, it will be put to sleep,
      and not be waked up when the congestion abates as it should be.
      
      This has two reasons. First, the flag that is used, TIPC_WAKEUP_USERS,
      is set correctly, but in the wrong field. Instead of setting it in the
      'action_flags' field of the arrival node struct, it is by mistake set
      in the dummy node struct that is owned by the broadcast link, where it
      will never tested for. Second, we cannot use the same flag for waking
      up unicast and multicast users, since the function tipc_node_unlock()
      needs to pick the wakeup pseudo messages to deliver from different
      queues. It must hence be able to distinguish between the two cases.
      
      This commit solves this problem by adding a new flag
      TIPC_WAKEUP_BCAST_USERS, and a new function tipc_bclink_wakeup_user().
      The latter is to be called by tipc_node_unlock() when the named flag,
      now set in the correct field, is encountered.
      
      v2: using explicit 'unsigned int' declaration instead of 'uint', as
      per comment from David Miller.
      Signed-off-by: default avatarJon Maloy <jon.maloy@ericsson.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      908344cd
    • Eric Dumazet's avatar
      net: better IFF_XMIT_DST_RELEASE support · 02875878
      Eric Dumazet authored
      
      
      Testing xmit_more support with netperf and connected UDP sockets,
      I found strange dst refcount false sharing.
      
      Current handling of IFF_XMIT_DST_RELEASE is not optimal.
      
      Dropping dst in validate_xmit_skb() is certainly too late in case
      packet was queued by cpu X but dequeued by cpu Y
      
      The logical point to take care of drop/force is in __dev_queue_xmit()
      before even taking qdisc lock.
      
      As Julian Anastasov pointed out, need for skb_dst() might come from some
      packet schedulers or classifiers.
      
      This patch adds new helper to cleanly express needs of various drivers
      or qdiscs/classifiers.
      
      Drivers that need skb_dst() in their ndo_start_xmit() should call
      following helper in their setup instead of the prior :
      
      	dev->priv_flags &= ~IFF_XMIT_DST_RELEASE;
      ->
      	netif_keep_dst(dev);
      
      Instead of using a single bit, we use two bits, one being
      eventually rebuilt in bonding/team drivers.
      
      The other one, is permanent and blocks IFF_XMIT_DST_RELEASE being
      rebuilt in bonding/team. Eventually, we could add something
      smarter later.
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Cc: Julian Anastasov <ja@ssi.bg>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      02875878
    • Eric Dumazet's avatar
      net/mlx4_en: remove NETDEV_TX_BUSY · fe971b95
      Eric Dumazet authored
      
      
      Drivers should avoid NETDEV_TX_BUSY as much as possible.
      
      They should stop the tx queue before qdisc even tries to push another
      packet, to avoid requeues.
      
      For a driver supporting skb->xmit_more, this is likely to be a prereq
      anyway, otherwise we could have a tx deadlock : We need to force a
      doorbell if TX ring is full.
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Acked-by: default avatarAmir Vadai <amirv@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      fe971b95
    • Petri Gynther's avatar
      net: bcmgenet: fix Tx ring priority programming · 37742166
      Petri Gynther authored
      
      
      GENET MAC has three Tx ring priority registers:
      - GENET_x_TDMA_PRIORITY0 for queues 0-5
      - GENET_x_TDMA_PRIORITY1 for queues 6-11
      - GENET_x_TDMA_PRIORITY2 for queues 12-16
      
      Fix bcmgenet_init_multiq() to program them correctly.
      Signed-off-by: default avatarPetri Gynther <pgynther@google.com>
      Acked-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      37742166
    • Petri Gynther's avatar
      net: phy: adjust fixed_phy_register() return value · fd2ef0ba
      Petri Gynther authored
      
      
      Adjust fixed_phy_register() to return struct phy_device *, so that
      it becomes easy to use fixed PHYs without device tree support:
      
        phydev = fixed_phy_register(PHY_POLL, &fixed_phy_status, NULL);
        fixed_phy_set_link_update(phydev, fixed_phy_link_update);
        phy_connect_direct(netdev, phydev, handler_fn, phy_interface);
      
      This change is a prerequisite for modifying bcmgenet driver to work
      without a device tree on Broadcom's MIPS-based 7xxx platforms.
      Signed-off-by: default avatarPetri Gynther <pgynther@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      fd2ef0ba
  3. 06 Oct, 2014 21 commits
  4. 05 Oct, 2014 4 commits