All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next v5 00/11] ethtool: Add support for frame preemption
@ 2022-05-20  1:15 ` Vinicius Costa Gomes
  0 siblings, 0 replies; 60+ messages in thread
From: Vinicius Costa Gomes @ 2022-05-20  1:15 UTC (permalink / raw)
  To: netdev
  Cc: Vinicius Costa Gomes, jhs, xiyou.wangcong, jiri, davem,
	vladimir.oltean, po.liu, boon.leong.ong, intel-wired-lan

Hi,

Please consider this as a PATCH-like quality RFC (in short, even in
the absence of comments, please do not apply this series as is), my
aim is to get an consensus on the userspace API.

I also found some weirdness with Intel I226, that I would like to
investigate better. So, maybe it's a good use of everyone's time to
have this series out, so people can take a look at the more
controversial parts while I investigate/fix those issues.

(The checkpatch.pl warnings about the spelling of "preemptible" are
ignored because that's the way it's spelled in IEEE 802.1Q-2018, but
in IEEE 802.3-2018 it's preemptable, it's a mess)

Changes from v4:
 - Went back to exposing the per-queue frame preemption bits via
   ethtool-netlink only, via taprio/mqprio was seen as too much
   trouble. (Vladimir Oltean)
 - Fixed documentation and code/patch organization changes (Vladimir
   Oltean).

Changes from v3:
 - Added early support for sending/receiving support for verification
   frames (Vladimir Oltean). This is a bit more than RFC-quality, but
   adding this so people can see how it fits together with the rest.
   The driver specific bits are interesting because the hardware does
   the absolute minimum, the driver needs to do the heavy lifting.

 - Added support for setting preemptible/express traffic classes via
   tc-mqprio (Vladimir Oltean). mqprio parsing of configuration
   options is... interesting, so comments here are going to be useful,
   I may have missed something.

Changes from v2:
 - Fixed some copy&paste mistakes, documentation formatting and
   slightly improved error reporting (Jakub Kicinski);

Changes from v1:
 - The minimum fragment size configuration was changed to be
   configured in bytes to be more future proof, in case the standard
   changes this (the previous definition was '(X + 1) * 64', X being
   [0..3]) (Michal Kubecek);
 - In taprio, frame preemption is now configured by traffic classes (was
   done by queues) (Jakub Kicinski, Vladimir Oltean);
 - Various netlink protocol validation improvements (Jakub Kicinski);
 - Dropped the IGC register dump for frame preemption registers, until a
   stardandized way of exposing that is agreed (Jakub Kicinski);

Changes from RFC v2:
 - Reorganised the offload enabling/disabling on the driver size;
 - Added a few igc fixes;

Changes from RFC v1:
 - The per-queue preemptible/express setting is moved to applicable
   qdiscs (Jakub Kicinski and others);
 - "min-frag-size" now follows the 802.3br specification more closely,
   it's expressed as X in '64(1 + X) + 4' (Joergen Andreasen);

Another point that should be noted is the addition of the
TC_SETUP_PREEMPT offload type, the idea behind this is to allow other
qdiscs (was thinking of mqprio) to also configure which traffic
classes should be marked as express/preemptible.

Original cover letter (lightly edited):

This is still an RFC because two main reasons, I want to confirm that
this approach (per-queue settings via qdiscs, device settings via
ethtool) looks good, even though there aren't much more options left ;-)
The other reason is that while testing this I found some weirdness
in the driver that I would need a bit more time to investigate.

(In case these patches are not enough to give an idea of how things
work, I can send the userspace patches, of course.)

The idea of this "hybrid" approach is that applications/users would do
the following steps to configure frame preemption:

$ tc qdisc replace dev $IFACE parent root handle 100 taprio \
      num_tc 3 \
      map 2 2 1 0 2 2 2 2 2 2 2 2 2 2 2 2 \
      queues 1@0 1@1 2@2 \
      base-time $BASE_TIME \
      sched-entry S 0f 10000000 \
      preempt 1110 \
      flags 0x2 

The "preempt" parameter is the only difference, it configures which
traffic classes are marked as preemptible, in this example, traffic
class 0 is marked as "not preemptible", so it is express, the rest of
the four traffic classes are preemptible.

The next step, of this example, would be to enable frame preemption in
the device, via ethtool, and set the minimum fragment size to 192 bytes:

$ sudo ./ethtool --set-frame-preemption $IFACE fp on min-frag-size 192

Cheers,


Vinicius Costa Gomes (11):
  ethtool: Add support for configuring frame preemption
  ethtool: Add support for Frame Preemption verification
  igc: Add support for receiving frames with all zeroes address
  igc: Set the RX packet buffer size for TSN mode
  igc: Optimze TX buffer sizes for TSN
  igc: Add support for receiving errored frames
  igc: Add support for enabling frame preemption via ethtool
  igc: Add support for setting frame preemption configuration
  igc: Add support for Frame Preemption verification
  igc: Check incompatible configs for Frame Preemption
  igc: Add support for exposing frame preemption stats registers

 Documentation/networking/ethtool-netlink.rst |  55 ++++
 drivers/net/ethernet/intel/igc/igc.h         |  29 ++-
 drivers/net/ethernet/intel/igc/igc_defines.h |  22 +-
 drivers/net/ethernet/intel/igc/igc_ethtool.c |  92 +++++++
 drivers/net/ethernet/intel/igc/igc_main.c    | 256 +++++++++++++++++++
 drivers/net/ethernet/intel/igc/igc_regs.h    |  10 +
 drivers/net/ethernet/intel/igc/igc_tsn.c     |  57 ++++-
 include/linux/ethtool.h                      |  26 ++
 include/uapi/linux/ethtool_netlink.h         |  20 ++
 net/ethtool/Makefile                         |   3 +-
 net/ethtool/common.c                         |  23 ++
 net/ethtool/netlink.c                        |  19 ++
 net/ethtool/netlink.h                        |   4 +
 net/ethtool/preempt.c                        | 188 ++++++++++++++
 14 files changed, 791 insertions(+), 13 deletions(-)
 create mode 100644 net/ethtool/preempt.c

-- 
2.35.3


^ permalink raw reply	[flat|nested] 60+ messages in thread
* Re: [PATCH net-next v5 10/11] igc: Check incompatible configs for Frame Preemption
@ 2022-05-22 10:18 kernel test robot
  2022-05-24  8:26 ` kernel test robot
  0 siblings, 1 reply; 60+ messages in thread
