04 Mar, 2019

1 commit

  • We were skipping the prepare phase which causes some problems with at
    least a couple of drivers:

    - mv88e6xxx chooses to skip programming VID = 0 with -EOPNOTSUPP in
    the prepare phase, but we would still try to force this VID since we
    would only call the commit phase and so we would get the driver to
    return -EINVAL instead

    - qca8k does not currently have a port_vlan_add() callback implemented,
    yet we would try to call that unconditionally leading to a NPD

    Fix both issues by conforming to the current model doing a
    prepare/commit phase, this makes us consistent throughout the code and
    assumptions.

    Reported-by: Heiner Kallweit
    Reported-by: Michal Vokáč
    Fixes: 061f6a505ac3 ("net: dsa: Add ndo_vlan_rx_{add, kill}_vid implementation")
    Signed-off-by: Florian Fainelli
    Signed-off-by: David S. Miller

    Florian Fainelli
     

28 Feb, 2019

2 commits

  • Now that we have converted all possible callers to using a switchdev
    notifier for attributes we do not have a need for implementing
    switchdev_ops anymore, and this can be removed from all drivers the
    net_device structure.

    Signed-off-by: Florian Fainelli
    Reviewed-by: Ido Schimmel
    Signed-off-by: David S. Miller

    Florian Fainelli
     
  • Following patches will change the way we communicate setting a port's
    attribute and use notifiers towards that goal.

    Prepare DSA to support receiving notifier events targeting
    SWITCHDEV_PORT_ATTR_SET from both atomic and process context and use a
    small helper to translate the event notifier into something that
    dsa_slave_port_attr_set() can process.

    Signed-off-by: Florian Fainelli
    Signed-off-by: David S. Miller

    Florian Fainelli
     

25 Feb, 2019

1 commit


23 Feb, 2019

2 commits

  • In order to properly support VLAN filtering being enabled/disabled on a
    bridge, while having other ports being non bridge port members, we need
    to support the ndo_vlan_rx_{add,kill}_vid callbacks in order to make
    sure the non-bridge ports can continue receiving VLAN tags, even when
    the switch is globally configured to do ingress/egress VID checking.

    Since we can call dsa_port_vlan_{add,del} with a bridge_dev pointer
    NULL, we now need to check that in these two functions.

    We specifically deal with two possibly problematic cases:

    - creating a bridge VLAN entry while there is an existing VLAN device
    claiming that same VID

    - creating a VLAN device while there is an existing bridge VLAN entry
    with that VID

    Those are both resolved with returning -EBUSY back to user-space.

    Signed-off-by: Florian Fainelli
    Signed-off-by: David S. Miller

    Florian Fainelli
     
  • VLAN devices on top of a DSA network device which is already part of a
    bridge and with said bridge being VLAN aware should not be allowed to be
    enslaved into that bridge. For one, this duplicates functionality
    offered by the VLAN aware bridge which supports tagged and untagged VLAN
    frames processing and it would make things needlessly complex to e.g.:
    propagate FDB/MDB accordingly.

    Signed-off-by: Florian Fainelli
    Signed-off-by: David S. Miller

    Florian Fainelli
     

22 Feb, 2019

4 commits

  • With the bridge no longer calling switchdev_port_attr_get() to obtain
    the supported bridge port flags from a driver but instead trying to set
    the bridge port flags directly and relying on driver to reject
    unsupported configurations, we can effectively get rid of
    switchdev_port_attr_get() entirely since this was the only place where
    it was called.

    Signed-off-by: Florian Fainelli
    Reviewed-by: Ido Schimmel
    Acked-by: Jiri Pirko
    Signed-off-by: David S. Miller

    Florian Fainelli
     
  • Now that we have converted the bridge code and the drivers to check for
    bridge port(s) flags at the time we try to set them, there is no need
    for a get() -> set() sequence anymore and
    SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS_SUPPORT therefore becomes unused.

    Reviewed-by: Ido Schimmel
    Signed-off-by: Florian Fainelli
    Acked-by: Jiri Pirko
    Signed-off-by: David S. Miller

    Florian Fainelli
     
  • In preparation for removing SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS_SUPPORT,
    add support for a function that processes the
    SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS and
    SWITCHDEV_ATTR_ID_PORT_PRE_BRIDGE_FLAGS attributes and returns not
    supported for any flag set, since DSA does not currently support
    toggling those bridge port attributes (yet).

    Signed-off-by: Florian Fainelli
    Acked-by: Jiri Pirko
    Signed-off-by: David S. Miller

    Florian Fainelli
     
  • The Linux bridge implementation allows various properties of the bridge
    to be controlled, such as flooding unknown unicast and multicast frames.
    This patch adds the necessary DSA infrastructure to allow the Linux
    bridge support to control these properties for DSA switches.

    Reviewed-by: Vivien Didelot
    Signed-off-by: Russell King
    [florian: Add missing dp and ds variables declaration to fix build]
    Signed-off-by: Florian Fainelli
    Signed-off-by: David S. Miller

    Russell King
     

