1. 27 Apr, 2021 5 commits
    • Tobias Waldekranz's avatar
      net: dsa: mv88e6xxx: Fix 6095/6097/6185 ports in non-SERDES CMODE · 6066234a
      Tobias Waldekranz authored
      The .serdes_get_lane op used the magic value 0xff to indicate a valid
      SERDES lane and 0 signaled that a non-SERDES mode was set on the port.
      
      Unfortunately, "0" is also a valid lane ID, so even when these ports
      where configured to e.g. RGMII the driver would set them up as SERDES
      ports.
      
      - Replace 0xff with 0 to indicate a valid lane ID. The number is on
        the one hand just as arbitrary, but it is at least the first valid one
        and therefore less of a surprise.
      
      - Follow the other .serdes_get_lane implementations and return -ENODEV
        in the case where no SERDES is assigned to the port.
      
      Fixes: f5be107c ("net: dsa: mv88e6xxx: Support serdes ports on MV88E6097/6095/6185")
      Signed-off-by: default avatarTobias Waldekranz <tobias@waldekranz.com>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6066234a
    • Ivan Bornyakov's avatar
      net: phy: marvell-88x2222: enable autoneg by default · 152fa811
      Ivan Bornyakov authored
      There is no real need for disabling autonigotiation in config_init().
      Leave it enabled by default.
      Signed-off-by: default avatarIvan Bornyakov <i.bornyakov@metrotek.ru>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      152fa811
    • Jiapeng Chong's avatar
      rxrpc: rxkad: Remove redundant variable offset · 6c375d79
      Jiapeng Chong authored
      Variable offset is being assigned a value from a calculation
      however the variable is never read, so this redundant variable
      can be removed.
      
      Cleans up the following clang-analyzer warning:
      
      net/rxrpc/rxkad.c:579:2: warning: Value stored to 'offset' is never read
      [clang-analyzer-deadcode.DeadStores].
      
      net/rxrpc/rxkad.c:485:2: warning: Value stored to 'offset' is never read
      [clang-analyzer-deadcode.DeadStores].
      Reported-by: default avatarAbaci Robot <abaci@linux.alibaba.com>
      Signed-off-by: default avatarJiapeng Chong <jiapeng.chong@linux.alibaba.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6c375d79
    • Christophe JAILLET's avatar
      macvlan: Use 'hash' iterators to simplify code · bb23ffa1
      Christophe JAILLET authored
      Use 'hash_for_each_rcu' and 'hash_for_each_safe' instead of hand writing
      them. This saves some lines of code, reduce indentation and improve
      readability.
      Signed-off-by: default avatarChristophe JAILLET <christophe.jaillet@wanadoo.fr>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      bb23ffa1
    • Linus Lüssing's avatar
      net: bridge: mcast: fix broken length + header check for MRDv6 Adv. · 99014088
      Linus Lüssing authored
      The IPv6 Multicast Router Advertisements parsing has the following two
      issues:
      
      For one thing, ICMPv6 MRD Advertisements are smaller than ICMPv6 MLD
      messages (ICMPv6 MRD Adv.: 8 bytes vs. ICMPv6 MLDv1/2: >= 24 bytes,
      assuming MLDv2 Reports with at least one multicast address entry).
      When ipv6_mc_check_mld_msg() tries to parse an Multicast Router
      Advertisement its MLD length check will fail - and it will wrongly
      return -EINVAL, even if we have a valid MRD Advertisement. With the
      returned -EINVAL the bridge code will assume a broken packet and will
      wrongly discard it, potentially leading to multicast packet loss towards
      multicast routers.
      
      The second issue is the MRD header parsing in
      br_ip6_multicast_mrd_rcv(): It wrongly checks for an ICMPv6 header
      immediately after the IPv6 header (IPv6 next header type). However
      according to RFC4286, section 2 all MRD messages contain a Router Alert
      option (just like MLD). So instead there is an IPv6 Hop-by-Hop option
      for the Router Alert between the IPv6 and ICMPv6 header, again leading
      to the bridge wrongly discarding Multicast Router Advertisements.
      
      To fix these two issues, introduce a new return value -ENODATA to
      ipv6_mc_check_mld() to indicate a valid ICMPv6 packet with a hop-by-hop
      option which is not an MLD but potentially an MRD packet. This also
      simplifies further parsing in the bridge code, as ipv6_mc_check_mld()
      already fully checks the ICMPv6 header and hop-by-hop option.
      
      These issues were found and fixed with the help of the mrdisc tool
      (https://github.com/troglobit/mrdisc).
      
      Fixes: 4b3087c7 ("bridge: Snoop Multicast Router Advertisements")
      Signed-off-by: default avatarLinus Lüssing <linus.luessing@c0d3.blue>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      99014088
  2. 26 Apr, 2021 35 commits