1. 05 Apr, 2016 1 commit
  2. 30 Mar, 2016 4 commits
  3. 24 Mar, 2016 2 commits
    • Petri Gynther's avatar
      net: bcmgenet: fix skb_len in bcmgenet_xmit_single() · 7dd39913
      Petri Gynther authored
      skb_len needs to be skb_headlen(skb) in bcmgenet_xmit_single().
      
      Fragmented skbs can have only Ethernet + IP + TCP headers (14+20+20=54 bytes)
      in the linear buffer, followed by the rest in fragments. Bumping skb_len to
      ETH_ZLEN would be incorrect for this case, as it would introduce garbage
      between TCP header and the fragment data.
      
      This also works with regular/non-fragmented small packets < ETH_ZLEN bytes.
      Successfully tested this on GENETv3 with 42-byte ARP frames.
      
      For testing, I used:
      ethtool -K eth0 tx-checksum-ipv4 off
      ethtool -K eth0 tx-checksum-ipv6 off
      echo 0 > /proc/sys/net/ipv4/tcp_timestamps
      
      Fixes: 1c1008c7
      
       ("net: bcmgenet: add main driver file")
      Signed-off-by: default avatarPetri Gynther <pgynther@google.com>
      Acked-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      7dd39913
    • Petri Gynther's avatar
      net: bcmgenet: fix dev->stats.tx_bytes accounting · 55868120
      Petri Gynther authored
      1. Add bytes_compl local variable to __bcmgenet_tx_reclaim() to collect
         transmitted bytes. dev->stats updates can then be moved outside the
         while-loop. bytes_compl is also needed for future BQL support.
      2. When bcmgenet device uses Tx checksum offload, each transmitted skb
         gets an extra 64-byte header prepended to it. Before this header is
         prepended to the skb, we need to save the skb "wire" length in
         GENET_CB(skb)->bytes_sent, so that proper Tx bytes accounting can
         be done in __bcmgenet_tx_reclaim().
      3. skb->len covers the entire length of skb, whether it is linear or
         fragmented. Thus, when we clean the fragments, do not increase
         transmitted bytes.
      
      Fixes: 1c1008c7
      
       ("net: bcmgenet: add main driver file")
      Signed-off-by: default avatarPetri Gynther <pgynther@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      55868120
  4. 19 Mar, 2016 1 commit
  5. 18 Mar, 2016 1 commit
  6. 16 Mar, 2016 1 commit
    • Yuval Mintz's avatar
      bnx2x: don't wait for Tx completion on recovery · d78a1f08
      Yuval Mintz authored
      
      
      When driver has hit a parity event, HW can no longer write to host memory.
      As a result, Tx completions cannot be written to the host SB memory, and
      waiting for Tx completions eventually timeout.
      As driver is willing to delay as much as 1-2 seconds per Tx queue for its
      draining and this delay is sequential, the time to recover might greatly
      lengthen needlessly in case the recovery is done under multi-connection
      traffic.
      Signed-off-by: default avatarYuval Mintz <Yuval.Mintz@qlogic.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d78a1f08
  7. 08 Mar, 2016 8 commits
  8. 03 Mar, 2016 1 commit
    • John Fastabend's avatar
      net: relax setup_tc ndo op handle restriction · 5eb4dce3
      John Fastabend authored
      I added this check in setup_tc to multiple drivers,
      
       if (handle != TC_H_ROOT || tc->type != TC_SETUP_MQPRIO)
      
      Unfortunately restricting to TC_H_ROOT like this breaks the old
      instantiation of mqprio to setup a hardware qdisc. This patch
      relaxes the test to only check the type to make it equivalent
      to the check before I broke it. With this the old instantiation
      continues to work.
      
      A good smoke test is to setup mqprio with,
      
      # tc qdisc add dev eth4 root mqprio num_tc 8 \
        map 0 1 2 3 4 5 6 7 \
        queues 0@0 1@1 2@2 3@3 4@4 5@5 6@6 7@7
      
      Fixes: e4c6734e
      
       ("net: rework ndo tc op to consume additional qdisc handle paramete")
      Reported-by: default avatarSingh Krishneil <krishneil.k.singh@intel.com>
      Reported-by: default avatarJake Keller <jacob.e.keller@intel.com>
      CC: Murali Karicheri <m-karicheri2@ti.com>
      CC: Shradha Shah <sshah@solarflare.com>
      CC: Or Gerlitz <ogerlitz@mellanox.com>
      CC: Ariel Elior <ariel.elior@qlogic.com>
      CC: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
      CC: Bruce Allan <bruce.w.allan@intel.com>
      CC: Jesse Brandeburg <jesse.brandeburg@intel.com>
      CC: Don Skidmore <donald.c.skidmore@intel.com>
      Signed-off-by: default avatarJohn Fastabend <john.r.fastabend@intel.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5eb4dce3
  9. 02 Mar, 2016 7 commits
  10. 01 Mar, 2016 10 commits
  11. 25 Feb, 2016 1 commit
    • Arnd Bergmann's avatar
      bnx2x: add a separate GENEVE Kconfig symbol · 4fee7dab
      Arnd Bergmann authored
      
      
      When CONFIG_GENEVE is built as a loadable module, and bnx2x is built-in,
      we get this link error:
      
      drivers/net/built-in.o: In function `bnx2x_open':
      :(.text+0x33322): undefined reference to `geneve_get_rx_port'
      drivers/net/built-in.o: In function `bnx2x_sp_rtnl_task':
      :(.text+0x3e632): undefined reference to `geneve_get_rx_port'
      
      This avoids the problem by adding a separate Kconfig symbol named
      CONFIG_BNX2X_GENEVE that is only enabled when the code is
      reachable from the driver.
      
      This is the same trick that BNX2X does for VXLAN support, and
      is similar to how I40E handles both.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Fixes: 883ce97d
      
       ("bnx2x: Add Geneve inner-RSS support")
      Acked-By: default avatarYuval Mintz <Yuval.Mintz@qlogic.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4fee7dab
  12. 24 Feb, 2016 2 commits
  13. 22 Feb, 2016 1 commit