09 Feb, 2019

1 commit


07 Feb, 2019

2 commits

  • DSA implements SWITCHDEV_ATTR_ID_PORT_PARENT_ID and we want to get rid
    of switchdev_ops eventually, ease that migration by implementing a
    ndo_get_port_parent_id() function which returns what
    switchdev_port_attr_get() would do.

    Acked-by: Jiri Pirko
    Signed-off-by: Florian Fainelli
    Signed-off-by: David S. Miller

    Florian Fainelli
     
  • This function can't succeed if dp->pl is NULL. It will Oops inside the
    call to return phylink_ethtool_get_eee(dp->pl, e);

    Fixes: 1be52e97ed3e ("dsa: slave: eee: Allow ports to use phylink")
    Signed-off-by: Dan Carpenter
    Reviewed-by: Florian Fainelli
    Reviewed-by: Vivien Didelot
    Signed-off-by: David S. Miller

    Dan Carpenter
     

05 Feb, 2019

1 commit

  • The unbalance of master's promiscuity or allmulti will happen after ifdown
    and ifup a slave interface which is in a bridge.

    When we ifdown a slave interface , both the 'dsa_slave_close' and
    'dsa_slave_change_rx_flags' will clear the master's flags. The flags
    of master will be decrease twice.
    In the other hand, if we ifup the slave interface again, since the
    slave's flags were cleared the 'dsa_slave_open' won't set the master's
    flag, only 'dsa_slave_change_rx_flags' that triggered by 'br_add_if'
    will set the master's flags. The flags of master is increase once.

    Only propagating flag changes when a slave interface is up makes
    sure this does not happen. The 'vlan_dev_change_rx_flags' had the
    same problem and was fixed, and changes here follows that fix.

    Fixes: 91da11f870f0 ("net: Distributed Switch Architecture protocol support")
    Signed-off-by: Rundong Ge
    Signed-off-by: David S. Miller

    Rundong Ge
     

18 Jan, 2019

2 commits

  • A follow-up patch will enable vetoing of FDB entries. Make it possible
    to communicate details of why an FDB entry is not acceptable back to the
    user.

    Signed-off-by: Petr Machata
    Signed-off-by: David S. Miller

    Petr Machata
     
  • Drivers may not be able to support certain FDB entries, and an error
    code is insufficient to give clear hints as to the reasons of rejection.

    In order to make it possible to communicate the rejection reason, extend
    ndo_fdb_add() with an extack argument. Adapt the existing
    implementations of ndo_fdb_add() to take the parameter (and ignore it).
    Pass the extack parameter when invoking ndo_fdb_add() from rtnl_fdb_add().

    Signed-off-by: Petr Machata
    Signed-off-by: David S. Miller

    Petr Machata
     

10 Dec, 2018

