All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Sunghun Son <thswpvm1111@gmail.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org
Cc: oe-kbuild-all@lists.linux.dev
Subject: Re: [PATCH] staging: octeon: remove typedef declaration
Date: Mon, 19 May 2025 16:36:02 +0800	[thread overview]
Message-ID: <202505191650.PbeMZMEG-lkp@intel.com> (raw)
In-Reply-To: <aCrP0mBkFxfZKUZT@debian>

Hi Sunghun,

kernel test robot noticed the following build errors:

[auto build test ERROR on staging/staging-testing]

url:    https://github.com/intel-lab-lkp/linux/commits/Sunghun-Son/staging-octeon-remove-typedef-declaration/20250519-143105
base:   staging/staging-testing
patch link:    https://lore.kernel.org/r/aCrP0mBkFxfZKUZT%40debian
patch subject: [PATCH] staging: octeon: remove typedef declaration
config: x86_64-buildonly-randconfig-006-20250519 (https://download.01.org/0day-ci/archive/20250519/202505191650.PbeMZMEG-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250519/202505191650.PbeMZMEG-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202505191650.PbeMZMEG-lkp@intel.com/

All errors (new ones prefixed by >>):

   drivers/staging/octeon/ethernet.c: In function 'cvm_oct_common_get_stats':
>> drivers/staging/octeon/ethernet.c:204:9: error: unknown type name 'cvmx_pip_port_status_t'
     204 |         cvmx_pip_port_status_t rx_status;
         |         ^~~~~~~~~~~~~~~~~~~~~~
>> drivers/staging/octeon/ethernet.c:205:9: error: unknown type name 'cvmx_pko_port_status_t'; use 'struct' keyword to refer to the type
     205 |         cvmx_pko_port_status_t tx_status;
         |         ^~~~~~~~~~~~~~~~~~~~~~
         |         struct 
>> drivers/staging/octeon/ethernet.c:214:65: error: passing argument 3 of 'cvmx_pip_get_port_status' from incompatible pointer type [-Werror=incompatible-pointer-types]
     214 |                         cvmx_pip_get_port_status(priv->port, 1, &rx_status);
         |                                                                 ^~~~~~~~~~
         |                                                                 |
         |                                                                 int *
   In file included from drivers/staging/octeon/octeon-ethernet.h:41,
                    from drivers/staging/octeon/ethernet.c:23:
   drivers/staging/octeon/octeon-stubs.h:1261:74: note: expected 'struct cvmx_pip_port_status *' but argument is of type 'int *'
    1261 |                                             struct cvmx_pip_port_status *status)
         |                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
>> drivers/staging/octeon/ethernet.c:215:65: error: passing argument 3 of 'cvmx_pko_get_port_status' from incompatible pointer type [-Werror=incompatible-pointer-types]
     215 |                         cvmx_pko_get_port_status(priv->port, 1, &tx_status);
         |                                                                 ^~~~~~~~~~
         |                                                                 |
         |                                                                 int *
   drivers/staging/octeon/octeon-stubs.h:1265:76: note: expected 'struct cvmx_pko_port_status_t *' but argument is of type 'int *'
    1265 |                                             struct cvmx_pko_port_status_t *status)
         |                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
>> drivers/staging/octeon/ethernet.c:218:51: error: request for member 'inb_packets' in something not a structure or union
     218 |                 dev->stats.rx_packets += rx_status.inb_packets;
         |                                                   ^
>> drivers/staging/octeon/ethernet.c:219:51: error: request for member 'packets' in something not a structure or union
     219 |                 dev->stats.tx_packets += tx_status.packets;
         |                                                   ^
>> drivers/staging/octeon/ethernet.c:220:49: error: request for member 'inb_octets' in something not a structure or union
     220 |                 dev->stats.rx_bytes += rx_status.inb_octets;
         |                                                 ^
>> drivers/staging/octeon/ethernet.c:221:49: error: request for member 'octets' in something not a structure or union
     221 |                 dev->stats.tx_bytes += tx_status.octets;
         |                                                 ^
>> drivers/staging/octeon/ethernet.c:222:50: error: request for member 'multicast_packets' in something not a structure or union
     222 |                 dev->stats.multicast += rx_status.multicast_packets;
         |                                                  ^
