1. 08 5月, 2020 14 次提交
    • I
      dpaa2-eth: create a function to flush the XDP fds · 38c440b2
      Ioana Ciornei 提交于
      Create an independent function that takes a particular frame queue and
      an array of frame descriptors and tries to enqueue them until it hits
      the maximum number fo retries. The same function will be used in the
      next patch also on the XDP_TX path.
      
      Also, create the dpaa2_eth_xdp_fds structure to incorporate the array of
      FDs as well as the number of FDs already populated.
      Signed-off-by: NIoana Ciornei <ioana.ciornei@nxp.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      38c440b2
    • V
      net: dsa: sja1105: implement tc-gate using time-triggered virtual links · 834f8933
      Vladimir Oltean 提交于
      Restrict the TTEthernet hardware support on this switch to operate as
      closely as possible to IEEE 802.1Qci as possible. This means that it can
      perform PTP-time-based ingress admission control on streams identified
      by {DMAC, VID, PCP}, which is useful when trying to ensure the
      determinism of traffic scheduled via IEEE 802.1Qbv.
      
      The oddity comes from the fact that in hardware (and in TTEthernet at
      large), virtual links always need a full-blown action, including not
      only the type of policing, but also the list of destination ports. So in
      practice, a single tc-gate action will result in all packets getting
      dropped. Additional actions (either "trap" or "redirect") need to be
      specified in the same filter rule such that the conforming packets are
      actually forwarded somewhere.
      
      Apart from the VL Lookup, Policing and Forwarding tables which need to
      be programmed for each flow (virtual link), the Schedule engine also
      needs to be told to open/close the admission gates for each individual
      virtual link. A fairly accurate (and detailed) description of how that
      works is already present in sja1105_tas.c, since it is already used to
      trigger the egress gates for the tc-taprio offload (IEEE 802.1Qbv). Key
      point here, we remember that the schedule engine supports 8
      "subschedules" (execution threads that iterate through the global
      schedule in parallel, and that no 2 hardware threads must execute a
      schedule entry at the same time). For tc-taprio, each egress port used
      one of these 8 subschedules, leaving a total of 4 subschedules unused.
      In principle we could have allocated 1 subschedule for the tc-gate
      offload of each ingress port, but actually the schedules of all virtual
      links installed on each ingress port would have needed to be merged
      together, before they could have been programmed to hardware. So
      simplify our life and just merge the entire tc-gate configuration, for
      all virtual links on all ingress ports, into a single subschedule. Be
      sure to check that against the usual hardware scheduling conflicts, and
      program it to hardware alongside any tc-taprio subschedule that may be
      present.
      
      The following scenarios were tested:
      
      1. Quantitative testing:
      
         tc qdisc add dev swp2 clsact
         tc filter add dev swp2 ingress flower skip_sw \
                 dst_mac 42:be:24:9b:76:20 \
                 action gate index 1 base-time 0 \
                 sched-entry OPEN 1200 -1 -1 \
                 sched-entry CLOSE 1200 -1 -1 \
                 action trap
      
         ping 192.168.1.2 -f
         PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.
         .............................
         --- 192.168.1.2 ping statistics ---
         948 packets transmitted, 467 received, 50.7384% packet loss, time 9671ms
      
      2. Qualitative testing (with a phase-aligned schedule - the clocks are
         synchronized by ptp4l, not shown here):
      
         Receiver (sja1105):
      
         tc qdisc add dev swp2 clsact
         now=$(phc_ctl /dev/ptp1 get | awk '/clock time is/ {print $5}') && \
                 sec=$(echo $now | awk -F. '{print $1}') && \
                 base_time="$(((sec + 2) * 1000000000))" && \
                 echo "base time ${base_time}"
         tc filter add dev swp2 ingress flower skip_sw \
                 dst_mac 42:be:24:9b:76:20 \
                 action gate base-time ${base_time} \
                 sched-entry OPEN  60000 -1 -1 \
                 sched-entry CLOSE 40000 -1 -1 \
                 action trap
      
         Sender (enetc):
         now=$(phc_ctl /dev/ptp0 get | awk '/clock time is/ {print $5}') && \
                 sec=$(echo $now | awk -F. '{print $1}') && \
                 base_time="$(((sec + 2) * 1000000000))" && \
                 echo "base time ${base_time}"
         tc qdisc add dev eno0 parent root taprio \
                 num_tc 8 \
                 map 0 1 2 3 4 5 6 7 \
                 queues 1@0 1@1 1@2 1@3 1@4 1@5 1@6 1@7 \
                 base-time ${base_time} \
                 sched-entry S 01  50000 \
                 sched-entry S 00  50000 \
                 flags 2
      
         ping -A 192.168.1.1
         PING 192.168.1.1 (192.168.1.1): 56 data bytes
         ...
         ^C
         --- 192.168.1.1 ping statistics ---
         1425 packets transmitted, 1424 packets received, 0% packet loss
         round-trip min/avg/max = 0.322/0.361/0.990 ms
      
         And just for comparison, with the tc-taprio schedule deleted:
      
         ping -A 192.168.1.1
         PING 192.168.1.1 (192.168.1.1): 56 data bytes
         ...
         ^C
         --- 192.168.1.1 ping statistics ---
         33 packets transmitted, 19 packets received, 42% packet loss
         round-trip min/avg/max = 0.336/0.464/0.597 ms
      Signed-off-by: NVladimir Oltean <vladimir.oltean@nxp.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      834f8933
    • V
      net: dsa: sja1105: support flow-based redirection via virtual links · dfacc5a2
      Vladimir Oltean 提交于
      Implement tc-flower offloads for redirect, trap and drop using
      non-critical virtual links.
      
      Commands which were tested to work are:
      
        # Send frames received on swp2 with a DA of 42:be:24:9b:76:20 to the
        # CPU and to swp3. This type of key (DA only) when the port's VLAN
        # awareness state is off.
        tc qdisc add dev swp2 clsact
        tc filter add dev swp2 ingress flower skip_sw dst_mac 42:be:24:9b:76:20 \
                action mirred egress redirect dev swp3 \
                action trap
      
        # Drop frames received on swp2 with a DA of 42:be:24:9b:76:20, a VID
        # of 100 and a PCP of 0.
        tc filter add dev swp2 ingress protocol 802.1Q flower skip_sw \
                dst_mac 42:be:24:9b:76:20 vlan_id 100 vlan_prio 0 action drop
      
      Under the hood, all rules match on DMAC, VID and PCP, but when VLAN
      filtering is disabled, those are set internally by the driver to the
      port-based defaults. Because we would be put in an awkward situation if
      the user were to change the VLAN filtering state while there are active
      rules (packets would no longer match on the specified keys), we simply
      deny changing vlan_filtering unless the list of flows offloaded via
      virtual links is empty. Then the user can re-add new rules.
      Signed-off-by: NVladimir Oltean <vladimir.oltean@nxp.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      dfacc5a2
    • V
      net: dsa: sja1105: make room for virtual link parsing in flower offload · b70bb8d4
      Vladimir Oltean 提交于
      Virtual links are a sja1105 hardware concept of executing various flow
      actions based on a key extracted from the frame's DMAC, VID and PCP.
      
      Currently the tc-flower offload code supports only parsing the DMAC if
      that is the broadcast MAC address, and the VLAN PCP. Extract the key
      parsing logic from the L2 policers functionality and move it into its
      own function, after adding extra logic for matching on any DMAC and VID.
      Signed-off-by: NVladimir Oltean <vladimir.oltean@nxp.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b70bb8d4
    • V
      net: dsa: sja1105: add static tables for virtual links · 94f94d4a
      Vladimir Oltean 提交于
      This patch adds the register definitions for the:
      - VL Lookup Table
      - VL Policing Table
      - VL Forwarding Table
      - VL Forwarding Parameters Table
      
      These are needed in order to perform TTEthernet operations: QoS
      classification, flow-based policing and/or frame redirecting with the
      switch.
      Signed-off-by: NVladimir Oltean <vladimir.oltean@nxp.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      94f94d4a
    • C
      cxgb4: remove duplicate headers · bb206a08
      Chen Zhou 提交于
      Remove duplicate headers which are included twice.
      Signed-off-by: NChen Zhou <chenzhou10@huawei.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      bb206a08
    • G
      via-rhine: Add platform dependencies · 0932969e
      Geert Uytterhoeven 提交于
      The VIA Rhine Ethernet interface is only present on PCI devices or
      VIA/WonderMedia VT8500/WM85xx SoCs.  Add platform dependencies to the
      VIA_RHINE config symbol, to avoid asking the user about it when
      configuring a kernel without PCI or VT8500/WM85xx support.
      Signed-off-by: NGeert Uytterhoeven <geert+renesas@glider.be>
      Acked-by: NArnd Bergmann <arnd@arndb.de>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0932969e
    • P
      net:enetc: bug fix for qos sfi operate space after freed · 571cf296
      Po Liu 提交于
      'Dan Carpenter' reported:
      This code frees "sfi" and then dereferences it on the next line:
      >                 kfree(sfi);
      >                 clear_bit(sfi->index, epsfp.psfp_sfi_bitmap);
      
      This "sfi->index" should be "index".
      Reported-by: NDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: NPo Liu <Po.Liu@nxp.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      571cf296
    • J
      net: encx24j600: make encx24j600_hw_init() return void · 7f960633
      Jason Yan 提交于
      This function always return 0 now, we can make it return void to
      simplify the code. This fixes the following coccicheck warning:
      
      drivers/net/ethernet/microchip/encx24j600.c:609:5-8: Unneeded variable:
      "ret". Return "0" on line 653
      Signed-off-by: NJason Yan <yanaijie@huawei.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7f960633
    • J
      net: mlx4: remove unneeded variable "err" in mlx4_en_ethtool_add_mac_rule() · 5a7c4509
      Jason Yan 提交于
      Fix the following coccicheck warning:
      
      drivers/net/ethernet/mellanox/mlx4/en_ethtool.c:1396:5-8: Unneeded
      variable: "err". Return "0" on line 1411
      Signed-off-by: NJason Yan <yanaijie@huawei.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      5a7c4509
    • J
      net: tulip: de4x5: make PCI_signature() return void · 27ad2cd2
      Jason Yan 提交于
      This function always return 0 now, we can make it return void to
      simplify the code. This fixes the following coccicheck warning:
      
      drivers/net/ethernet/dec/tulip/de4x5.c:3908:11-17: Unneeded variable:
      "status". Return "0" on line 3912
      Signed-off-by: NJason Yan <yanaijie@huawei.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      27ad2cd2
    • J
      net: atheros: remove dead code in atl1c_resume() · f9a98f90
      Jason Yan 提交于
      This code has been marked dead for nearly 10 years. Remove it.
      Signed-off-by: NJason Yan <yanaijie@huawei.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f9a98f90
    • J
      b43: remove dead function b43_rssinoise_postprocess() · 49d4c392
      Jason Yan 提交于
      This function is dead for more than 10 years. Remove it.
      Signed-off-by: NJason Yan <yanaijie@huawei.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      49d4c392
    • Z
      net: phy: Make iproc_mdio_resume static · 31e2d067
      Zheng Zengkai 提交于
      Fix sparse warnings:
      
      drivers/net/phy/mdio-bcm-iproc.c:182:5: warning:
       symbol 'iproc_mdio_resume' was not declared. Should it be static?
      Reported-by: NHulk Robot <hulkci@huawei.com>
      Signed-off-by: NZheng Zengkai <zhengzengkai@huawei.com>
      Acked-by: NFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      31e2d067
  2. 07 5月, 2020 26 次提交