1. 26 11月, 2021 3 次提交
    • F
      mac80211: add support for .ndo_fill_forward_path · d787a3e3
      Felix Fietkau 提交于
      This allows drivers to provide a destination device + info for flow offload
      Only supported in combination with 802.3 encap offload
      Signed-off-by: NFelix Fietkau <nbd@nbd.name>
      Tested-by: NLorenzo Bianconi <lorenzo@kernel.org>
      Link: https://lore.kernel.org/r/20211112112223.1209-1-nbd@nbd.nameSigned-off-by: NJohannes Berg <johannes.berg@intel.com>
      d787a3e3
    • L
      mac80211: Remove unused assignment statements · 71abf71e
      luo penghao 提交于
      The assignment of these three local variables in the file will not
      be used in the corresponding functions, so they should be deleted.
      
      The clang_analyzer complains as follows:
      
      net/mac80211/wpa.c:689:2 warning:
      net/mac80211/wpa.c:883:2 warning:
      net/mac80211/wpa.c:452:2 warning:
      
      Value stored to 'hdr' is never read
      Reported-by: NZeal Robot <zealci@zte.com.cn>
      Signed-off-by: Nluo penghao <luo.penghao@zte.com.cn>
      Link: https://lore.kernel.org/r/20211104061411.1744-1-luo.penghao@zte.com.cnSigned-off-by: NJohannes Berg <johannes.berg@intel.com>
      71abf71e
    • L
      cfg80211: fix possible NULL pointer dereference in cfg80211_stop_offchan_radar_detection · 91e89c77
      Lorenzo Bianconi 提交于
      Fix the following NULL pointer dereference in
      cfg80211_stop_offchan_radar_detection routine that occurs when hostapd
      is stopped during the CAC on offchannel chain:
      
      Sat Jan  1 0[  779.567851]   ESR = 0x96000005
      0:12:50 2000 dae[  779.572346]   EC = 0x25: DABT (current EL), IL = 32 bits
      mon.debug hostap[  779.578984]   SET = 0, FnV = 0
      d: hostapd_inter[  779.583445]   EA = 0, S1PTW = 0
      face_deinit_free[  779.587936] Data abort info:
      : num_bss=1 conf[  779.592224]   ISV = 0, ISS = 0x00000005
      ->num_bss=1
      Sat[  779.597403]   CM = 0, WnR = 0
       Jan  1 00:12:50[  779.601749] user pgtable: 4k pages, 39-bit VAs, pgdp=00000000418b2000
       2000 daemon.deb[  779.609601] [0000000000000000] pgd=0000000000000000, p4d=0000000000000000, pud=0000000000000000
      ug hostapd: host[  779.619657] Internal error: Oops: 96000005 [#1] SMP
      [  779.770810] CPU: 0 PID: 2202 Comm: hostapd Not tainted 5.10.75 #0
      [  779.776892] Hardware name: MediaTek MT7622 RFB1 board (DT)
      [  779.782370] pstate: 80000005 (Nzcv daif -PAN -UAO -TCO BTYPE=--)
      [  779.788384] pc : cfg80211_chandef_valid+0x10/0x490 [cfg80211]
      [  779.794128] lr : cfg80211_check_station_change+0x3190/0x3950 [cfg80211]
      [  779.800731] sp : ffffffc01204b7e0
      [  779.804036] x29: ffffffc01204b7e0 x28: ffffff80039bdc00
      [  779.809340] x27: 0000000000000000 x26: ffffffc008cb3050
      [  779.814644] x25: 0000000000000000 x24: 0000000000000002
      [  779.819948] x23: ffffff8002630000 x22: ffffff8003e748d0
      [  779.825252] x21: 0000000000000cc0 x20: ffffff8003da4a00
      [  779.830556] x19: 0000000000000000 x18: ffffff8001bf7ce0
      [  779.835860] x17: 00000000ffffffff x16: 0000000000000000
      [  779.841164] x15: 0000000040d59200 x14: 00000000000019c0
      [  779.846467] x13: 00000000000001c8 x12: 000636b9e9dab1c6
      [  779.851771] x11: 0000000000000141 x10: 0000000000000820
      [  779.857076] x9 : 0000000000000000 x8 : ffffff8003d7d038
      [  779.862380] x7 : 0000000000000000 x6 : ffffff8003d7d038
      [  779.867683] x5 : 0000000000000e90 x4 : 0000000000000038
      [  779.872987] x3 : 0000000000000002 x2 : 0000000000000004
      [  779.878291] x1 : 0000000000000000 x0 : 0000000000000000
      [  779.883594] Call trace:
      [  779.886039]  cfg80211_chandef_valid+0x10/0x490 [cfg80211]
      [  779.891434]  cfg80211_check_station_change+0x3190/0x3950 [cfg80211]
      [  779.897697]  nl80211_radar_notify+0x138/0x19c [cfg80211]
      [  779.903005]  cfg80211_stop_offchan_radar_detection+0x7c/0x8c [cfg80211]
      [  779.909616]  __cfg80211_leave+0x2c/0x190 [cfg80211]
      [  779.914490]  cfg80211_register_netdevice+0x1c0/0x6d0 [cfg80211]
      [  779.920404]  raw_notifier_call_chain+0x50/0x70
      [  779.924841]  call_netdevice_notifiers_info+0x54/0xa0
      [  779.929796]  __dev_close_many+0x40/0x100
      [  779.933712]  __dev_change_flags+0x98/0x190
      [  779.937800]  dev_change_flags+0x20/0x60
      [  779.941628]  devinet_ioctl+0x534/0x6d0
      [  779.945370]  inet_ioctl+0x1bc/0x230
      [  779.948849]  sock_do_ioctl+0x44/0x200
      [  779.952502]  sock_ioctl+0x268/0x4c0
      [  779.955985]  __arm64_sys_ioctl+0xac/0xd0
      [  779.959900]  el0_svc_common.constprop.0+0x60/0x110
      [  779.964682]  do_el0_svc+0x1c/0x24
      [  779.967990]  el0_svc+0x10/0x1c
      [  779.971036]  el0_sync_handler+0x9c/0x120
      [  779.974950]  el0_sync+0x148/0x180
      [  779.978259] Code: a9bc7bfd 910003fd a90153f3 aa0003f3 (f9400000)
      [  779.984344] ---[ end trace 0e67b4f5d6cdeec7 ]---
      [  779.996400] Kernel panic - not syncing: Oops: Fatal exception
      [  780.002139] SMP: stopping secondary CPUs
      [  780.006057] Kernel Offset: disabled
      [  780.009537] CPU features: 0x0000002,04002004
      [  780.013796] Memory Limit: none
      
      Fixes: b8f5facf286b ("cfg80211: implement APIs for dedicated radar detection HW")
      Reported-by: NEvelyn Tsai <evelyn.tsai@mediatek.com>
      Tested-by: NEvelyn Tsai <evelyn.tsai@mediatek.com>
      Signed-off-by: NLorenzo Bianconi <lorenzo@kernel.org>
      Link: https://lore.kernel.org/r/c2e34c065bf8839c5ffa45498ae154021a72a520.1635958796.git.lorenzo@kernel.orgSigned-off-by: NJohannes Berg <johannes.berg@intel.com>
      91e89c77
  2. 19 11月, 2021 14 次提交
  3. 18 11月, 2021 23 次提交
    • D
      ptp: ocp: Fix a couple NULL vs IS_ERR() checks · c7521d3a
      Dan Carpenter 提交于
      The ptp_ocp_get_mem() function does not return NULL, it returns error
      pointers.
      
      Fixes: 773bda96 ("ptp: ocp: Expose various resources on the timecard.")
      Signed-off-by: NDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c7521d3a
    • D
      Merge branch 'lan78xx-napi' · bb8cecf8
      David S. Miller 提交于
      John Efstathiades says:
      
      ===================
      lan78xx NAPI Performance Improvements
      
      This patch set introduces a set of changes to the lan78xx driver
      that were originally developed as part of an investigation into
      the performance of TCP and UDP transfers on an Android system.
      The changes increase the throughput of both UDP and TCP transfers
      and reduce the overall CPU load.
      
      These improvements are also seen on a standard Linux kernel. Typical
      results are included at the end of this document.
      
      The changes to the driver evolved over time. The patches presented
      here attempt to organise the changes in to coherent blocks that
      affect logically connected parts of the driver. The patches do not
      reflect the way in which the code evolved during the performance
      investigation.
      
      Each patch produces a working driver that has an incremental
      improvement but patches 2, 3 and 6 should be considered a single
      update.
      
      The changes affect the following parts of the driver:
      
      1. Deferred URB processing
      
      The deferred URB processing that was originally done by a tasklet
      is now done by a NAPI polling routine. The NAPI cycle has a fixed
      work budget that controls how many received frames are passed to
      the network stack.
      
      Patch 6 introduces the NAPI polling but depends on preceding patches.
      
      The new NAPI polling routine is also responsible for submitting
      Rx and Tx URBs to the USB host controller.
      
      Moving the URB processing to a NAPI-based system "smoothed"
      incoming and outgoing data flows on the Android system under
      investigation. However, taken in isolation, moving from a tasklet
      approach to a NAPI approach made little or no difference to the
      overall performance.
      
      2. URB buffer management
      
      The driver creates a pool of Tx and a pool of Rx URB buffers. Each
      buffer is large enough to accommodate a packet with the maximum MTU
      data. URBs are allocated from these pools as required.
      
      Patch 2 introduces the new Tx buffer pool.
      Patch 3 introduces the new Rx buffer pool.
      
      3. Tx pending data
      
      SKBs containing data to be transmitted are added to a queue. The
      driver tracks free Tx URBs and the corresponding free Tx URB space.
      When new Tx URBs are submitted, pending data is copied into the
      URB buffer until the URB buffer is filled or there is no more
      pending data. This maximises utilisation the LAN78xx internal
      USB and network frame buffers.
      
      New Tx URBs are submitted to the USB host controller as part of the
      NAPI polling cycle.
      
      Patch 2 introduces these changes.
      
      4. Rx URB completion
      
      A new URB is no longer submitted as part of the URB completion
      callback.
      New URBs are submitted during the NAPI polling cycle.
      
      Patch 3 introduces these changes.
      
      5. Rx URB processing
      
      Completed URBs are put on to queue for processing (as is done in the
      current driver). Network packets in completed URBs are copied from
      the URB buffer in to dynamically allocated SKBs and passed to
      the network stack.
      
      The emptied URBs are resubmitted to the USB host controller.
      
      Patch 3 introduces this change. Patch 6 updates the change to use
      NAPI SKBs.
      
      Each packet passed to the network stack is a single NAPI work item.
      If the NAPI work budget is exhausted the remaining packets in the
      URB are put onto an overflow queue that is processed at the start
      of the next NAPI cycle.
      
      Patch 6 introduces this change.
      
      6. Driver-specific hard_header_len
      
      The driver-specific hard_header_len adjustment was removed as it
      broke generic receive offload (GRO) processing. Moreover, it was no
      longer required due the change in Tx pending data management (see
      point 3. above).
      
      Patch 5 introduces this change.
      
      The modification has been tested on four different target machines:
      
      Target           |    CPU     |   ARCH  | cores | kernel |  RAM  |
      -----------------+------------+---------+-------+--------+-------|
      Raspberry Pi 4B  | Cortex-A72 | aarch64 |   4   | 64-bit |  2 GB |
      Nitrogen8M SBC   | Cortex-A53 | aarch64 |   4   | 64-bit |  2 GB |
      Compaq Pressario | Pentium D  | i686    |   2   | 32-bit |  4 GB |
      Dell T3620       | Core i3    | x86_64  |  2+2  | 64-bit | 16 GB |
      
      The targets, apart from the Compaq, each have an on-chip USB3 host
      controller. A PCIe-based USB3 host controller card was added to the
      Compaq to provide the necessary USB3 host interface.
      
      The network throughput was measured using iperf3. The peer device was
      a second Dell T3620 fitted with an Intel i210 network interface. The
      target machine and the peer device were connected via a Netgear GS105
      gigabit switch.
      
      The CPU load was measured using mpstat running on the target machine.
      
      The tables below summarise the throughput and CPU load improvements
      achieved by the updated driver.
      
      The bandwidth is the average bandwidth reported by iperf3 at the end
      of a 60-second test.
      
      The percentage idle figure is the average idle reported across all
      CPU cores on the target machine for the duration of the test.
      
      TCP Rx (target receiving, peer transmitting)
      
                       |   Standard Driver  |   NAPI Driver      |
      Target           | Bandwidth | % Idle | Bandwidth | % Idle |
      -----------------+-----------+--------+--------------------|
      RPi4 Model B     |    941    |  74.9  |    941    |  91.5  |
      Nitrogen8M       |    941    |  76.2  |    941    |  92.7  |
      Compaq Pressario |    941    |  44.5  |    941    |  82.1  |
      Dell T3620       |    941    |  88.9  |    941    |  98.3  |
      
      TCP Tx (target transmitting, peer receiving)
      
                       |   Standard Driver  |   NAPI Driver      |
      Target           | Bandwidth | % Idle | Bandwidth | % Idle |
      -----------------+-----------+--------+--------------------|
      RPi4 Model B     |    683    |  80.1  |    942    |  97.6  |
      Nitrogen8M       |    942    |  97.8  |    942    |  97.3  |
      Compaq Pressario |    939    |  80.0  |    942    |  91.2  |
      Dell T3620       |    942    |  95.3  |    942    |  97.6  |
      
      UDP Rx (target receiving, peer transmitting)
      
                       |   Standard Driver  |   NAPI Driver      |
      Target           | Bandwidth | % Idle | Bandwidth | % Idle |
      -----------------+-----------+--------+--------------------|
      RPi4 Model B     |     -     |    -   | 958 (0%)  |  76.2  |
      Nitrogen8M       | 690 (25%) |  57.7  | 937 (0%)  |  68.5  |
      Compaq Pressario | 958 (0%)  |  50.2  | 958 (0%)  |  61.6  |
      Dell T3620       | 958 (0%)  |  89.6  | 958 (0%)  |  85.3  |
      
      The figure in brackets is the percentage packet loss.
      
      UDP Tx (target transmitting, peer receiving)
      
                       |   Standard Driver  |   NAPI Driver      |
      Target           | Bandwidth | % Idle | Bandwidth | % Idle |
      -----------------+-----------+--------+--------------------|
      RPi4 Model B     |    370    |  75.0  |    886    |  78.9  |
      Nitrogen8M       |    710    |  75.0  |    958    |  85.3  |
      Compaq Pressario |    958    |  65.5  |    958    |  76.6  |
      Dell T3620       |    958    |  97.0  |    958    |  97.3  |
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      bb8cecf8
    • J
      lan78xx: Introduce NAPI polling support · ec4c7e12
      John Efstathiades 提交于
      This patch introduces a NAPI-style approach for processing completed
      Rx URBs that contributes to improving driver throughput and reducing
      CPU load.
      
      Packets in completed URBs are copied to NAPI SKBs and passed to the
      network stack for processing. Each frame passed to the stack is one
      work item in the NAPI budget.
      
      If the NAPI budget is consumed and frames remain, they are added to
      an overflow queue that is processed at the start of the next NAPI
      polling cycle.
      
      The NAPI handler is also responsible for copying pending Tx data to
      Tx URBs and submitting them to the USB host controller for
      transmission.
      Signed-off-by: NJohn Efstathiades <john.efstathiades@pebblebay.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      ec4c7e12
    • J
      lan78xx: Remove hardware-specific header update · 0dd87266
      John Efstathiades 提交于
      Remove hardware-specific header length adjustment as it is no longer
      required. It also breaks generic receive offload (GRO) processing of
      received TCP frames that results in a TCP ACK being sent for each
      received frame.
      Signed-off-by: NJohn Efstathiades <john.efstathiades@pebblebay.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0dd87266
    • J
      lan78xx: Re-order rx_submit() to remove forward declaration · 9d2da721
      John Efstathiades 提交于
      Move position of rx_submit() to remove forward declaration of
      rx_complete() which is now no longer required.
      Signed-off-by: NJohn Efstathiades <john.efstathiades@pebblebay.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9d2da721
    • J
      lan78xx: Introduce Rx URB processing improvements · c450a8eb
      John Efstathiades 提交于
      This patch introduces a new approach to allocating and managing
      Rx URBs that contributes to improving driver throughput and reducing
      CPU load.
      
      A pool of Rx URBs is created during driver instantiation. All the
      URBs are initially submitted to the USB host controller for
      processing.
      
      The default URB buffer size is different for each USB bus speed.
      The chosen sizes provide good USB utilisation with little impact on
      overall packet latency.
      
      Completed URBs are processed in the driver bottom half. The URB
      buffer contents are copied to a dynamically allocated SKB, which is
      then passed to the network stack. The URB is then re-submitted to
      the USB host controller.
      
      NOTE: the call to skb_copy() in rx_process() that copies the URB
      contents to a new SKB is a temporary change to make this patch work
      in its own right. This call will be removed when the NAPI processing
      is introduced by patch 6 in this patch set.
      Signed-off-by: NJohn Efstathiades <john.efstathiades@pebblebay.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c450a8eb
    • J
      lan78xx: Introduce Tx URB processing improvements · d383216a
      John Efstathiades 提交于
      This patch introduces a new approach to allocating and managing
      Tx URBs that contributes to improving driver throughput and reducing
      CPU load.
      
      A pool of Tx URBs is created during driver instantiation. A URB is
      allocated from the pool when there is data to transmit. The URB is
      released back to the pool when the data has been transmitted by the
      device.
      
      The default URB buffer size is different for each USB bus speed.
      The chosen sizes provide good USB utilisation with little impact on
      overall packet latency.
      
      SKBs to be transmitted are added to a pending queue for processing.
      The driver tracks the available Tx URB buffer space and copies as
      much pending data as possible into each free URB. Each full URB
      is then submitted to the USB host controller for transmission.
      Signed-off-by: NJohn Efstathiades <john.efstathiades@pebblebay.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d383216a
    • J
      lan78xx: Fix memory allocation bug · a6df95ca
      John Efstathiades 提交于
      Fix memory allocation that fails to check for NULL return.
      Signed-off-by: NJohn Efstathiades <john.efstathiades@pebblebay.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a6df95ca
    • D
      Merge branch 'dsa-felix-psfp' · d091ec97
      David S. Miller 提交于
      Xiaoliang Yang says:
      
      ====================
      net: dsa: felix: psfp support on vsc9959
      
      VSC9959 hardware supports Per-Stream Filtering and Policing(PSFP).
      This patch series add PSFP support on tc flower offload of ocelot
      driver. Use chain 30000 to distinguish PSFP from VCAP blocks. Add gate
      and police set to support PSFP in VSC9959 driver.
      
      v6-v7 changes:
       - Add a patch to restrict psfp rules on ingress port.
       - Using stats.drops to show the packet count discarded by the rule.
      
      v5->v6 changes:
       - Modify ocelot_mact_lookup() parameters.
       - Use parameters ssid and sfid instead of streamdata in
         ocelot_mact_learn_streamdata() function.
       - Serialize STREAMDATA and MAC table write.
      
      v4->v5 changes:
       - Add MAC table lock patch, and move stream data write in
         ocelot_mact_learn_streamdata().
       - Add two sections of VCAP policers to Seville platform.
      
      v3->v4 changes:
       - Introduce vsc9959_psfp_sfi_table_get() function in patch where it is
         used to fix compile warning.
      
      v2->v3 changes:
       - Reorder first two patches. Export struct ocelot_mact_entry, then add
         ocelot_mact_lookup() and ocelot_mact_write() functions.
       - Add PSFP list to struct ocelot, and init it by using
         ocelot->ops->psfp_init().
      
      v1->v2 changes:
       - Use tc flower offload of ocelot driver to support PSFP add and delete.
       - Add PSFP tables add/del functions in felix_vsc9959.c.
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d091ec97
    • X
      net: dsa: felix: restrict psfp rules on ingress port · a7e13edf
      Xiaoliang Yang 提交于
      PSFP rules take effect on the streams from any port of VSC9959 switch.
      This patch use ingress port to limit the rule only active on this port.
      
      Each stream can only match two ingress source ports in VSC9959. Streams
      from lowest port gets the configuration of SFID pointed by MAC Table
      lookup and streams from highest port gets the configuration of (SFID+1)
      pointed by MAC Table lookup. This patch defines the PSFP rule on highest
      port as dummy rule, which means that it does not modify the MAC table.
      Signed-off-by: NXiaoliang Yang <xiaoliang.yang_1@nxp.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a7e13edf
    • X
      net: dsa: felix: use vcap policer to set flow meter for psfp · 76c13ede
      Xiaoliang Yang 提交于
      This patch add police action to set flow meter table which is defined
      in IEEE802.1Qci. Flow metering is two rates two buckets and three color
      marker to policing the frames, we only enable one rate one bucket in
      this patch.
      
      Flow metering shares a same policer pool with VCAP policers, so the PSFP
      policer calls ocelot_vcap_policer_add() and ocelot_vcap_policer_del() to
      set flow meter police.
      Signed-off-by: NXiaoliang Yang <xiaoliang.yang_1@nxp.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      76c13ede
    • X
      net: mscc: ocelot: use index to set vcap policer · 77043c37
      Xiaoliang Yang 提交于
      Policer was previously automatically assigned from the highest index to
      the lowest index from policer pool. But police action of tc flower now
      uses index to set an police entry. This patch uses the police index to
      set vcap policers, so that one policer can be shared by multiple rules.
      Signed-off-by: NXiaoliang Yang <xiaoliang.yang_1@nxp.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      77043c37
    • X
      net: dsa: felix: add stream gate settings for psfp · 23ae3a78
      Xiaoliang Yang 提交于
      This patch adds stream gate settings for PSFP. Use SGI table to store
      stream gate entries. Disable the gate entry when it is not used by any
      stream.
      Signed-off-by: NXiaoliang Yang <xiaoliang.yang_1@nxp.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      23ae3a78
    • X
      net: dsa: felix: support psfp filter on vsc9959 · 7d4b564d
      Xiaoliang Yang 提交于
      VSC9959 supports Per-Stream Filtering and Policing(PSFP) that complies
      with the IEEE 802.1Qci standard. The stream is identified by Null stream
      identification(DMAC and VLAN ID) defined in IEEE802.1CB.
      
      For PSFP, four tables need to be set up: stream table, stream filter
      table, stream gate table, and flow meter table. Identify the stream by
      parsing the tc flower keys and add it to the stream table. The stream
      filter table is automatically maintained, and its index is determined by
      SGID(flow gate index) and FMID(flow meter index).
      Signed-off-by: NXiaoliang Yang <xiaoliang.yang_1@nxp.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7d4b564d
    • X
      net: mscc: ocelot: add gate and police action offload to PSFP · 23e2c506
      Xiaoliang Yang 提交于
      PSFP support gate and police action. This patch add the gate and police
      action to flower parse action, check chain ID to determine which block
      to offload. Adding psfp callback functions to add, delete and update gate
      and police in PSFP table if hardware supports it.
      Signed-off-by: NXiaoliang Yang <xiaoliang.yang_1@nxp.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      23e2c506
    • X
      net: mscc: ocelot: set vcap IS2 chain to goto PSFP chain · 5b1918a5
      Xiaoliang Yang 提交于
      Some chips in the ocelot series such as VSC9959 support Per-Stream
      Filtering and Policing(PSFP), which is processing after VCAP blocks.
      We set this block on chain 30000 and set vcap IS2 chain to goto PSFP
      chain if hardware support.
      Signed-off-by: NXiaoliang Yang <xiaoliang.yang_1@nxp.com>
      Reviewed-by: NVladimir Oltean <vladimir.oltean@nxp.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      5b1918a5
    • X
      net: mscc: ocelot: add MAC table stream learn and lookup operations · 0568c3bf
      Xiaoliang Yang 提交于
      ocelot_mact_learn_streamdata() can be used in VSC9959 to overwrite an
      FDB entry with stream data. The stream data includes SFID and SSID which
      can be used for PSFP and FRER set.
      
      ocelot_mact_lookup() can be used to check if the given {DMAC, VID} FDB
      entry is exist, and also can retrieve the DEST_IDX and entry type for
      the FDB entry.
      Signed-off-by: NXiaoliang Yang <xiaoliang.yang_1@nxp.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0568c3bf
    • T
      net: ethernet: dec: tulip: de4x5: fix possible array overflows in type3_infoblock() · 0fa68da7
      Teng Qi 提交于
      The definition of macro MOTO_SROM_BUG is:
        #define MOTO_SROM_BUG    (lp->active == 8 && (get_unaligned_le32(
        dev->dev_addr) & 0x00ffffff) == 0x3e0008)
      
      and the if statement
        if (MOTO_SROM_BUG) lp->active = 0;
      
      using this macro indicates lp->active could be 8. If lp->active is 8 and
      the second comparison of this macro is false. lp->active will remain 8 in:
        lp->phy[lp->active].gep = (*p ? p : NULL); p += (2 * (*p) + 1);
        lp->phy[lp->active].rst = (*p ? p : NULL); p += (2 * (*p) + 1);
        lp->phy[lp->active].mc  = get_unaligned_le16(p); p += 2;
        lp->phy[lp->active].ana = get_unaligned_le16(p); p += 2;
        lp->phy[lp->active].fdx = get_unaligned_le16(p); p += 2;
        lp->phy[lp->active].ttm = get_unaligned_le16(p); p += 2;
        lp->phy[lp->active].mci = *p;
      
      However, the length of array lp->phy is 8, so array overflows can occur.
      To fix these possible array overflows, we first check lp->active and then
      return -EINVAL if it is greater or equal to ARRAY_SIZE(lp->phy) (i.e. 8).
      Reported-by: NTOTE Robot <oslab@tsinghua.edu.cn>
      Signed-off-by: NTeng Qi <starmiku1207184332@gmail.com>
      Reviewed-by: NArnd Bergmann <arnd@arndb.de>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0fa68da7
    • J
      mctp/test: Update refcount checking in route fragment tests · f6ef47e5
      Jeremy Kerr 提交于
      In 99ce45d5, we moved a route refcount decrement from
      mctp_do_fragment_route into the caller. This invalidates the assumption
      that the route test makes about refcount behaviour, so the route tests
      fail.
      
      This change fixes the test case to suit the new refcount behaviour.
      
      Fixes: 99ce45d5 ("mctp: Implement extended addressing")
      Signed-off-by: NJeremy Kerr <jk@codeconstruct.com.au>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f6ef47e5
    • Y
      ipv6: ah6: use swap() to make code cleaner · 4cdf85ef
      Yao Jing 提交于
      Use the macro 'swap()' defined in 'include/linux/minmax.h' to avoid
      opencoding it.
      Reported-by: NZeal Robot <zealci@zte.com.cn>
      Signed-off-by: NYao Jing <yao.jing2@zte.com.cn>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      4cdf85ef
    • Z
      net: tulip: de4x5: fix the problem that the array 'lp->phy[8]' may be out of bound · 61217be8
      zhangyue 提交于
      In line 5001, if all id in the array 'lp->phy[8]' is not 0, when the
      'for' end, the 'k' is 8.
      
      At this time, the array 'lp->phy[8]' may be out of bound.
      Signed-off-by: Nzhangyue <zhangyue1@kylinos.cn>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      61217be8
    • E
      tcp: add missing htmldocs for skb->ll_node and sk->defer_list · df6160de
      Eric Dumazet 提交于
      Add missing entries to fix these "make htmldocs" warnings.
      
      ./include/linux/skbuff.h:953: warning: Function parameter or member 'll_node' not described in 'sk_buff'
      ./include/net/sock.h:540: warning: Function parameter or member 'defer_list' not described in 'sock'
      
      Fixes: f35f8219 ("tcp: defer skb freeing after socket lock is released")
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Reported-by: NStephen Rothwell <sfr@canb.auug.org.au>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      df6160de
    • D
      Merge branch '10GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/next-queue · 718cc29d
      David S. Miller 提交于
      Tony Nguyen says:
      
      ====================
      10GbE Intel Wired LAN Driver Updates 2021-11-17
      
      Radoslaw Tyl says:
      
      The change is a consequence of errors reported by the ixgbevf driver
      while starting several virtual guests at the same time on ESX host.
      During this, VF was not able to communicate correctly with the PF,
      as a result reported "PF still in reset state. Is the PF interface up?"
      and then goes to locked state. The only thing left was to reload
      the VF driver on the guest OS.
      
      The background of the problem is that the current PFU and VFU
      semaphore locking mechanism between sender and receiver may cause
      overriding Mailbox memory (VFMBMEM), in such scenario receiver of
      the original message will read the invalid, corrupted or one (or more)
      message may be lost.
      
      This change is actually as a support for communication with PF ESX
      driver and does not contains changes and support for ixgbe driver.
      For maintain backward compatibility, previous communication method
      has been preserved in the form of LEGACY functions.
      
      In the future there is a plan to add a support for a 1.5 mailbox API
      communication also to ixgbe driver.
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      718cc29d