From: kernel test robot @ 2022-05-22 10:18 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 26764 bytes --]

CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
In-Reply-To: <20220520011538.1098888-11-vinicius.gomes@intel.com>
References: <20220520011538.1098888-11-vinicius.gomes@intel.com>
TO: Vinicius Costa Gomes <vinicius.gomes@intel.com>
TO: netdev(a)vger.kernel.org
CC: Vinicius Costa Gomes <vinicius.gomes@intel.com>
CC: jhs(a)mojatatu.com
CC: xiyou.wangcong(a)gmail.com
CC: jiri(a)resnulli.us
CC: davem(a)davemloft.net
CC: vladimir.oltean(a)nxp.com
CC: po.liu(a)nxp.com
CC: boon.leong.ong(a)intel.com
CC: intel-wired-lan(a)lists.osuosl.org

Hi Vinicius,

I love your patch! Perhaps something to improve:

[auto build test WARNING on net-next/master]

url:    https://github.com/intel-lab-lkp/linux/commits/Vinicius-Costa-Gomes/ethtool-Add-support-for-frame-preemption/20220520-092800
base:   https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git df98714e432abf5cbdac3e4c1a13f94c65ddb8d3
:::::: branch date: 2 days ago
:::::: commit date: 2 days ago
config: arm-randconfig-c002-20220522 (https://download.01.org/0day-ci/archive/20220522/202205221852.CJ4p5boS-lkp(a)intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 1443dbaba6f0e57be066995db9164f89fb57b413)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install arm cross compiling tool for clang build
        # apt-get install binutils-arm-linux-gnueabi
        # https://github.com/intel-lab-lkp/linux/commit/a42e940bc53c40ee4e33a1bbf022a663bb28a9c7
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Vinicius-Costa-Gomes/ethtool-Add-support-for-frame-preemption/20220520-092800
        git checkout a42e940bc53c40ee4e33a1bbf022a663bb28a9c7
        # save the config file
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm clang-analyzer 

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>


clang-analyzer warnings: (new ones prefixed by >>)
                              ^~~   ~~~~~~~~~~~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:937:21: note: Value stored to 'dev' during its initialization is never read
           struct net_device *dev = adapter->netdev;
                              ^~~   ~~~~~~~~~~~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:962:2: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memcpy(hw->mac.addr, addr->sa_data, netdev->addr_len);
           ^~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:962:2: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
           memcpy(hw->mac.addr, addr->sa_data, netdev->addr_len);
           ^~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:1000:3: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
                   memcpy(mta_list + (i++ * ETH_ALEN), ha->addr, ETH_ALEN);
                   ^~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:1000:3: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
                   memcpy(mta_list + (i++ * ETH_ALEN), ha->addr, ETH_ALEN);
                   ^~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:1784:2: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memcpy(__skb_put(skb, headlen + metasize), xdp->data_meta,
           ^~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:1784:2: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
           memcpy(__skb_put(skb, headlen + metasize), xdp->data_meta,
           ^~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:2595:2: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memcpy(__skb_put(skb, totalsize), xdp->data_meta,
           ^~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:2595:2: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
           memcpy(__skb_put(skb, totalsize), xdp->data_meta,
           ^~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:3035:21: warning: Value stored to 'dev' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct net_device *dev = adapter->netdev;
                              ^~~   ~~~~~~~~~~~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:3035:21: note: Value stored to 'dev' during its initialization is never read
           struct net_device *dev = adapter->netdev;
                              ^~~   ~~~~~~~~~~~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:3064:21: warning: Value stored to 'dev' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct net_device *dev = adapter->netdev;
                              ^~~   ~~~~~~~~~~~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:3064:21: note: Value stored to 'dev' during its initialization is never read
           struct net_device *dev = adapter->netdev;
                              ^~~   ~~~~~~~~~~~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:3100:21: warning: Value stored to 'dev' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct net_device *dev = adapter->netdev;
                              ^~~   ~~~~~~~~~~~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:3100:21: note: Value stored to 'dev' during its initialization is never read
           struct net_device *dev = adapter->netdev;
                              ^~~   ~~~~~~~~~~~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:3374:2: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memcpy(&flex->data[offset], src, len);
           ^~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:3374:2: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
           memcpy(&flex->data[offset], src, len);
           ^~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:4154:3: warning: Value stored to 'current_itr' is never read [clang-analyzer-deadcode.DeadStores]
                   current_itr = 0;
                   ^             ~
   drivers/net/ethernet/intel/igc/igc_main.c:4154:3: note: Value stored to 'current_itr' is never read
                   current_itr = 0;
                   ^             ~
   drivers/net/ethernet/intel/igc/igc_main.c:4311:6: warning: Value stored to 'new_val' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           int new_val = q_vector->itr_val;
               ^~~~~~~   ~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:4311:6: note: Value stored to 'new_val' during its initialization is never read
           int new_val = q_vector->itr_val;
               ^~~~~~~   ~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:4493:3: warning: Call to function 'memset' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memset_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
                   memset(q_vector, 0, struct_size(q_vector, ring, ring_count));
                   ^~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:4493:3: note: Call to function 'memset' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memset_s' in case of C11
                   memset(q_vector, 0, struct_size(q_vector, ring, ring_count));
                   ^~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:5071:2: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memcpy(stats, &adapter->stats64, sizeof(*stats));
           ^~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:5071:2: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
           memcpy(stats, &adapter->stats64, sizeof(*stats));
           ^~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:5316:4: warning: Call to function 'sprintf' is insecure as it does not provide bounding of the memory buffer or security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'sprintf_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
                           sprintf(q_vector->name, "%s-TxRx-%u", netdev->name,
                           ^~~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:5316:4: note: Call to function 'sprintf' is insecure as it does not provide bounding of the memory buffer or security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'sprintf_s' in case of C11
                           sprintf(q_vector->name, "%s-TxRx-%u", netdev->name,
                           ^~~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:5319:4: warning: Call to function 'sprintf' is insecure as it does not provide bounding of the memory buffer or security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'sprintf_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
                           sprintf(q_vector->name, "%s-tx-%u", netdev->name,
                           ^~~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:5319:4: note: Call to function 'sprintf' is insecure as it does not provide bounding of the memory buffer or security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'sprintf_s' in case of C11
                           sprintf(q_vector->name, "%s-tx-%u", netdev->name,
                           ^~~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:5322:4: warning: Call to function 'sprintf' is insecure as it does not provide bounding of the memory buffer or security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'sprintf_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
                           sprintf(q_vector->name, "%s-rx-%u", netdev->name,
                           ^~~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:5322:4: note: Call to function 'sprintf' is insecure as it does not provide bounding of the memory buffer or security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'sprintf_s' in case of C11
                           sprintf(q_vector->name, "%s-rx-%u", netdev->name,
                           ^~~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:5325:4: warning: Call to function 'sprintf' is insecure as it does not provide bounding of the memory buffer or security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'sprintf_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
                           sprintf(q_vector->name, "%s-unused", netdev->name);
                           ^~~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:5325:4: note: Call to function 'sprintf' is insecure as it does not provide bounding of the memory buffer or security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'sprintf_s' in case of C11
                           sprintf(q_vector->name, "%s-unused", netdev->name);
                           ^~~~~~~
>> drivers/net/ethernet/intel/igc/igc_main.c:5919:6: warning: Access to field 'preemptible' results in a dereference of an undefined pointer value (loaded from variable 'ring') [clang-analyzer-core.NullDereference]
           if (ring->preemptible) {
               ^
   drivers/net/ethernet/intel/igc/igc_main.c:6258:2: note: Control jumps to 'case TC_SETUP_QDISC_ETF:'  at line 6262
           switch (type) {
           ^
   drivers/net/ethernet/intel/igc/igc_main.c:6263:10: note: Calling 'igc_tsn_enable_launchtime'
                   return igc_tsn_enable_launchtime(adapter, type_data);
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:5989:6: note: Assuming field 'type' is equal to igc_i225
           if (hw->mac.type != igc_i225)
               ^~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:5989:2: note: Taking false branch
           if (hw->mac.type != igc_i225)
           ^
   drivers/net/ethernet/intel/igc/igc_main.c:5992:8: note: Calling 'igc_save_launchtime_params'
           err = igc_save_launchtime_params(adapter, qopt->queue, qopt->enable);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:5914:2: note: 'ring' declared without an initial value
           struct igc_ring *ring;
           ^~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:5916:6: note: Assuming 'queue' is >= 0
           if (queue < 0 || queue >= adapter->num_tx_queues)
               ^~~~~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:5916:6: note: Left side of '||' is false
   drivers/net/ethernet/intel/igc/igc_main.c:5916:19: note: Assuming 'queue' is < field 'num_tx_queues'
           if (queue < 0 || queue >= adapter->num_tx_queues)
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:5916:2: note: Taking false branch
           if (queue < 0 || queue >= adapter->num_tx_queues)
           ^
   drivers/net/ethernet/intel/igc/igc_main.c:5919:6: note: Access to field 'preemptible' results in a dereference of an undefined pointer value (loaded from variable 'ring')
           if (ring->preemptible) {
               ^~~~
   drivers/net/ethernet/intel/igc/igc_main.c:6169:2: warning: Call to function 'memset' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memset_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memset(data, 0, IGC_FP_SMD_FRAME_SIZE);
           ^~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:6169:2: note: Call to function 'memset' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memset_s' in case of C11
           memset(data, 0, IGC_FP_SMD_FRAME_SIZE);
           ^~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:6533:2: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memcpy(&hw->mac.ops, ei->mac_ops, sizeof(hw->mac.ops));
           ^~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:6533:2: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
           memcpy(&hw->mac.ops, ei->mac_ops, sizeof(hw->mac.ops));
           ^~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:6534:2: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memcpy(&hw->phy.ops, ei->phy_ops, sizeof(hw->phy.ops));
           ^~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:6534:2: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
           memcpy(&hw->phy.ops, ei->phy_ops, sizeof(hw->phy.ops));
           ^~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:6651:2: warning: Call to function 'strncpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'strncpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           strncpy(netdev->name, "eth%d", IFNAMSIZ);
           ^~~~~~~
   drivers/net/ethernet/intel/igc/igc_main.c:6651:2: note: Call to function 'strncpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'strncpy_s' in case of C11
           strncpy(netdev->name, "eth%d", IFNAMSIZ);
           ^~~~~~~
   Suppressed 93 warnings (91 in non-user code, 2 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   68 warnings generated.
   drivers/net/ethernet/brocade/bna/bna_enet.c:201:3: warning: Call to function 'memset' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memset_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
                   memset(stats_dst, 0, sizeof(struct bfi_enet_stats_rxf));
                   ^~~~~~
   drivers/net/ethernet/brocade/bna/bna_enet.c:201:3: note: Call to function 'memset' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memset_s' in case of C11
                   memset(stats_dst, 0, sizeof(struct bfi_enet_stats_rxf));
                   ^~~~~~
   drivers/net/ethernet/brocade/bna/bna_enet.c:216:3: warning: Call to function 'memset' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memset_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
                   memset(stats_dst, 0, sizeof(struct bfi_enet_stats_txf));
                   ^~~~~~
   drivers/net/ethernet/brocade/bna/bna_enet.c:216:3: note: Call to function 'memset' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memset_s' in case of C11
                   memset(stats_dst, 0, sizeof(struct bfi_enet_stats_txf));
                   ^~~~~~
   drivers/net/ethernet/brocade/bna/bna_enet.c:1732:2: warning: Value stored to 'kva' is never read [clang-analyzer-deadcode.DeadStores]
           kva += bfa_msgq_meminfo();
           ^      ~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/brocade/bna/bna_enet.c:1732:2: note: Value stored to 'kva' is never read
           kva += bfa_msgq_meminfo();
           ^      ~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/brocade/bna/bna_enet.c:1733:2: warning: Value stored to 'dma' is never read [clang-analyzer-deadcode.DeadStores]
           dma += bfa_msgq_meminfo();
           ^      ~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/brocade/bna/bna_enet.c:1733:2: note: Value stored to 'dma' is never read
           dma += bfa_msgq_meminfo();
           ^      ~~~~~~~~~~~~~~~~~~
   Suppressed 64 warnings (64 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   72 warnings generated.
   drivers/net/ethernet/brocade/bna/bna_tx_rx.c:305:2: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memcpy(&req->table[0], rxf->rit, rxf->rit_size);
           ^~~~~~
   drivers/net/ethernet/brocade/bna/bna_tx_rx.c:305:2: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
           memcpy(&req->table[0], rxf->rit, rxf->rit_size);
           ^~~~~~
   drivers/net/ethernet/brocade/bna/bna_tx_rx.c:640:2: warning: Call to function 'memset' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memset_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memset(rxf->vlan_filter_table, 0,
           ^~~~~~
   drivers/net/ethernet/brocade/bna/bna_tx_rx.c:640:2: note: Call to function 'memset' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memset_s' in case of C11
           memset(rxf->vlan_filter_table, 0,
           ^~~~~~
   drivers/net/ethernet/brocade/bna/bna_tx_rx.c:912:3: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]

vim +5919 drivers/net/ethernet/intel/igc/igc_main.c

5f2958052c5820 Vinicius Costa Gomes 2019-12-02  5910  
82faa9b799500f Vinicius Costa Gomes 2020-02-14  5911  static int igc_save_launchtime_params(struct igc_adapter *adapter, int queue,
82faa9b799500f Vinicius Costa Gomes 2020-02-14  5912  				      bool enable)
82faa9b799500f Vinicius Costa Gomes 2020-02-14  5913  {
82faa9b799500f Vinicius Costa Gomes 2020-02-14  5914  	struct igc_ring *ring;
82faa9b799500f Vinicius Costa Gomes 2020-02-14  5915  
82faa9b799500f Vinicius Costa Gomes 2020-02-14  5916  	if (queue < 0 || queue >= adapter->num_tx_queues)
82faa9b799500f Vinicius Costa Gomes 2020-02-14  5917  		return -EINVAL;
82faa9b799500f Vinicius Costa Gomes 2020-02-14  5918  
a42e940bc53c40 Vinicius Costa Gomes 2022-05-19 @5919  	if (ring->preemptible) {
a42e940bc53c40 Vinicius Costa Gomes 2022-05-19  5920  		netdev_err(adapter->netdev, "Cannot enable LaunchTime on a preemptible queue\n");
a42e940bc53c40 Vinicius Costa Gomes 2022-05-19  5921  		return -EINVAL;
a42e940bc53c40 Vinicius Costa Gomes 2022-05-19  5922  	}
a42e940bc53c40 Vinicius Costa Gomes 2022-05-19  5923  
82faa9b799500f Vinicius Costa Gomes 2020-02-14  5924  	ring = adapter->tx_ring[queue];
82faa9b799500f Vinicius Costa Gomes 2020-02-14  5925  	ring->launchtime_enable = enable;
82faa9b799500f Vinicius Costa Gomes 2020-02-14  5926  
82faa9b799500f Vinicius Costa Gomes 2020-02-14  5927  	return 0;
82faa9b799500f Vinicius Costa Gomes 2020-02-14  5928  }
82faa9b799500f Vinicius Costa Gomes 2020-02-14  5929  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

^ permalink raw reply	[flat|nested] 60+ messages in thread

end of thread, other threads:[~2022-05-27  9:12 UTC | newest]

Thread overview: 60+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-20  1:15 [PATCH net-next v5 00/11] ethtool: Add support for frame preemption Vinicius Costa Gomes
2022-05-20  1:15 ` [Intel-wired-lan] " Vinicius Costa Gomes
2022-05-20  1:15 ` [PATCH net-next v5 01/11] ethtool: Add support for configuring " Vinicius Costa Gomes
2022-05-20  1:15   ` [Intel-wired-lan] " Vinicius Costa Gomes
2022-05-20  9:06   ` Vladimir Oltean
2022-05-20  9:06     ` [Intel-wired-lan] " Vladimir Oltean
2022-05-20  1:15 ` [PATCH net-next v5 02/11] ethtool: Add support for Frame Preemption verification Vinicius Costa Gomes
2022-05-20  1:15   ` [Intel-wired-lan] " Vinicius Costa Gomes
2022-05-20  9:16   ` Vladimir Oltean
2022-05-20  9:16     ` [Intel-wired-lan] " Vladimir Oltean
2022-05-20  1:15 ` [PATCH net-next v5 03/11] igc: Add support for receiving frames with all zeroes address Vinicius Costa Gomes
2022-05-20  1:15   ` [Intel-wired-lan] " Vinicius Costa Gomes
2022-05-20  1:15 ` [PATCH net-next v5 04/11] igc: Set the RX packet buffer size for TSN mode Vinicius Costa Gomes
2022-05-20  1:15   ` [Intel-wired-lan] " Vinicius Costa Gomes
2022-05-20  1:15 ` [PATCH net-next v5 05/11] igc: Optimze TX buffer sizes for TSN Vinicius Costa Gomes
2022-05-20  1:15   ` [Intel-wired-lan] " Vinicius Costa Gomes
2022-05-20  9:33   ` Vladimir Oltean
2022-05-20  9:33     ` [Intel-wired-lan] " Vladimir Oltean
2022-05-20  1:15 ` [PATCH net-next v5 06/11] igc: Add support for receiving errored frames Vinicius Costa Gomes
2022-05-20  1:15   ` [Intel-wired-lan] " Vinicius Costa Gomes
2022-05-20  9:19   ` Vladimir Oltean
2022-05-20  9:19     ` [Intel-wired-lan] " Vladimir Oltean
2022-05-20  1:15 ` [PATCH net-next v5 07/11] igc: Add support for enabling frame preemption via ethtool Vinicius Costa Gomes
2022-05-20  1:15   ` [Intel-wired-lan] " Vinicius Costa Gomes
2022-05-20  1:15 ` [PATCH net-next v5 08/11] igc: Add support for setting frame preemption configuration Vinicius Costa Gomes
2022-05-20  1:15   ` [Intel-wired-lan] " Vinicius Costa Gomes
2022-05-20  9:22   ` Vladimir Oltean
2022-05-20  9:22     ` [Intel-wired-lan] " Vladimir Oltean
2022-05-20  1:15 ` [PATCH net-next v5 09/11] igc: Add support for Frame Preemption verification Vinicius Costa Gomes
2022-05-20  1:15   ` [Intel-wired-lan] " Vinicius Costa Gomes
2022-05-20 10:43   ` Vladimir Oltean
2022-05-20 10:43     ` [Intel-wired-lan] " Vladimir Oltean
2022-05-27  9:08   ` Zhou Furong
2022-05-27  9:08     ` [Intel-wired-lan] " Zhou Furong
2022-05-20  1:15 ` [PATCH net-next v5 10/11] igc: Check incompatible configs for Frame Preemption Vinicius Costa Gomes
2022-05-20  1:15   ` [Intel-wired-lan] " Vinicius Costa Gomes
2022-05-20  6:11   ` kernel test robot
2022-05-20  6:11     ` [Intel-wired-lan] " kernel test robot
2022-05-20 11:06   ` Vladimir Oltean
2022-05-20 11:06     ` [Intel-wired-lan] " Vladimir Oltean
2022-05-20  1:15 ` [PATCH net-next v5 11/11] igc: Add support for exposing frame preemption stats registers Vinicius Costa Gomes
2022-05-20  1:15   ` [Intel-wired-lan] " Vinicius Costa Gomes
2022-05-20 12:13   ` Vladimir Oltean
2022-05-20 12:13     ` [Intel-wired-lan] " Vladimir Oltean
2022-05-20 22:34 ` [PATCH net-next v5 00/11] ethtool: Add support for frame preemption Jakub Kicinski
2022-05-20 22:34   ` [Intel-wired-lan] " Jakub Kicinski
2022-05-21 15:03   ` Vladimir Oltean
2022-05-21 15:03     ` [Intel-wired-lan] " Vladimir Oltean
2022-05-23 19:52     ` Jakub Kicinski
2022-05-23 19:52       ` [Intel-wired-lan] " Jakub Kicinski
2022-05-23 20:32       ` Vladimir Oltean
2022-05-23 20:32         ` [Intel-wired-lan] " Vladimir Oltean
2022-05-23 21:31         ` Jakub Kicinski
2022-05-23 21:31           ` [Intel-wired-lan] " Jakub Kicinski
2022-05-23 22:49           ` Vladimir Oltean
2022-05-23 22:49             ` [Intel-wired-lan] " Vladimir Oltean
2022-05-23 23:33       ` Vladimir Oltean
2022-05-23 23:33         ` [Intel-wired-lan] " Vladimir Oltean
2022-05-22 10:18 [PATCH net-next v5 10/11] igc: Check incompatible configs for Frame Preemption kernel test robot
2022-05-24  8:26 ` kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.