1 commit

  • Several conflicts, seemingly all over the place.

    I used Stephen Rothwell's sample resolutions for many of these, if not
    just to double check my own work, so definitely the credit largely
    goes to him.

    The NFP conflict consisted of a bug fix (moving operations
    past the rhashtable operation) while chaning the initial
    argument in the function call in the moved code.

    The net/dsa/master.c conflict had to do with a bug fix intermixing of
    making dsa_master_set_mtu() static with the fixing of the tagging
    attribute location.

    cls_flower had a conflict because the dup reject fix from Or
    overlapped with the addition of port range classifiction.

    __set_phy_supported()'s conflict was relatively easy to resolve
    because Andrew fixed it in both trees, so it was just a matter
    of taking the net-next copy. Or at least I think it was :-)

    Joe Stringer's fix to the handling of netns id 0 in bpf_sk_lookup()
    intermixed with changes on how the sdif and caller_net are calculated
    in these code paths in net-next.

    The remaining BPF conflicts were largely about the addition of the
    __bpf_md_ptr stuff in 'net' overlapping with adjustments and additions
    to the relevant data structure where the MD pointer macros are used.

    Signed-off-by: David S. Miller

    David S. Miller
     

01 Dec, 2018

1 commit

  • While introducing the DSA tagging protocol attribute, it was added to the DSA
    slave network devices, but those actually see untagged traffic (that is their
    whole purpose). Correct this mistake by putting the tagging sysfs attribute
    under the DSA master network device where this is the information that we need.

    While at it, also correct the sysfs documentation mistake that missed the
    "dsa/" directory component of the attribute.

    Fixes: 98cdb4807123 ("net: dsa: Expose tagging protocol to user-space")
    Signed-off-by: Florian Fainelli
    Reviewed-by: Andrew Lunn
    Signed-off-by: David S. Miller

    Florian Fainelli
     

24 Nov, 2018

2 commits

  • Drop switchdev_ops.switchdev_port_obj_add and _del. Drop the uses of
    this field from all clients, which were migrated to use switchdev
    notification in the previous patches.

    Add a new function switchdev_port_obj_notify() that sends the switchdev
    notifications SWITCHDEV_PORT_OBJ_ADD and _DEL.

    Update switchdev_port_obj_del_now() to dispatch to this new function.
    Drop __switchdev_port_obj_add() and update switchdev_port_obj_add()
    likewise.

    Signed-off-by: Petr Machata
    Reviewed-by: Ido Schimmel
    Signed-off-by: David S. Miller

    Petr Machata
     
  • Following patches will change the way of distributing port object
    changes from a switchdev operation to a switchdev notifier. The
    switchdev code currently recursively descends through layers of lower
    devices, eventually calling the op on a front-panel port device. The
    notifier will instead be sent referencing the bridge port device, which
    may be a stacking device that's one of front-panel ports uppers, or a
    completely unrelated device.

    DSA currently doesn't support any other uppers than bridge.
    SWITCHDEV_OBJ_ID_HOST_MDB and _PORT_MDB objects are always notified on
    the bridge port device. Thus the only case that a stacked device could
    be validly referenced by port object notifications are bridge
    notifications for VLAN objects added to the bridge itself. But the
    driver explicitly rejects such notifications in dsa_port_vlan_add(). It
    is therefore safe to assume that the only interesting case is that the
    notification is on a front-panel port netdevice. Therefore keep the
    filtering by dsa_slave_dev_check() in place.

    To handle SWITCHDEV_PORT_OBJ_ADD and _DEL, subscribe to the blocking
    notifier chain. Dispatch to rocker_port_obj_add() resp. _del() to
    maintain the behavior that the switchdev operation based code currently
    has.

    Signed-off-by: Petr Machata
    Acked-by: Jiri Pirko
    Signed-off-by: David S. Miller

    Petr Machata
     

20 Oct, 2018

1 commit

  • This fixes a problem introduced by:
    commit 2cde6acd49da ("netpoll: Fix __netpoll_rcu_free so that it can hold the rtnl lock")

    When using netconsole on a bond, __netpoll_cleanup can asynchronously
    recurse multiple times, each __netpoll_free_async call can result in
    more __netpoll_free_async's. This means there is now a race between
    cleanup_work queues on multiple netpoll_info's on multiple devices and
    the configuration of a new netpoll. For example if a netconsole is set
    to enable 0, reconfigured, and enable 1 immediately, this netconsole
    will likely not work.

    Given the reason for __netpoll_free_async is it can be called when rtnl
    is not locked, if it is locked, we should be able to execute
    synchronously. It appears to be locked everywhere it's called from.

    Generalize the design pattern from the teaming driver for current
    callers of __netpoll_free_async.

    CC: Neil Horman
    CC: "David S. Miller"
    Signed-off-by: Debabrata Banerjee
    Signed-off-by: David S. Miller

    Debabrata Banerjee
     

