1. 10 Aug, 2015 19 commits
    • Ido Schimmel's avatar
      mlxsw: Call free_netdev when removing port · 26a80f6e
      Ido Schimmel authored
      When removing a port's netdevice we should also free the memory
      allocated by alloc_etherdev(). Do this by calling free_netdev() at the
      end of the teardown sequence.
      Reported-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
      Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
      Signed-off-by: default avatarJiri Pirko <jiri@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      26a80f6e
    • Masanari Iida's avatar
      net: ethernet: Fix double word "the the" in eth.c · ecea4991
      Masanari Iida authored
      This patch fix double word "the the" in
      Documentation/DocBook/networking/API-eth-get-headlen.html
      Documentation/DocBook/networking/netdev.html
      Documentation/DocBook/networking.xml
      
      These files are generated from comment in source,
      so I have to fix comment in net/ethernet/eth.c.
      Signed-off-by: default avatarMasanari Iida <standby24x7@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ecea4991
    • Shaohui Xie's avatar
      net: phy: add RealTek RTL8211DN phy id · 0024f892
      Shaohui Xie authored
      RTL8211DN is compatible with RTL8211E.
      Signed-off-by: default avatarShaohui Xie <Shaohui.Xie@freescale.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0024f892
    • Robert Shearman's avatar
      mpls: Enforce payload type of traffic sent using explicit NULL · 118d5234
      Robert Shearman authored
      RFC 4182 s2 states that if an IPv4 Explicit NULL label is the only
      label on the stack, then after popping the resulting packet must be
      treated as a IPv4 packet and forwarded based on the IPv4 header. The
      same is true for IPv6 Explicit NULL with an IPv6 packet following.
      
      Therefore, when installing the IPv4/IPv6 Explicit NULL label routes,
      add an attribute that specifies the expected payload type for use at
      forwarding time for determining the type of the encapsulated packet
      instead of inspecting the first nibble of the packet.
      Signed-off-by: default avatarRobert Shearman <rshearma@brocade.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      118d5234
    • David S. Miller's avatar
      Merge branch 'bpf-perf' · d74a790d
      David S. Miller authored
      Kaixu Xia says:
      
      ====================
      bpf: Introduce the new ability of eBPF programs to access hardware PMU counter
      
      This patchset is base on the net-next:
       git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git
      commit 9dc20a64.
      
      Previous patch v6 url:
      https://lkml.org/lkml/2015/8/4/188
      
      changes in V7:
       - rebase the whole patch set to net-next tree(9dc20a64);
       - split out the core perf APIs into Patch 1/5;
       - change the return value of function perf_event_attrs()
         from struct perf_event * to const struct perf_event * in
         Patch 1/5;
       - rename the function perf_event_read_internal() to perf_event_
         read_local() and rewrite it in Patch 1/5;
       - rename the function check_func_limit() to check_map_func
         _compatibility() and remove the unnecessary pass pointer to
         a pointer in Patch 4/5;
      
      changes in V6:
       - make the Patch 1/4 commit message more meaning and readable;
       - remove the unnecessary comment in Patch 2/4 and make it clean;
       - declare the function perf_event_release_kernel() in include/
         linux/perf_event.h to fix the build error when CONFIG_PERF_EVENTS
         isn't configured in Patch 2/4;
       - add function perf_event_attrs() to get the struct perf_event_attr
         in Patch 2/4.
       - move the related code from kernel/trace/bpf_trace.c to kernel/
         events/core.c and add function perf_event_read_internal() to
         avoid poking inside of the event outside of perf code in Patch 3/4;
       - generial the func & map match-pair with an array in Patch 3/4;
      
      changes in V5:
       - move struct fd_array_map_ops* fd_ops to bpf_map;
       - move array perf event decrement refcnt function to
         map_free;
       - fix the NULL ptr of perf_event_get();
       - move bpf_perf_event_read() to kernel/bpf/bpf_trace.c;
       - get rid of the remaining struct bpf_prog;
       - move the unnecessay cast on void *;
      
      changes in V4:
       - make the bpf_prog_array_map more generic;
       - fix the bug of event refcnt leak;
       - use more useful errno in bpf_perf_event_read();
      
      changes in V3:
       - collapse V2 patches 1-3 into one;
       - drop the function map->ops->map_traverse_elem() and release
         the struct perf_event in map_free;
       - only allow to access bpf_perf_event_read() from programs;
       - update the perf_event_array_map elem via xchg();
       - pass index directly to bpf_perf_event_read() instead of
         MAP_KEY;
      
      changes in V2:
       - put atomic_long_inc_not_zero() between fdget() and fdput();
       - limit the event type to PERF_TYPE_RAW and PERF_TYPE_HARDWARE;
       - Only read the event counter on current CPU or on current
         process;
       - add new map type BPF_MAP_TYPE_PERF_EVENT_ARRAY to store the
         pointer to the struct perf_event;
       - according to the perf_event_map_fd and key, the function
         bpf_perf_event_read() can get the Hardware PMU counter value;
      
      Patch 5/5 is a simple example and shows how to use this new eBPF
      programs ability. The PMU counter data can be found in
      /sys/kernel/debug/tracing/trace(trace_pipe).(the cycles PMU
      value when 'kprobe/sys_write' sampling)
      
        $ cat /sys/kernel/debug/tracing/trace_pipe
        $ ./tracex6
             ...
             syslog-ng-548   [000] d..1    76.905673: : CPU-0   681765271
             syslog-ng-548   [000] d..1    76.905690: : CPU-0   681787855
             syslog-ng-548   [000] d..1    76.905707: : CPU-0   681810504
             syslog-ng-548   [000] d..1    76.905725: : CPU-0   681834771
             syslog-ng-548   [000] d..1    76.905745: : CPU-0   681859519
             syslog-ng-548   [000] d..1    76.905766: : CPU-0   681890419
             syslog-ng-548   [000] d..1    76.905783: : CPU-0   681914045
             syslog-ng-548   [000] d..1    76.905800: : CPU-0   681935950
             syslog-ng-548   [000] d..1    76.905816: : CPU-0   681958299
                    ls-690   [005] d..1    82.241308: : CPU-5   3138451
                    sh-691   [004] d..1    82.244570: : CPU-4   7324988
                 <...>-699   [007] d..1    99.961387: : CPU-7   3194027
                 <...>-695   [003] d..1    99.961474: : CPU-3   288901
                 <...>-695   [003] d..1    99.961541: : CPU-3   383145
                 <...>-695   [003] d..1    99.961591: : CPU-3   450365
                 <...>-695   [003] d..1    99.961639: : CPU-3   515751
                 <...>-695   [003] d..1    99.961686: : CPU-3   579047
             ...
      
      The detail of patches is as follow:
      
      Patch 1/5 add the necessary core perf APIs perf_event_attrs(),
      perf_event_get(),perf_event_read_local() when accessing events
      counters in eBPF programs
      
      Patch 2/5 rewrites part of the bpf_prog_array map code and make it
      more generic;
      
      Patch 3/5 introduces a new bpf map type. This map only stores the
      pointer to struct perf_event;
      
      Patch 4/5 implements function bpf_perf_event_read() that get the
      selected hardware PMU conuter;
      
      Patch 5/5 gives a simple example.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d74a790d
    • Kaixu Xia's avatar
      samples/bpf: example of get selected PMU counter value · 47efb302
      Kaixu Xia authored
      This is a simple example and shows how to use the new ability
      to get the selected Hardware PMU counter value.
      Signed-off-by: default avatarKaixu Xia <xiakaixu@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      47efb302
    • Kaixu Xia's avatar
      bpf: Implement function bpf_perf_event_read() that get the selected hardware PMU conuter · 35578d79
      Kaixu Xia authored
      According to the perf_event_map_fd and index, the function
      bpf_perf_event_read() can convert the corresponding map
      value to the pointer to struct perf_event and return the
      Hardware PMU counter value.
      Signed-off-by: default avatarKaixu Xia <xiakaixu@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      35578d79
    • Kaixu Xia's avatar
      bpf: Add new bpf map type to store the pointer to struct perf_event · ea317b26
      Kaixu Xia authored
      Introduce a new bpf map type 'BPF_MAP_TYPE_PERF_EVENT_ARRAY'.
      This map only stores the pointer to struct perf_event. The
      user space event FDs from perf_event_open() syscall are converted
      to the pointer to struct perf_event and stored in map.
      Signed-off-by: default avatarKaixu Xia <xiakaixu@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ea317b26
    • Wang Nan's avatar
      bpf: Make the bpf_prog_array_map more generic · 2a36f0b9
      Wang Nan authored
      All the map backends are of generic nature. In order to avoid
      adding much special code into the eBPF core, rewrite part of
      the bpf_prog_array map code and make it more generic. So the
      new perf_event_array map type can reuse most of code with
      bpf_prog_array map and add fewer lines of special code.
      Signed-off-by: default avatarWang Nan <wangnan0@huawei.com>
      Signed-off-by: default avatarKaixu Xia <xiakaixu@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2a36f0b9
    • Kaixu Xia's avatar
      perf: add the necessary core perf APIs when accessing events counters in eBPF programs · ffe8690c
      Kaixu Xia authored
      This patch add three core perf APIs:
       - perf_event_attrs(): export the struct perf_event_attr from struct
         perf_event;
       - perf_event_get(): get the struct perf_event from the given fd;
       - perf_event_read_local(): read the events counters active on the
         current CPU;
      These APIs are needed when accessing events counters in eBPF programs.
      
      The API perf_event_read_local() comes from Peter and I add the
      corresponding SOB.
      Signed-off-by: default avatarKaixu Xia <xiakaixu@huawei.com>
      Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ffe8690c
    • David S. Miller's avatar
      Merge branch 'mv88e6xxx-switchdev-fdb' · f1d5ca43
      David S. Miller authored
      Vivien Didelot says:
      
      ====================
      net: dsa: mv88e6xxx: support switchdev FDB objects
      
      This patchset refactors the DSA and mv88e6xxx code to use the switchdev FDB
      objects.
      
      The first two patches add minor but necessary changes to switchdev, the third
      one implements the switchdev glue in DSA for FDB routines, and the remaining
      ones refactor the FDB access functions in the mv88e6xxx code.
      
      Below is an usage example (ports 0-2 belongs to br0, ports 3-4 belongs to br1):
      
          # bridge fdb add 3c:97:0e:11:30:6e dev swp2
          # bridge fdb add 3c:97:0e:11:40:78 dev swp3
          # bridge fdb add 3c:97:0e:11:50:86 dev swp4
          # bridge fdb del 3c:97:0e:11:40:78 dev swp3
          # bridge fdb
          01:00:5e:00:00:01 dev eth0 self permanent
          01:00:5e:00:00:01 dev eth1 self permanent
          00:50:d2:10:78:15 dev swp0 master br0 permanent
          3c:97:0e:11:30:6e dev swp2 self static
          00:50:d2:10:78:15 dev swp3 master br1 permanent
          3c:97:0e:11:50:86 dev swp4 self static
          # cat /sys/kernel/debug/dsa0/atu
          # DB   T/P  Vec State Addr
          # 001  Port 004   e   3c:97:0e:11:30:6e
          # 004  Port 010   e   3c:97:0e:11:50:86
      
      For the 88E6xxx switches, FIDs 1 to num_ports will be reserved for non-bridged
      ports and bridge groups, and the remaining will be later used by VLANs.
      
      This change is necessary to welcome the support for hardware VLANs (which will
      follow soon).
      
      Changes in v2:
      
       - remove ndo_bridge_{get,set,del}link from switchdev/DSA glue code
      
       - use ether_addr_copy instead of memcpy for MAC addresses
      
       - constify MAC address in port_fdb_{add,del}
      
       - split the mv88e6xxx code refactoring into several patches
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f1d5ca43
    • Vivien Didelot's avatar
      net: dsa: mv88e6xxx: rework FDB add/del operations · 87820510
      Vivien Didelot authored
      Add a low level function for the ATU Load operation, and provide FDB add
      and delete wrappers functions.
      Signed-off-by: default avatarVivien Didelot <vivien.didelot@savoirfairelinux.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      87820510
    • Vivien Didelot's avatar
      net: dsa: mv88e6xxx: rework FDB getnext operation · 6630e236
      Vivien Didelot authored
      This commit adds a low level _mv88e6xxx_atu_getnext function and helpers
      to rewrite the mv88e6xxx_port_fdb_getnext operation.
      
      A mv88e6xxx_atu_entry structure is added for convenient access to the
      hardware, and GLOBAL_ATU_FID is defined instead of the raw 0x01 value.
      
      The previous implementation did not handle the eventual trunk mapping.
      If the related bit is set, then the ATU data register would contain the
      trunk ID, and not the port vector.
      
      Check this in the FDB getnext operation and do not handle it (yet).
      Signed-off-by: default avatarVivien Didelot <vivien.didelot@savoirfairelinux.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6630e236
    • Vivien Didelot's avatar
      net: dsa: mv88e6xxx: rename ATU MAC accessors · 395059fb
      Vivien Didelot authored
      Rename the __mv88e6xxx_{read,write}_addr functions to more explicit
      _mv88e6xxx_atu_mac_{read,write} functions, which also respect the single
      underscore convention used in the file (meaning SMI lock must be held).
      
      In the meantime, define their MAC address parameters as an array of
      ETH_ALEN bytes instead of a char pointer.
      Signed-off-by: default avatarVivien Didelot <vivien.didelot@savoirfairelinux.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      395059fb
    • Vivien Didelot's avatar
      net: dsa: mv88e6xxx: extend fid mask · 368b1d9c
      Vivien Didelot authored
      The driver currently manages one FID per port (or bridge group), with a
      mask of DSA_MAX_PORTS bits, where 0 means that the FID is in use.
      
      The Marvell 88E6xxx switches support up to 4094 FIDs (from 1 to 0xfff;
      FID 0 means that multiple address databases are not being used).
      
      This patch changes the fid_mask for an fid_bitmap of 4096 bits.
      
      >From now on, FIDs 1 to num_ports are reserved for non-bridged ports and
      bridge groups (a bridge group gets the FID of its first member). The
      remaining bits will be reserved for VLAN entries.
      Signed-off-by: default avatarVivien Didelot <vivien.didelot@savoirfairelinux.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      368b1d9c
    • Vivien Didelot's avatar
      net: dsa: add support for switchdev FDB objects · 55045ddd
      Vivien Didelot authored
      Remove the fdb_{add,del,getnext} function pointer in favor of new
      port_fdb_{add,del,getnext}.
      
      Implement the switchdev_port_obj_{add,del,dump} functions in DSA to
      support the SWITCHDEV_OBJ_PORT_FDB objects.
      Signed-off-by: default avatarVivien Didelot <vivien.didelot@savoirfairelinux.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      55045ddd
    • Vivien Didelot's avatar
      net: switchdev: support static FDB addresses · 89024826
      Vivien Didelot authored
      This patch adds a is_static boolean to the switchdev_obj_fdb structure,
      in order to set the ndm_state to either NUD_NOARP or NUD_REACHABLE.
      Signed-off-by: default avatarVivien Didelot <vivien.didelot@savoirfairelinux.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      89024826
    • Vivien Didelot's avatar
      net: switchdev: change fdb addr for a byte array · 1525c386
      Vivien Didelot authored
      The address in the switchdev_obj_fdb structure is currently represented
      as a pointer. Replacing it for a 6-byte array allows switchdev to carry
      addresses directly read from hardware registers, not stored by the
      switch chip driver (as in Rocker).
      Signed-off-by: default avatarVivien Didelot <vivien.didelot@savoirfairelinux.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1525c386
    • Masanari Iida's avatar
      net:wimax: Fix doucble word "the the" in networking.xml · 4933d85c
      Masanari Iida authored
      This patch fix a double word "the the"
      in Documentation/DocBook/networking.xml and
      Documentation/DocBook/networking/API-Wimax-report-rfkill-sw.html.
      
      These files are generated from comment in source, so I had to
      fix the typo in net/wimax/io-rfkill.c
      Signed-off-by: default avatarMasanari Iida <standby24x7@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4933d85c
  2. 07 Aug, 2015 21 commits