1. 19 Aug, 2016 23 commits
    • Hadar Hen Zion's avatar
      flow_dissector: For stripped vlan, get vlan info from skb->vlan_tci · d5709f7a
      Hadar Hen Zion authored
      Early in the datapath skb_vlan_untag function is called, stripped
      the vlan from the skb and set skb->vlan_tci and skb->vlan_proto fields.
      
      The current dissection doesn't handle stripped vlan packets correctly.
      In some flows, vlan doesn't exist in skb->data anymore when applying
      flow dissection on the skb, fix that.
      
      In case vlan info wasn't stripped before applying flow_dissector (RPS
      flow for example), or in case of skb with multiple vlans (e.g. 802.1ad),
      get the vlan info from skb->data. The flow_dissector correctly skips
      any number of vlans and stores only the first level vlan.
      
      Fixes: 0744dd00 ('net: introduce skb_flow_dissect()')
      Signed-off-by: default avatarHadar Hen Zion <hadarh@mellanox.com>
      Acked-by: default avatarJiri Pirko <jiri@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d5709f7a
    • David S. Miller's avatar
      Merge branch 'qed-link-fixes' · 92bcdcc6
      David S. Miller authored
      Yuval Mintz says:
      
      ====================
      qed*: Fix ethtool issues relating to link
      
      This series addresses two issues that were introduced when adding
      support for ethtool's link_ksettings support - the first fixes a
      regression and second incorrect functionallity in the submission.
      
      Although these are fixes, as the feature currently exists only in
      'next-next' I'm aiming them for it.
      
      Dave, please consider applying this series to 'net-next'.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      92bcdcc6
    • Yuval Mintz's avatar
      qede: Fix forcing high speeds · 16d5946a
      Yuval Mintz authored
      While '0xdead' and '0xbeef' are "great" values, we should
      use the correct SPEED_* values instead.
      
      Fixes: 054c67d1 ("qed*: Add support for ethtool link_ksettings callbacks")
      Signed-off-by: default avatarYuval Mintz <Yuval.Mintz@qlogic.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      16d5946a
    • Yuval Mintz's avatar
      qed*: Fix pause setting · d194fd26
      Yuval Mintz authored
      When moving into using ethtool's link_ksetting, qed started
      supplying its own bitmask of speed/capabilities, but qede
      is still checking for the SUPPORTED value to determine whether
      it supports pause.
      
      Fixes: 054c67d1 ("qed*: Add support for ethtool link_ksettings callbacks")
      Signed-off-by: default avatarYuval Mintz <Yuval.Mintz@qlogic.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d194fd26
    • David S. Miller's avatar
      Merge branch '1GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue · a5c88182
      David S. Miller authored
      Jeff Kirsher says:
      
      ====================
      1GbE Intel Wired LAN Driver Updates 2016-08-18
      
      This series contains updates to igb only.
      
      Gangfeng Huang provides all the changes in the series to update the
      igb driver to support advanced receive side filters that direct receive
      packets by flows to different hardware queues. This enables a tight
      control on routing a flow in the platform.  First patch allows for
      receive network flow classification to insert and remove receive filters
      by ethtool.  Second and third patches add the ability to insert and
      remove ethertype and VLAN priority filters by ethtool.
      
      Last patch just fixes an error message to return "Not supported" versus
      "Unknown error 524".
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a5c88182
    • Gangfeng Huang's avatar
      igb: fix error code in igb_add_ethtool_nfc_entry() · 54be8132
      Gangfeng Huang authored
      Use error "rmgr: Cannot insert RX class rule: Operation not supported" is
      more meaningful than "rmgr: Cannot insert RX class rule: Unknown error 524"
      Signed-off-by: default avatarGangfeng Huang <gangfeng.huang@ni.com>
      Tested-by: default avatarAaron Brown <aaron.f.brown@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      54be8132
    • Gangfeng Huang's avatar
      igb: support RX flow classification by VLAN priority · 7a277a96
      Gangfeng Huang authored
      This patch is meant to allow for RX network flow classification to insert
      and remove VLAN priority filter by ethtool
      
      Example:
      Add an VLAN priority filter:
      $ ethtool -N eth0 flow-type ether vlan 0x6000 vlan-mask 0x1FFF action 2 loc 1
      
      Show all filters:
      $ ethtool -n eth0
      4 RX rings available
      Total 1 rules
      
      Filter: 1
      	Flow Type: Raw Ethernet
      	Src MAC addr: 00:00:00:00:00:00 mask: FF:FF:FF:FF:FF:FF
      	Dest MAC addr: 00:00:00:00:00:00 mask: FF:FF:FF:FF:FF:FF
      	Ethertype: 0x0 mask: 0xFFFF
      	VLAN EtherType: 0x0 mask: 0xffff
      	VLAN: 0x6000 mask: 0x1fff
      	User-defined: 0x0 mask: 0xffffffffffffffff
      	Action: Direct to queue 2
      
      Delete the filter by location:
      $ ethtool -N delete 1
      Signed-off-by: default avatarRuhao Gao <ruhao.gao@ni.com>
      Signed-off-by: default avatarGangfeng Huang <gangfeng.huang@ni.com>
      Tested-by: default avatarAaron Brown <aaron.f.brown@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      7a277a96
    • Gangfeng Huang's avatar
      igb: support RX flow classification by ethertype · 64c75d41
      Gangfeng Huang authored
      This patch is meant to allow for RX network flow classification to insert
      and remove ethertype filter by ethtool
      
      Example:
      Add an ethertype filter:
      $ ethtool -N eth0 flow-type ether proto 0x88F8 action 2
      
      Show all filters:
      $ ethtool -n eth0
      4 RX rings available
      Total 1 rules
      
      Filter: 15
      	Flow Type: Raw Ethernet
      	Src MAC addr: 00:00:00:00:00:00 mask: FF:FF:FF:FF:FF:FF
      	Dest MAC addr: 00:00:00:00:00:00 mask: FF:FF:FF:FF:FF:FF
      	Ethertype: 0x88F8 mask: 0x0
      	Action: Direct to queue 2
      
      Delete the filter by location:
      $ ethtool -N delete 15
      Signed-off-by: default avatarRuhao Gao <ruhao.gao@ni.com>
      Signed-off-by: default avatarGangfeng Huang <gangfeng.huang@ni.com>
      Tested-by: default avatarAaron Brown <aaron.f.brown@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      64c75d41
    • Gangfeng Huang's avatar
      igb: add support of RX network flow classification · 0e71def2
      Gangfeng Huang authored
      This patch is meant to allow for RX network flow classification to insert
      and remove Rx filter by ethtool. Ethtool interface has it's own rules
      manager
      
      Show all filters:
      $ ethtool -n eth0
      4 RX rings available
      Total 2 rules
      Signed-off-by: default avatarRuhao Gao <ruhao.gao@ni.com>
      Signed-off-by: default avatarGangfeng Huang <gangfeng.huang@ni.com>
      Tested-by: default avatarAaron Brown <aaron.f.brown@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      0e71def2
    • David S. Miller's avatar
      Merge branch 'qdisc-hash-fixes' · 3e7d2d45
      David S. Miller authored
      Jiri Kosina says:
      
      ====================
      qdisc-hashtable fixes
      
      The following two patches fix all the issues that have been reported
      against the conversion of qdisc linked list to hashtable (currently in
      net-next) so far.
      
      First patch adjusts handling of singleton qdiscs to the new semantics, and
      is rather straightforward.
      
      The second patch, which fixes "cosmetic" issue of duplicate entries in the
      qdisc dump for ingress qdiscs, is a little bit more hairy; I personally
      would love to see all the already existing "if (ingress)"-like hacks go
      away (by, let's say, introducing a general TCQ_F_? flag), but that's way
      out of scope of this patchset (but already on my todo).
      
      Thanks a lot to Daniel Borkmann and David Ahern for reporting the issues
      and testing the patches promptly.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3e7d2d45
    • Jiri Kosina's avatar
      net: sched: avoid duplicates in qdisc dump · ea327469
      Jiri Kosina authored
      tc_dump_qdisc() performs dumping of the per-device qdiscs in two phases;
      first, the "standard" dev->qdisc is being dumped. Second, if there is/are
      ingress queue(s), they are being dumped as well.
      
      After conversion of netdevice's qdisc linked-list into hashtable, these
      two sets are not in two disjunctive sets/lists any more, but are both
      "reachable" directly from netdevice's hashtable. As a consequence, the
      "full-depth" dump of the ingress qdiscs results in immediately hitting the
      netdevice hashtable again, and duplicating the dump that has already been
      performed for dev->qdisc.
      What in fact needs to be dumped in case of ingress queue is "just" the
      top-level ingress qdisc, as everything else has been dumped already.
      
      Fix this by extending tc_dump_qdisc_root() in a way that it can be instructed
      whether it should (while performing the "full" per-netdev qdisc dump) perform
      the whole recursion, or just dump "additional" top-level (ingress) qdiscs
      without performing any kind of recursion.
      
      This fixes duplicate dumps such as
      
      	qdisc mq 0: root
      	qdisc pfifo_fast 0: parent :4 bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
      	qdisc pfifo_fast 0: parent :3 bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
      	qdisc pfifo_fast 0: parent :2 bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
      	qdisc pfifo_fast 0: parent :1 bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
      	qdisc clsact ffff: parent ffff:fff1
      	qdisc pfifo_fast 0: parent :4 bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
      	qdisc pfifo_fast 0: parent :3 bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
      	qdisc pfifo_fast 0: parent :2 bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
      	qdisc pfifo_fast 0: parent :1 bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
      
      Fixes: 59cc1f61 ("net: sched: convert qdisc linked list to hashtable")
      Reported-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
      Tested-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
      Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ea327469
    • Jiri Kosina's avatar
      net: sched: fix handling of singleton qdiscs with qdisc_hash · 69012ae4
      Jiri Kosina authored
      qdisc_match_from_root() is now iterating over per-netdevice qdisc
      hashtable instead of going through a linked-list of qdiscs (independently
      on the actual underlying netdev), which was the case before the switch to
      hashtable for qdiscs.
      
      For singleton qdiscs, there is no underlying netdev associated though, and
      therefore dumping a singleton qdisc will panic, as qdisc_dev(root) will
      always be NULL.
      
       BUG: unable to handle kernel NULL pointer dereference at 0000000000000410
       IP: [<ffffffff8167efac>] qdisc_match_from_root+0x2c/0x70
       PGD 1aceba067 PUD 1aceb7067 PMD 0
       Oops: 0000 [#1] PREEMPT SMP
      [ ... ]
       task: ffff8801ec996e00 task.stack: ffff8801ec934000
       RIP: 0010:[<ffffffff8167efac>]  [<ffffffff8167efac>] qdisc_match_from_root+0x2c/0x70
       RSP: 0018:ffff8801ec937ab0  EFLAGS: 00010203
       RAX: 0000000000000408 RBX: ffff88025e612000 RCX: ffffffffffffffd8
       RDX: 0000000000000000 RSI: 00000000ffff0000 RDI: ffffffff81cf8100
       RBP: ffff8801ec937ab0 R08: 000000000001c160 R09: ffff8802668032c0
       R10: ffffffff81cf8100 R11: 0000000000000030 R12: 00000000ffff0000
       R13: ffff88025e612000 R14: ffffffff81cf3140 R15: 0000000000000000
       FS:  00007f24b9af6740(0000) GS:ffff88026f280000(0000) knlGS:0000000000000000
       CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
       CR2: 0000000000000410 CR3: 00000001aceec000 CR4: 00000000001406e0
       Stack:
        ffff8801ec937ad0 ffffffff81681210 ffff88025dd51a00 00000000fffffff1
        ffff8801ec937b88 ffffffff81681e4e ffffffff81c42bc0 ffff880262431500
        ffffffff81cf3140 ffff88025dd51a10 ffff88025dd51a24 00000000ec937b38
       Call Trace:
        [<ffffffff81681210>] qdisc_lookup+0x40/0x50
        [<ffffffff81681e4e>] tc_modify_qdisc+0x21e/0x550
        [<ffffffff8166ae25>] rtnetlink_rcv_msg+0x95/0x220
        [<ffffffff81209602>] ? __kmalloc_track_caller+0x172/0x230
        [<ffffffff8166ad90>] ? rtnl_newlink+0x870/0x870
        [<ffffffff816897b7>] netlink_rcv_skb+0xa7/0xc0
        [<ffffffff816657c8>] rtnetlink_rcv+0x28/0x30
        [<ffffffff8168919b>] netlink_unicast+0x15b/0x210
        [<ffffffff81689569>] netlink_sendmsg+0x319/0x390
        [<ffffffff816379f8>] sock_sendmsg+0x38/0x50
        [<ffffffff81638296>] ___sys_sendmsg+0x256/0x260
        [<ffffffff811b1275>] ? __pagevec_lru_add_fn+0x135/0x280
        [<ffffffff811b1a90>] ? pagevec_lru_move_fn+0xd0/0xf0
        [<ffffffff811b1140>] ? trace_event_raw_event_mm_lru_insertion+0x180/0x180
        [<ffffffff811b1b85>] ? __lru_cache_add+0x75/0xb0
        [<ffffffff817708a6>] ? _raw_spin_unlock+0x16/0x40
        [<ffffffff811d8dff>] ? handle_mm_fault+0x39f/0x1160
        [<ffffffff81638b15>] __sys_sendmsg+0x45/0x80
        [<ffffffff81638b62>] SyS_sendmsg+0x12/0x20
        [<ffffffff810038e7>] do_syscall_64+0x57/0xb0
      
      Fix this by special-casing singleton qdiscs (those that don't have
      underlying netdevice) and introduce immediate handling of those rather
      than trying to go over an underlying netdevice. We're in the same
      situation in tc_dump_qdisc_root() and tc_dump_tclass_root().
      
      Ultimately, this will have to be slightly reworked so that we are actually
      able to show singleton qdiscs (noop) in the dump properly; but we're not
      currently doing that anyway, so no regression there, and better do this in
      a gradual manner.
      
      Fixes: 59cc1f61 ("net: sched: convert qdisc linked list to hashtable")
      Reported-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
      Tested-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
      Reported-by: default avatarDavid Ahern <dsa@cumulusnetworks.com>
      Tested-by: default avatarDavid Ahern <dsa@cumulusnetworks.com>
      Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      69012ae4
    • David S. Miller's avatar
      Merge branch 'tipc-next' · e951f145
      David S. Miller authored
      Jon Maloy says:
      
      ====================
      tipc: bearer and link improvements
      
      The first commit makes it possible to set and check the 'blocked' state
      of a bearer from the generic bearer layer. The second commit is a small
      improvement to the link congestion mechanism.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e951f145
    • Jon Paul Maloy's avatar
      tipc: ensure that link congestion and wakeup use same criteria · 5a0950c2
      Jon Paul Maloy authored
      When a link is attempted woken up after congestion, it uses a different,
      more generous criteria than when it was originally declared congested.
      This has the effect that the link, and the sending process, sometimes
      will be woken up unnecessarily, just to immediately return to congestion
      when it turns out there is not not enough space in its send queue to
      host the pending message. This is a waste of CPU cycles.
      
      We now change the function link_prepare_wakeup() to use exactly the same
      criteria as tipc_link_xmit(). However, since we are now excluding the
      window limit from the wakeup calculation, and the current backlog limit
      for the lowest level is too small to house even a single maximum-size
      message, we have to expand this limit. We do this by evaluating an
      alternative, minimum value during the setting of the importance limits.
      Acked-by: default avatarYing Xue <ying.xue@windriver.com>
      Signed-off-by: default avatarJon Maloy <jon.maloy@ericsson.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5a0950c2
    • Jon Paul Maloy's avatar
      tipc: make bearer packet filtering generic · 0d051bf9
      Jon Paul Maloy authored
      In commit 5b7066c3 ("tipc: stricter filtering of packets in bearer
      layer") we introduced a method of filtering out messages while a bearer
      is being reset, to avoid that links may be re-created and come back in
      working state while we are still in the process of shutting them down.
      
      This solution works well, but is limited to only work with L2 media, which
      is insufficient with the increasing use of UDP as carrier media.
      
      We now replace this solution with a more generic one, by introducing a
      new flag "up" in the generic struct tipc_bearer. This field will be set
      and reset at the same locations as with the previous solution, while
      the packet filtering is moved to the generic code for the sending side.
      On the receiving side, the filtering is still done in media specific
      code, but now including the UDP bearer.
      Acked-by: default avatarYing Xue <ying.xue@windriver.com>
      Signed-off-by: default avatarJon Maloy <jon.maloy@ericsson.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0d051bf9
    • David S. Miller's avatar
      Merge branch 'qed-next' · 37bd91d1
      David S. Miller authored
      Sudarsana Reddy Kalluru says:
      
      ====================
      qed*: Add support for additional statistics.
      
      The patch series adds qed/qede support for new statistics.
      Patch (1) adds couple of statistcs for "ethtool -S" display.
      Patch (2) adds support for per-queue statistics to ethtool display.
      Patch (3) adds qed support for NCSI statistics.
      
      Please consider applying this to 'net-next' branch.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      37bd91d1
    • Sudarsana Reddy Kalluru's avatar
      qed: Add support for NCSI statistics. · 6c754246
      Sudarsana Reddy Kalluru authored
      The patch adds driver support for sending the NCSI statistics to the
      MFW. This is an asynchronous request from MFW. Upon receiving this, driver
      populates the required data and send it to MFW.
      Signed-off-by: default avatarSudarsana Reddy Kalluru <sudarsana.kalluru@qlogic.com>
      Signed-off-by: default avatarYuval Mintz <Yuval.Mintz@qlogic.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6c754246
    • Sudarsana Reddy Kalluru's avatar
    • Sudarsana Reddy Kalluru's avatar
      qede: Add support for capturing additional stats in ethtool-stats display. · 1a5a366f
      Sudarsana Reddy Kalluru authored
      The patch adds driver support for capturing stats ttl0_discard and
      packet_too_big_discard in "ethtool -S" display.
      Signed-off-by: default avatarSudarsana Reddy Kalluru <sudarsana.kalluru@qlogic.com>
      Signed-off-by: default avatarYuval Mintz <Yuval.Mintz@qlogic.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1a5a366f
    • Colin Ian King's avatar
      net: atm: remove redundant null pointer check on dev->name · 0d135e4f
      Colin Ian King authored
      dev->name is a char array of IFNAMSIZ elements, hence can never be
      null, so the null pointer check is redundant. Remove it.
      Signed-off-by: default avatarColin Ian King <colin.king@canonical.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0d135e4f
    • Appana Durga Kedareswara Rao's avatar
      net: phy: Update copyright info · e202d4c6
      Appana Durga Kedareswara Rao authored
      For implementing this driver most of the inputs is
      provided by Andrew Lunn.
      
      Updating the driver with Andrew Copy right.
      Signed-off-by: default avatarKedareswara rao Appana <appanad@xilinx.com>
      Signed-off-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e202d4c6
    • shubhrajyoti.datta@xilinx.com's avatar
      net: ethernet: macb: Add support for rx_clk · aead88bd
      shubhrajyoti.datta@xilinx.com authored
      Some of the platforms like zynqmp ultrascale+ has a
      separate clock gate for the rx clock. Add an optional
      rx_clk so that the clock can be enabled.
      Signed-off-by: default avatarShubhrajyoti Datta <shubhrajyoti.datta@xilinx.com>
      Acked-by: default avatarNicolas Ferre <nicolas.ferre@atmel.com>
      Acked-by: default avatarRob Herring <robh@kernel.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      aead88bd
    • David S. Miller's avatar
      Merge branch '40GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue · d52bfbda
      David S. Miller authored
      Jeff Kirsher says:
      
      ====================
      40GbE Intel Wired LAN Driver Updates 2016-08-18
      
      This series contains updates to i40e and i40evf only.
      
      Wei Yongjun updates i40e to use list_move() instead of list_del() &
      list_add() operations.
      
      Anjali fixes an issue where the client->open call was not protected with
      the client instance mutex, which allowed client->close to be called before
      the open all completed.
      
      Catherine makes sure that the VLAN count (and stats) gets reset to 0
      after reset.
      
      Jake provides two patches, first adds the needed rtnl lock around
      i40evf_set_interrupt_capability() since i40evf_init_task() does not
      hold the rtnl_lock.  Second fixes an issue where users could reduce
      the number of channels (queues) below the current flow director
      filter rules targets.
      
      Dave fixes a problem where a static analysis tool generates a warning
      so eliminating the irrelevant check and redundant assignment for the
      value of enabled_tc.
      
      Avinash fixes an sync issue where the iWARP device open is called
      before the PCI register writes are completed, so ensure the register
      writes complete before exiting the setup function.
      
      Alan fixes a bug which causes RSS to continue to work after being
      disabled.
      
      Carolyn implements a feature change which allows using ethtool to set
      RDD hash options using less than four parameters if desired.
      
      Dan Carpenter cleans up a stray unlock.
      
      Sridhar exposes the "trust" flag to userspace via ndo_get_vf_config().
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d52bfbda
  2. 18 Aug, 2016 17 commits