18 Oct, 2018

1 commit

  • Currently, an FDB entry only ceases being offloaded when it is deleted.
    This changes with VxLAN encapsulation.

    Devices capable of performing VxLAN encapsulation usually have only one
    FDB table, unlike the software data path which has two - one in the
    bridge driver and another in the VxLAN driver.

    Therefore, bridge FDB entries pointing to a VxLAN device are only
    offloaded if there is a corresponding entry in the VxLAN FDB.

    Allow clearing the offload indication in case the corresponding entry
    was deleted from the VxLAN FDB.

    Signed-off-by: Ido Schimmel
    Reviewed-by: Petr Machata
    Signed-off-by: David S. Miller

    Ido Schimmel
     

08 Sep, 2018

1 commit

  • There is no way for user-space to know what a given DSA network device's
    tagging protocol is. Expose this information through a dsa/tagging
    attribute which reflects the tagging protocol currently in use.

    This is helpful for configuration (e.g: none behaves dramatically
    different wrt. bridges) as well as for packet capture tools when there
    is not a proper Ethernet type available.

    Signed-off-by: Florian Fainelli
    Signed-off-by: David S. Miller

    Florian Fainelli
     

22 Aug, 2018

1 commit

  • After commit 90b73b77d08e, list_head is no longer needed.
    Now we just need to convert the list iteration to array
    iteration for drivers.

    Fixes: 90b73b77d08e ("net: sched: change action API to use array of pointers to actions")
    Cc: Jiri Pirko
    Cc: Vlad Buslov
    Signed-off-by: Cong Wang
    Signed-off-by: David S. Miller

    Cong Wang
     

10 Aug, 2018

1 commit


09 Aug, 2018

1 commit

  • For a port to be able to use EEE, both the MAC and the PHY must
    support EEE. A phy can be provided by both a phydev or phylink. Verify
    at least one of these exist, not just phydev.

    Fixes: aab9c4067d23 ("net: dsa: Plug in PHYLINK support")
    Signed-off-by: Andrew Lunn
    Reviewed-by: Florian Fainelli
    Signed-off-by: David S. Miller

    Andrew Lunn
     

03 Aug, 2018

1 commit


02 Aug, 2018

1 commit


26 Jun, 2018

1 commit

  • Pass the extact struct from a tc qdisc add to the block bind function and,
    in turn, to the setup_tc ndo of binding device via the tc_block_offload
    struct. Pass this back to any block callback registrations to allow
    netlink logging of fails in the bind process.

    Signed-off-by: John Hurley
    Signed-off-by: Jakub Kicinski
    Acked-by: Jiri Pirko
    Signed-off-by: David S. Miller

    John Hurley
     

12 May, 2018

3 commits

  • Add support for PHYLINK within the DSA subsystem in order to support more
    complex devices such as pluggable (SFP) and non-pluggable (SFF) modules, 10G
    PHYs, and traditional PHYs. Using PHYLINK allows us to drop some amount of
    complexity we had while probing fixed and non-fixed PHYs using Device Tree.

    Because PHYLINK separates the Ethernet MAC/port configuration into different
    stages, we let switch drivers implement those, and for now, we maintain
    functionality by calling dsa_slave_adjust_link() during
    phylink_mac_link_{up,down} which provides semantically equivalent steps.

    Drivers willing to take advantage of PHYLINK should implement the phylink_mac_*
    operations that DSA wraps.

    We cannot quite remove the adjust_link() callback just yet, because a number of
    drivers rely on that for configuring their "CPU" and "DSA" ports, this is done
    dsa_port_setup_phy_of() and dsa_port_fixed_link_register_of() still.

    Drivers that utilize fixed links for user-facing ports (e.g: bcm_sf2) will need
    to implement phylink_mac_ops from now on to preserve functionality, since PHYLINK
    *does not* create a phy_device instance for fixed links.

    Signed-off-by: Florian Fainelli
    Signed-off-by: David S. Miller

    Florian Fainelli
     
  • Since we use PHYLIB to manage the per-port link indication, this will
    also be reflected correctly in the network device's carrier state, so we
    can use ethtool_op_get_link() instead.

    Signed-off-by: Florian Fainelli
    Signed-off-by: David S. Miller

    Florian Fainelli
     
  • In preparation for adding support for PHYLINK within DSA, define a number of
    operations that we will need and that switch drivers can start implementing.
    Proper integration with PHYLINK will follow in subsequent patches.

    We start selecting PHYLINK (which implies PHYLIB) in net/dsa/Kconfig
    such that drivers can be guaranteed that this dependency is properly
    taken care of and can start referencing PHYLINK helper functions without
    requiring stubs or anything.

    Signed-off-by: Florian Fainelli
    Signed-off-by: David S. Miller

    Florian Fainelli
     