>> drivers/staging/octeon/ethernet.c:223:54: error: request for member 'inb_errors' in something not a structure or union
     223 |                 dev->stats.rx_crc_errors += rx_status.inb_errors;
         |                                                      ^
>> drivers/staging/octeon/ethernet.c:224:56: error: request for member 'fcs_align_err_packets' in something not a structure or union
     224 |                 dev->stats.rx_frame_errors += rx_status.fcs_align_err_packets;
         |                                                        ^
>> drivers/staging/octeon/ethernet.c:225:51: error: request for member 'dropped_packets' in something not a structure or union
     225 |                 dev->stats.rx_dropped += rx_status.dropped_packets;
         |                                                   ^
   drivers/staging/octeon/ethernet.c: In function 'cvm_oct_probe':
>> drivers/staging/octeon/ethernet.c:801:17: error: unknown type name 'cvmx_helper_interface_mode_t'
     801 |                 cvmx_helper_interface_mode_t imode =
         |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors


vim +/cvmx_pip_port_status_t +204 drivers/staging/octeon/ethernet.c

422d97b8b05ed3 Chris Packham 2020-02-05   22  
422d97b8b05ed3 Chris Packham 2020-02-05  @23  #include "octeon-ethernet.h"
422d97b8b05ed3 Chris Packham 2020-02-05   24  #include "ethernet-defines.h"
422d97b8b05ed3 Chris Packham 2020-02-05   25  #include "ethernet-mem.h"
422d97b8b05ed3 Chris Packham 2020-02-05   26  #include "ethernet-rx.h"
422d97b8b05ed3 Chris Packham 2020-02-05   27  #include "ethernet-tx.h"
422d97b8b05ed3 Chris Packham 2020-02-05   28  #include "ethernet-mdio.h"
422d97b8b05ed3 Chris Packham 2020-02-05   29  #include "ethernet-util.h"
422d97b8b05ed3 Chris Packham 2020-02-05   30  
422d97b8b05ed3 Chris Packham 2020-02-05   31  #define OCTEON_MAX_MTU 65392
422d97b8b05ed3 Chris Packham 2020-02-05   32  
422d97b8b05ed3 Chris Packham 2020-02-05   33  static int num_packet_buffers = 1024;
422d97b8b05ed3 Chris Packham 2020-02-05   34  module_param(num_packet_buffers, int, 0444);
422d97b8b05ed3 Chris Packham 2020-02-05   35  MODULE_PARM_DESC(num_packet_buffers, "\n"
422d97b8b05ed3 Chris Packham 2020-02-05   36  	"\tNumber of packet buffers to allocate and store in the\n"
422d97b8b05ed3 Chris Packham 2020-02-05   37  	"\tFPA. By default, 1024 packet buffers are used.\n");
422d97b8b05ed3 Chris Packham 2020-02-05   38  
422d97b8b05ed3 Chris Packham 2020-02-05   39  static int pow_receive_group = 15;
422d97b8b05ed3 Chris Packham 2020-02-05   40  module_param(pow_receive_group, int, 0444);
422d97b8b05ed3 Chris Packham 2020-02-05   41  MODULE_PARM_DESC(pow_receive_group, "\n"
422d97b8b05ed3 Chris Packham 2020-02-05   42  	"\tPOW group to receive packets from. All ethernet hardware\n"
422d97b8b05ed3 Chris Packham 2020-02-05   43  	"\twill be configured to send incoming packets to this POW\n"
422d97b8b05ed3 Chris Packham 2020-02-05   44  	"\tgroup. Also any other software can submit packets to this\n"
422d97b8b05ed3 Chris Packham 2020-02-05   45  	"\tgroup for the kernel to process.");
422d97b8b05ed3 Chris Packham 2020-02-05   46  
422d97b8b05ed3 Chris Packham 2020-02-05   47  static int receive_group_order;
422d97b8b05ed3 Chris Packham 2020-02-05   48  module_param(receive_group_order, int, 0444);
422d97b8b05ed3 Chris Packham 2020-02-05   49  MODULE_PARM_DESC(receive_group_order, "\n"
422d97b8b05ed3 Chris Packham 2020-02-05   50  	"\tOrder (0..4) of receive groups to take into use. Ethernet hardware\n"
422d97b8b05ed3 Chris Packham 2020-02-05   51  	"\twill be configured to send incoming packets to multiple POW\n"
422d97b8b05ed3 Chris Packham 2020-02-05   52  	"\tgroups. pow_receive_group parameter is ignored when multiple\n"
422d97b8b05ed3 Chris Packham 2020-02-05   53  	"\tgroups are taken into use and groups are allocated starting\n"
422d97b8b05ed3 Chris Packham 2020-02-05   54  	"\tfrom 0. By default, a single group is used.\n");
422d97b8b05ed3 Chris Packham 2020-02-05   55  
422d97b8b05ed3 Chris Packham 2020-02-05   56  int pow_send_group = -1;
422d97b8b05ed3 Chris Packham 2020-02-05   57  module_param(pow_send_group, int, 0644);
422d97b8b05ed3 Chris Packham 2020-02-05   58  MODULE_PARM_DESC(pow_send_group, "\n"
422d97b8b05ed3 Chris Packham 2020-02-05   59  	"\tPOW group to send packets to other software on. This\n"
422d97b8b05ed3 Chris Packham 2020-02-05   60  	"\tcontrols the creation of the virtual device pow0.\n"
422d97b8b05ed3 Chris Packham 2020-02-05   61  	"\talways_use_pow also depends on this value.");
422d97b8b05ed3 Chris Packham 2020-02-05   62  
422d97b8b05ed3 Chris Packham 2020-02-05   63  int always_use_pow;
422d97b8b05ed3 Chris Packham 2020-02-05   64  module_param(always_use_pow, int, 0444);
422d97b8b05ed3 Chris Packham 2020-02-05   65  MODULE_PARM_DESC(always_use_pow, "\n"
422d97b8b05ed3 Chris Packham 2020-02-05   66  	"\tWhen set, always send to the pow group. This will cause\n"
422d97b8b05ed3 Chris Packham 2020-02-05   67  	"\tpackets sent to real ethernet devices to be sent to the\n"
422d97b8b05ed3 Chris Packham 2020-02-05   68  	"\tPOW group instead of the hardware. Unless some other\n"
422d97b8b05ed3 Chris Packham 2020-02-05   69  	"\tapplication changes the config, packets will still be\n"
422d97b8b05ed3 Chris Packham 2020-02-05   70  	"\treceived from the low level hardware. Use this option\n"
422d97b8b05ed3 Chris Packham 2020-02-05   71  	"\tto allow a CVMX app to intercept all packets from the\n"
422d97b8b05ed3 Chris Packham 2020-02-05   72  	"\tlinux kernel. You must specify pow_send_group along with\n"
422d97b8b05ed3 Chris Packham 2020-02-05   73  	"\tthis option.");
422d97b8b05ed3 Chris Packham 2020-02-05   74  
422d97b8b05ed3 Chris Packham 2020-02-05   75  char pow_send_list[128] = "";
422d97b8b05ed3 Chris Packham 2020-02-05   76  module_param_string(pow_send_list, pow_send_list, sizeof(pow_send_list), 0444);
422d97b8b05ed3 Chris Packham 2020-02-05   77  MODULE_PARM_DESC(pow_send_list, "\n"
422d97b8b05ed3 Chris Packham 2020-02-05   78  	"\tComma separated list of ethernet devices that should use the\n"
422d97b8b05ed3 Chris Packham 2020-02-05   79  	"\tPOW for transmit instead of the actual ethernet hardware. This\n"
422d97b8b05ed3 Chris Packham 2020-02-05   80  	"\tis a per port version of always_use_pow. always_use_pow takes\n"
422d97b8b05ed3 Chris Packham 2020-02-05   81  	"\tprecedence over this list. For example, setting this to\n"
422d97b8b05ed3 Chris Packham 2020-02-05   82  	"\t\"eth2,spi3,spi7\" would cause these three devices to transmit\n"
422d97b8b05ed3 Chris Packham 2020-02-05   83  	"\tusing the pow_send_group.");
422d97b8b05ed3 Chris Packham 2020-02-05   84  
422d97b8b05ed3 Chris Packham 2020-02-05   85  int rx_napi_weight = 32;
422d97b8b05ed3 Chris Packham 2020-02-05   86  module_param(rx_napi_weight, int, 0444);
422d97b8b05ed3 Chris Packham 2020-02-05   87  MODULE_PARM_DESC(rx_napi_weight, "The NAPI WEIGHT parameter.");
422d97b8b05ed3 Chris Packham 2020-02-05   88  
422d97b8b05ed3 Chris Packham 2020-02-05   89  /* Mask indicating which receive groups are in use. */
422d97b8b05ed3 Chris Packham 2020-02-05   90  int pow_receive_groups;
422d97b8b05ed3 Chris Packham 2020-02-05   91  
422d97b8b05ed3 Chris Packham 2020-02-05   92  /*
422d97b8b05ed3 Chris Packham 2020-02-05   93   * cvm_oct_poll_queue_stopping - flag to indicate polling should stop.
422d97b8b05ed3 Chris Packham 2020-02-05   94   *
422d97b8b05ed3 Chris Packham 2020-02-05   95   * Set to one right before cvm_oct_poll_queue is destroyed.
422d97b8b05ed3 Chris Packham 2020-02-05   96   */
422d97b8b05ed3 Chris Packham 2020-02-05   97  atomic_t cvm_oct_poll_queue_stopping = ATOMIC_INIT(0);
422d97b8b05ed3 Chris Packham 2020-02-05   98  
422d97b8b05ed3 Chris Packham 2020-02-05   99  /*
422d97b8b05ed3 Chris Packham 2020-02-05  100   * Array of every ethernet device owned by this driver indexed by
422d97b8b05ed3 Chris Packham 2020-02-05  101   * the ipd input port number.
422d97b8b05ed3 Chris Packham 2020-02-05  102   */
422d97b8b05ed3 Chris Packham 2020-02-05  103  struct net_device *cvm_oct_device[TOTAL_NUMBER_OF_PORTS];
422d97b8b05ed3 Chris Packham 2020-02-05  104  
422d97b8b05ed3 Chris Packham 2020-02-05  105  u64 cvm_oct_tx_poll_interval;
422d97b8b05ed3 Chris Packham 2020-02-05  106  
422d97b8b05ed3 Chris Packham 2020-02-05  107  static void cvm_oct_rx_refill_worker(struct work_struct *work);
422d97b8b05ed3 Chris Packham 2020-02-05  108  static DECLARE_DELAYED_WORK(cvm_oct_rx_refill_work, cvm_oct_rx_refill_worker);
422d97b8b05ed3 Chris Packham 2020-02-05  109  
422d97b8b05ed3 Chris Packham 2020-02-05  110  static void cvm_oct_rx_refill_worker(struct work_struct *work)
422d97b8b05ed3 Chris Packham 2020-02-05  111  {
422d97b8b05ed3 Chris Packham 2020-02-05  112  	/*
422d97b8b05ed3 Chris Packham 2020-02-05  113  	 * FPA 0 may have been drained, try to refill it if we need
422d97b8b05ed3 Chris Packham 2020-02-05  114  	 * more than num_packet_buffers / 2, otherwise normal receive
422d97b8b05ed3 Chris Packham 2020-02-05  115  	 * processing will refill it.  If it were drained, no packets
422d97b8b05ed3 Chris Packham 2020-02-05  116  	 * could be received so cvm_oct_napi_poll would never be
422d97b8b05ed3 Chris Packham 2020-02-05  117  	 * invoked to do the refill.
422d97b8b05ed3 Chris Packham 2020-02-05  118  	 */
422d97b8b05ed3 Chris Packham 2020-02-05  119  	cvm_oct_rx_refill_pool(num_packet_buffers / 2);
422d97b8b05ed3 Chris Packham 2020-02-05  120  
422d97b8b05ed3 Chris Packham 2020-02-05  121  	if (!atomic_read(&cvm_oct_poll_queue_stopping))
422d97b8b05ed3 Chris Packham 2020-02-05  122  		schedule_delayed_work(&cvm_oct_rx_refill_work, HZ);
422d97b8b05ed3 Chris Packham 2020-02-05  123  }
422d97b8b05ed3 Chris Packham 2020-02-05  124  
422d97b8b05ed3 Chris Packham 2020-02-05  125  static void cvm_oct_periodic_worker(struct work_struct *work)
422d97b8b05ed3 Chris Packham 2020-02-05  126  {
422d97b8b05ed3 Chris Packham 2020-02-05  127  	struct octeon_ethernet *priv = container_of(work,
422d97b8b05ed3 Chris Packham 2020-02-05  128  						    struct octeon_ethernet,
422d97b8b05ed3 Chris Packham 2020-02-05  129  						    port_periodic_work.work);
422d97b8b05ed3 Chris Packham 2020-02-05  130  
422d97b8b05ed3 Chris Packham 2020-02-05  131  	if (priv->poll)
422d97b8b05ed3 Chris Packham 2020-02-05  132  		priv->poll(cvm_oct_device[priv->port]);
422d97b8b05ed3 Chris Packham 2020-02-05  133  
422d97b8b05ed3 Chris Packham 2020-02-05  134  	cvm_oct_device[priv->port]->netdev_ops->ndo_get_stats
422d97b8b05ed3 Chris Packham 2020-02-05  135  						(cvm_oct_device[priv->port]);
422d97b8b05ed3 Chris Packham 2020-02-05  136  
422d97b8b05ed3 Chris Packham 2020-02-05  137  	if (!atomic_read(&cvm_oct_poll_queue_stopping))
422d97b8b05ed3 Chris Packham 2020-02-05  138  		schedule_delayed_work(&priv->port_periodic_work, HZ);
422d97b8b05ed3 Chris Packham 2020-02-05  139  }
422d97b8b05ed3 Chris Packham 2020-02-05  140  
422d97b8b05ed3 Chris Packham 2020-02-05  141  static void cvm_oct_configure_common_hw(void)
422d97b8b05ed3 Chris Packham 2020-02-05  142  {
422d97b8b05ed3 Chris Packham 2020-02-05  143  	/* Setup the FPA */
422d97b8b05ed3 Chris Packham 2020-02-05  144  	cvmx_fpa_enable();
422d97b8b05ed3 Chris Packham 2020-02-05  145  	cvm_oct_mem_fill_fpa(CVMX_FPA_PACKET_POOL, CVMX_FPA_PACKET_POOL_SIZE,
422d97b8b05ed3 Chris Packham 2020-02-05  146  			     num_packet_buffers);
422d97b8b05ed3 Chris Packham 2020-02-05  147  	cvm_oct_mem_fill_fpa(CVMX_FPA_WQE_POOL, CVMX_FPA_WQE_POOL_SIZE,
422d97b8b05ed3 Chris Packham 2020-02-05  148  			     num_packet_buffers);
422d97b8b05ed3 Chris Packham 2020-02-05  149  	if (CVMX_FPA_OUTPUT_BUFFER_POOL != CVMX_FPA_PACKET_POOL)
422d97b8b05ed3 Chris Packham 2020-02-05  150  		cvm_oct_mem_fill_fpa(CVMX_FPA_OUTPUT_BUFFER_POOL,
422d97b8b05ed3 Chris Packham 2020-02-05  151  				     CVMX_FPA_OUTPUT_BUFFER_POOL_SIZE, 1024);
422d97b8b05ed3 Chris Packham 2020-02-05  152  
422d97b8b05ed3 Chris Packham 2020-02-05  153  #ifdef __LITTLE_ENDIAN
422d97b8b05ed3 Chris Packham 2020-02-05  154  	{
422d97b8b05ed3 Chris Packham 2020-02-05  155  		union cvmx_ipd_ctl_status ipd_ctl_status;
422d97b8b05ed3 Chris Packham 2020-02-05  156  
422d97b8b05ed3 Chris Packham 2020-02-05  157  		ipd_ctl_status.u64 = cvmx_read_csr(CVMX_IPD_CTL_STATUS);
422d97b8b05ed3 Chris Packham 2020-02-05  158  		ipd_ctl_status.s.pkt_lend = 1;
422d97b8b05ed3 Chris Packham 2020-02-05  159  		ipd_ctl_status.s.wqe_lend = 1;
422d97b8b05ed3 Chris Packham 2020-02-05  160  		cvmx_write_csr(CVMX_IPD_CTL_STATUS, ipd_ctl_status.u64);
422d97b8b05ed3 Chris Packham 2020-02-05  161  	}
422d97b8b05ed3 Chris Packham 2020-02-05  162  #endif
422d97b8b05ed3 Chris Packham 2020-02-05  163  
422d97b8b05ed3 Chris Packham 2020-02-05  164  	cvmx_helper_setup_red(num_packet_buffers / 4, num_packet_buffers / 8);
422d97b8b05ed3 Chris Packham 2020-02-05  165  }
422d97b8b05ed3 Chris Packham 2020-02-05  166  
422d97b8b05ed3 Chris Packham 2020-02-05  167  /**
422d97b8b05ed3 Chris Packham 2020-02-05  168   * cvm_oct_free_work- Free a work queue entry
422d97b8b05ed3 Chris Packham 2020-02-05  169   *
422d97b8b05ed3 Chris Packham 2020-02-05  170   * @work_queue_entry: Work queue entry to free
422d97b8b05ed3 Chris Packham 2020-02-05  171   *
422d97b8b05ed3 Chris Packham 2020-02-05  172   * Returns Zero on success, Negative on failure.
422d97b8b05ed3 Chris Packham 2020-02-05  173   */
422d97b8b05ed3 Chris Packham 2020-02-05  174  int cvm_oct_free_work(void *work_queue_entry)
422d97b8b05ed3 Chris Packham 2020-02-05  175  {
422d97b8b05ed3 Chris Packham 2020-02-05  176  	struct cvmx_wqe *work = work_queue_entry;
422d97b8b05ed3 Chris Packham 2020-02-05  177  
422d97b8b05ed3 Chris Packham 2020-02-05  178  	int segments = work->word2.s.bufs;
422d97b8b05ed3 Chris Packham 2020-02-05  179  	union cvmx_buf_ptr segment_ptr = work->packet_ptr;
422d97b8b05ed3 Chris Packham 2020-02-05  180  
422d97b8b05ed3 Chris Packham 2020-02-05  181  	while (segments--) {
422d97b8b05ed3 Chris Packham 2020-02-05  182  		union cvmx_buf_ptr next_ptr = *(union cvmx_buf_ptr *)
422d97b8b05ed3 Chris Packham 2020-02-05  183  			cvmx_phys_to_ptr(segment_ptr.s.addr - 8);
422d97b8b05ed3 Chris Packham 2020-02-05  184  		if (unlikely(!segment_ptr.s.i))
422d97b8b05ed3 Chris Packham 2020-02-05  185  			cvmx_fpa_free(cvm_oct_get_buffer_ptr(segment_ptr),
422d97b8b05ed3 Chris Packham 2020-02-05  186  				      segment_ptr.s.pool,
422d97b8b05ed3 Chris Packham 2020-02-05  187  				      CVMX_FPA_PACKET_POOL_SIZE / 128);
422d97b8b05ed3 Chris Packham 2020-02-05  188  		segment_ptr = next_ptr;
422d97b8b05ed3 Chris Packham 2020-02-05  189  	}
422d97b8b05ed3 Chris Packham 2020-02-05  190  	cvmx_fpa_free(work, CVMX_FPA_WQE_POOL, 1);
422d97b8b05ed3 Chris Packham 2020-02-05  191  
422d97b8b05ed3 Chris Packham 2020-02-05  192  	return 0;
422d97b8b05ed3 Chris Packham 2020-02-05  193  }
422d97b8b05ed3 Chris Packham 2020-02-05  194  EXPORT_SYMBOL(cvm_oct_free_work);
422d97b8b05ed3 Chris Packham 2020-02-05  195  
422d97b8b05ed3 Chris Packham 2020-02-05  196  /**
422d97b8b05ed3 Chris Packham 2020-02-05  197   * cvm_oct_common_get_stats - get the low level ethernet statistics
422d97b8b05ed3 Chris Packham 2020-02-05  198   * @dev:    Device to get the statistics from
422d97b8b05ed3 Chris Packham 2020-02-05  199   *
422d97b8b05ed3 Chris Packham 2020-02-05  200   * Returns Pointer to the statistics
422d97b8b05ed3 Chris Packham 2020-02-05  201   */
422d97b8b05ed3 Chris Packham 2020-02-05  202  static struct net_device_stats *cvm_oct_common_get_stats(struct net_device *dev)
422d97b8b05ed3 Chris Packham 2020-02-05  203  {
422d97b8b05ed3 Chris Packham 2020-02-05 @204  	cvmx_pip_port_status_t rx_status;
422d97b8b05ed3 Chris Packham 2020-02-05 @205  	cvmx_pko_port_status_t tx_status;
422d97b8b05ed3 Chris Packham 2020-02-05  206  	struct octeon_ethernet *priv = netdev_priv(dev);
422d97b8b05ed3 Chris Packham 2020-02-05  207  
422d97b8b05ed3 Chris Packham 2020-02-05  208  	if (priv->port < CVMX_PIP_NUM_INPUT_PORTS) {
422d97b8b05ed3 Chris Packham 2020-02-05  209  		if (octeon_is_simulation()) {
422d97b8b05ed3 Chris Packham 2020-02-05  210  			/* The simulator doesn't support statistics */
422d97b8b05ed3 Chris Packham 2020-02-05  211  			memset(&rx_status, 0, sizeof(rx_status));
422d97b8b05ed3 Chris Packham 2020-02-05  212  			memset(&tx_status, 0, sizeof(tx_status));
422d97b8b05ed3 Chris Packham 2020-02-05  213  		} else {
422d97b8b05ed3 Chris Packham 2020-02-05 @214  			cvmx_pip_get_port_status(priv->port, 1, &rx_status);
422d97b8b05ed3 Chris Packham 2020-02-05 @215  			cvmx_pko_get_port_status(priv->port, 1, &tx_status);
422d97b8b05ed3 Chris Packham 2020-02-05  216  		}
422d97b8b05ed3 Chris Packham 2020-02-05  217  
422d97b8b05ed3 Chris Packham 2020-02-05 @218  		dev->stats.rx_packets += rx_status.inb_packets;
422d97b8b05ed3 Chris Packham 2020-02-05 @219  		dev->stats.tx_packets += tx_status.packets;
422d97b8b05ed3 Chris Packham 2020-02-05 @220  		dev->stats.rx_bytes += rx_status.inb_octets;
422d97b8b05ed3 Chris Packham 2020-02-05 @221  		dev->stats.tx_bytes += tx_status.octets;
422d97b8b05ed3 Chris Packham 2020-02-05 @222  		dev->stats.multicast += rx_status.multicast_packets;
422d97b8b05ed3 Chris Packham 2020-02-05 @223  		dev->stats.rx_crc_errors += rx_status.inb_errors;
422d97b8b05ed3 Chris Packham 2020-02-05 @224  		dev->stats.rx_frame_errors += rx_status.fcs_align_err_packets;
422d97b8b05ed3 Chris Packham 2020-02-05 @225  		dev->stats.rx_dropped += rx_status.dropped_packets;
422d97b8b05ed3 Chris Packham 2020-02-05  226  	}
422d97b8b05ed3 Chris Packham 2020-02-05  227  
422d97b8b05ed3 Chris Packham 2020-02-05  228  	return &dev->stats;
422d97b8b05ed3 Chris Packham 2020-02-05  229  }
422d97b8b05ed3 Chris Packham 2020-02-05  230  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

  reply	other threads:[~2025-05-19  8:37 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-05-19  6:29 [PATCH] staging: octeon: remove typedef declaration Sunghun Son
2025-05-19  8:36 ` kernel test robot [this message]
  -- strict thread matches above, loose matches on Subject: below --
2019-10-08  4:09 [PATCH] staging: octeon: Remove " Wambui Karuga
2019-10-23 17:26 ` Aaro Koskinen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202505191650.PbeMZMEG-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-staging@lists.linux.dev \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=thswpvm1111@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.