1. 09 10月, 2014 4 次提交
    • E
      i40e: skb->xmit_more support · 4567dc10
      Eric Dumazet 提交于
      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: NEric Dumazet <edumazet@google.com>
      Signed-off-by: NDaniel Borkmann <dborkman@redhat.com>
      Acked-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      4567dc10
    • L
      net: fs_enet: Add NAPI TX · d43a396a
      LEROY Christophe 提交于
      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: NChristophe Leroy <christophe.leroy@c-s.fr>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d43a396a
    • L
      net: fs_enet: Remove non NAPI RX · 583d4a68
      LEROY Christophe 提交于
      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: NChristophe Leroy <christophe.leroy@c-s.fr>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      583d4a68
    • C
      r8169:add support for RTL8168EP · 935e2218
      Chun-Hao Lin 提交于
      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: NChun-Hao Lin <hau@realtek.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      935e2218
  2. 08 10月, 2014 4 次提交
    • E
      net: better IFF_XMIT_DST_RELEASE support · 02875878
      Eric Dumazet 提交于
      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: NEric Dumazet <edumazet@google.com>
      Cc: Julian Anastasov <ja@ssi.bg>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      02875878
    • E
      net/mlx4_en: remove NETDEV_TX_BUSY · fe971b95
      Eric Dumazet 提交于
      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: NEric Dumazet <edumazet@google.com>
      Acked-by: NAmir Vadai <amirv@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      fe971b95
    • P
      net: bcmgenet: fix Tx ring priority programming · 37742166
      Petri Gynther 提交于
      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: NPetri Gynther <pgynther@google.com>
      Acked-by: NFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      37742166
    • P
      net: phy: adjust fixed_phy_register() return value · fd2ef0ba
      Petri Gynther 提交于
      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: NPetri Gynther <pgynther@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      fd2ef0ba
  3. 07 10月, 2014 4 次提交
  4. 06 10月, 2014 20 次提交
  5. 05 10月, 2014 1 次提交
  6. 04 10月, 2014 7 次提交