11 May, 2018

1 commit

  • Commit 161d82de1ff8 ("net: bridge: Notify about !added_by_user FDB
    entries") causes the below oops when bringing up a slave interface,
    because dsa_port_fdb_add is still scheduled, but with a NULL address.

    To fix this, keep the dsa_slave_switchdev_event function agnostic of the
    notified info structure and handle the added_by_user flag in the
    specific dsa_slave_switchdev_event_work function.

    [ 75.512263] Unable to handle kernel NULL pointer dereference at virtual address 00000000
    [ 75.519063] pgd = (ptrval)
    [ 75.520545] [00000000] *pgd=00000000
    [ 75.522839] Internal error: Oops: 17 [#1] ARM
    [ 75.525898] Modules linked in:
    [ 75.527673] CPU: 0 PID: 9 Comm: kworker/u2:1 Not tainted 4.17.0-rc2 #78
    [ 75.532988] Hardware name: Freescale Vybrid VF5xx/VF6xx (Device Tree)
    [ 75.538153] Workqueue: dsa_ordered dsa_slave_switchdev_event_work
    [ 75.542970] PC is at mv88e6xxx_port_db_load_purge+0x60/0x1b0
    [ 75.547341] LR is at mdiobus_read_nested+0x6c/0x78
    [ 75.550833] pc : [] lr : [] psr: 60070013
    [ 75.555796] sp : 9f54bd78 ip : 9f54bd87 fp : 9f54bddc
    [ 75.559719] r10: 00000000 r9 : 0000000e r8 : 9f6a6010
    [ 75.563643] r7 : 00000000 r6 : 81203048 r5 : 9f6a6010 r4 : 9f6a601c
    [ 75.568867] r3 : 00000000 r2 : 00000000 r1 : 0000000d r0 : 00000000
    [ 75.574094] Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none
    [ 75.579933] Control: 10c53c7d Table: 9de20059 DAC: 00000051
    [ 75.584384] Process kworker/u2:1 (pid: 9, stack limit = 0x(ptrval))
    [ 75.589349] Stack: (0x9f54bd78 to 0x9f54c000)
    [ 75.592406] bd60: 00000000 00000000
    [ 75.599295] bd80: 00000391 9f299d10 9f299d68 8014317c 9f7f0000 8120af00 00006dc2 00000000
    [ 75.606186] bda0: 8120af00 00000000 9f54bdec 1c9f5d92 8014317c 9f6a601c 9f6a6010 00000000
    [ 75.613076] bdc0: 00000000 00000000 9dd1141c 8125a0b4 9f54be0c 9f54bde0 804cd8a8 804cd56c
    [ 75.619966] bde0: 0000000e 80143680 00000001 9dce9c1c 81203048 9dce9c10 00000003 00000000
    [ 75.626858] be00: 9f54be5c 9f54be10 806abcac 804cd864 9f54be54 80143664 8014317c 80143054
    [ 75.633748] be20: ffcaa81d 00000000 812030b0 1c9f5d92 00000000 81203048 9f54beb4 00000003
    [ 75.640639] be40: ffffffff 00000000 9dd1141c 8125a0b4 9f54be84 9f54be60 80138e98 806abb18
    [ 75.647529] be60: 81203048 9ddc4000 9dce9c54 9f72a300 00000000 00000000 9f54be9c 9f54be88
    [ 75.654420] be80: 801390bc 80138e50 00000000 9dce9c54 9f54beac 9f54bea0 806a9524 801390a0
    [ 75.661310] bea0: 9f54bedc 9f54beb0 806a9c7c 806a950c 9f54becc 00000000 00000000 00000000
    [ 75.668201] bec0: 9f540000 1c9f5d92 805fe604 9ddffc00 9f54befc 9f54bee0 806ab228 806a9c38
    [ 75.675092] bee0: 806ab178 9ddffc00 9f4c1900 9f40d200 9f54bf34 9f54bf00 80131e30 806ab184
    [ 75.681983] bf00: 9f40d214 9f54a038 9f40d200 9f40d200 9f4c1918 812119a0 9f40d214 9f54a038
    [ 75.688873] bf20: 9f40d200 9f4c1900 9f54bf7c 9f54bf38 80132124 80131d1c 9f5f2dd8 00000000
    [ 75.695764] bf40: 812119a0 9f54a038 812119a0 81259c5b 9f5f2dd8 9f5f2dc0 9f53dbc0 00000000
    [ 75.702655] bf60: 9f4c1900 801320b4 9f5f2dd8 9f4f7e88 9f54bfac 9f54bf80 80137ad0 801320c0
    [ 75.709544] bf80: 9f54a000 9f53dbc0 801379a0 00000000 00000000 00000000 00000000 00000000
    [ 75.716434] bfa0: 00000000 9f54bfb0 801010e8 801379ac 00000000 00000000 00000000 00000000
    [ 75.723324] bfc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    [ 75.730206] bfe0: 00000000 00000000 00000000 00000000 00000013 00000000 00000000 00000000
    [ 75.737083] Backtrace:
    [ 75.738252] [] (mv88e6xxx_port_db_load_purge) from [] (mv88e6xxx_port_fdb_add+0x50/0x68)
    [ 75.746795] r10:8125a0b4 r9:9dd1141c r8:00000000 r7:00000000 r6:00000000 r5:9f6a6010
    [ 75.753323] r4:9f6a601c
    [ 75.754570] [] (mv88e6xxx_port_fdb_add) from [] (dsa_switch_event+0x1a0/0x660)
    [ 75.762238] r8:00000000 r7:00000003 r6:9dce9c10 r5:81203048 r4:9dce9c1c
    [ 75.767655] [] (dsa_switch_event) from [] (notifier_call_chain+0x54/0x94)
    [ 75.774893] r10:8125a0b4 r9:9dd1141c r8:00000000 r7:ffffffff r6:00000003 r5:9f54beb4
    [ 75.781423] r4:81203048
    [ 75.782672] [] (notifier_call_chain) from [] (raw_notifier_call_chain+0x28/0x30)
    [ 75.790514] r9:00000000 r8:00000000 r7:9f72a300 r6:9dce9c54 r5:9ddc4000 r4:81203048
    [ 75.796982] [] (raw_notifier_call_chain) from [] (dsa_port_notify+0x24/0x38)
    [ 75.804483] [] (dsa_port_notify) from [] (dsa_port_fdb_add+0x50/0x6c)
    [ 75.811371] [] (dsa_port_fdb_add) from [] (dsa_slave_switchdev_event_work+0xb0/0x10c)
    [ 75.819635] r4:9ddffc00
    [ 75.820885] [] (dsa_slave_switchdev_event_work) from [] (process_one_work+0x120/0x3a4)
    [ 75.829241] r6:9f40d200 r5:9f4c1900 r4:9ddffc00 r3:806ab178
    [ 75.833612] [] (process_one_work) from [] (worker_thread+0x70/0x574)
    [ 75.840415] r10:9f4c1900 r9:9f40d200 r8:9f54a038 r7:9f40d214 r6:812119a0 r5:9f4c1918
    [ 75.846945] r4:9f40d200
    [ 75.848191] [] (worker_thread) from [] (kthread+0x130/0x160)
    [ 75.854300] r10:9f4f7e88 r9:9f5f2dd8 r8:801320b4 r7:9f4c1900 r6:00000000 r5:9f53dbc0
    [ 75.860830] r4:9f5f2dc0
    [ 75.862076] [] (kthread) from [] (ret_from_fork+0x14/0x2c)
    [ 75.867999] Exception stack(0x9f54bfb0 to 0x9f54bff8)
    [ 75.871753] bfa0: 00000000 00000000 00000000 00000000
    [ 75.878640] bfc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    [ 75.885519] bfe0: 00000000 00000000 00000000 00000000 00000013 00000000
    [ 75.890844] r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:801379a0
    [ 75.897377] r4:9f53dbc0 r3:9f54a000
    [ 75.899663] Code: e3a02000 e3a03000 e14b26f4 e24bc055 (e5973000)
    [ 75.904575] ---[ end trace fbca818a124dbf0d ]---

    Fixes: 816a3bed9549 ("switchdev: Add fdb.added_by_user to switchdev notifications")
    Signed-off-by: Vivien Didelot
    Reviewed-by: Nikolay Aleksandrov
    Signed-off-by: David S. Miller

    Vivien Didelot
     

04 May, 2018

1 commit

  • The following patch enables sending notifications also for events on FDB
    entries that weren't added by the user. Give the drivers the information
    necessary to distinguish between the two origins of FDB entries.

    To maintain the current behavior, have switchdev-implementing drivers
    bail out on notifications about non-user-added FDB entries. In case of
    mlxsw driver, allow a call to mlxsw_sp_span_respin() so that SPAN over
    bridge catches up with the changed FDB.

    Signed-off-by: Petr Machata
    Reviewed-by: Nikolay Aleksandrov
    Acked-by: Ivan Vecera
    Signed-off-by: David S. Miller

    Petr Machata
     

27 Apr, 2018

1 commit

  • Up until now we largely assumed that we were interested in ETH_SS_STATS
    type of strings for all ethtool operations, this is about to change with
    the introduction of additional string sets, e.g: ETH_SS_PHY_STATS.
    Update all functions to take an appropriate stringset argument and act
    on it when it is different than ETH_SS_STATS for now.

    Signed-off-by: Florian Fainelli
    Signed-off-by: David S. Miller

    Florian Fainelli
     

05 Mar, 2018

1 commit

  • By passing the port, we allow different ports to have different
    statistics. This is useful since some ports have SERDES interfaces
    with their own statistic counters.

    Signed-off-by: Andrew Lunn
    Tested-by: Florian Fainelli
    Reviewed-by: Vivien Didelot
    Signed-off-by: David S. Miller

    Andrew Lunn
     

15 Feb, 2018

2 commits

  • Forward the rx/tx timestamp machinery from the dsa infrastructure to the
    switch driver.

    On the rx side, defer delivery of skbs until we have an rx timestamp.
    This mimicks the behavior of skb_defer_rx_timestamp.

    On the tx side, identify PTP packets, clone them, and pass them to the
    underlying switch driver before we transmit. This mimicks the behavior
    of skb_tx_timestamp.

    Adjusted txstamp API to keep the allocation and freeing of the clone
    in the same central function by Richard Cochran

    Signed-off-by: Brandon Streiff
    Signed-off-by: Richard Cochran
    Signed-off-by: Andrew Lunn
    Signed-off-by: David S. Miller

    Brandon Streiff
     
  • This patch adds support to the dsa slave network device so that
    switch drivers can implement the SIOC[GS]HWTSTAMP ioctls and the
    ethtool timestamp-info interface.

    Signed-off-by: Brandon Streiff
    Signed-off-by: Andrew Lunn
    Signed-off-by: David S. Miller

    Brandon Streiff
     

17 Dec, 2017

1 commit


14 Dec, 2017

1 commit

  • These duplicate includes have been found with scripts/checkincludes.pl but
    they have been removed manually to avoid removing false positives.

    Signed-off-by: Pravin Shedge
    Acked-by: Pablo Neira Ayuso
    Signed-off-by: David S. Miller

    Pravin Shedge