All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next v6 00/10] bng_en: add link management and statistics support
@ 2026-03-10 14:40 Bhargava Marreddy
  2026-03-10 14:40 ` [PATCH net-next v6 01/10] bng_en: add per-PF workqueue, timer, and slow-path task Bhargava Marreddy
                   ` (9 more replies)
  0 siblings, 10 replies; 17+ messages in thread
From: Bhargava Marreddy @ 2026-03-10 14:40 UTC (permalink / raw)
  To: davem, edumazet, kuba, pabeni, andrew+netdev, horms
  Cc: netdev, linux-kernel, michael.chan, pavan.chebbi,
	vsrama-krishna.nemani, vikas.gupta, Bhargava Marreddy

Hi,

This series enhances the bng_en driver by adding:
1. Link/PHY support
   a. Link query
   b. Async Link events
   c. Ethtool link set/get functionality
2. Hardware statistics reporting via ethtool -S

This version incorporates feedback received prior to splitting the
original series into two parts. 

 Addressed following comments from Andrew Lunn
   - Apply Rev-xmas fix in several places.
   - Correct ethtool-speed comment to reflect accurate behavior.
   https://lore.kernel.org/netdev/49930724-74b8-41fe-8f5c-482afc976b82@lunn.ch/
   https://lore.kernel.org/netdev/CANXQDtb5XuLKOOorCMYDUpVz6aFuQgvmQZ4pS6RJGkAgeM8n1A@mail.gmail.com/

 Addressed following comments from Jakub Kicinski
   - Took care of missing mutex_init()
   https://lore.kernel.org/netdev/20251127190855.69779791@kernel.org/#t
   https://lore.kernel.org/netdev/CANXQDtYy2JziaaVi=Cqt+gAJNt4NjFFs8NbhrS=RBV61ORwinA@mail.gmail.com/

 Addressed following comments from ALOK TIWARI
   - Add newline for clarity/formatting.
   https://lore.kernel.org/netdev/CANXQDtZbLhdwEtN+kKg1OVLV+uy-gsNfX+rU4MR77QPuO6_y9A@mail.gmail.com/

v6:
 - Resending the full series due to an SMTP failure during v5 submission.
 - No functional changes from v5.

v5:
 Address Jakub Kicinski's comments by holding the instance lock across
 the entire service task (instead of flag-based locking) and checking
 the OPEN bit under the lock to resolve the close-path deadlock. 

v4:
 Addressed comments from Jakub Kicinski:
  - Explicitly size speed mask arrays to remove the need for manual
    sentinels in the hardware configuration.
  - Fix an off-by-one error in the queue index bound check.
  - Standardize ethtool -S per-ring stat naming to "rxq$id_$name"
    (e.g., rxq0_errors). Removed spaces and brackets to ensure
    compatibility with parsing scripts.
  - Exclude ethtool -S global counters (tx_err, tx_fifo_underruns,
    tx_total_collisions) already covered by rtnl_link_stats64.

v3:
 Addressed comments from Andrew Lunn:
  - Fix a comment and refactor bnge_hwrm_set_pause() 
    to improve code readability.

 Addressed comments from Jakub Kicinski:
  - Switch to RCU for stats synchronization and drop the 
    BNGE_STATE_READ_STATS state bit.

 Fix checkpatch warning by switching to kzalloc_node(). 

v2:
 Addressed comments from Andrew Lunn:
  - Add implementation for .get_pauseparam and .set_pauseparam to support
    a full flow control configuration, covering global autoneg, independent
    pause autoneg, and forced RX/TX pause functionality.
  - Move MAC, PHY, Control, Pause, and RMON statistics from
    .get_ethtool_stats to their respective structured ethtool
    callbacks (e.g., .get_eth_mac_stats, .get_rmon_stats).
 
 Addressed comments from Jakub Kicinski:
  - Fix potential out-of-bounds read in speed mask array by adding 
    the missing sentinel.
  - Simplify timer synchronization by removing the redundant intr_sem.
  - Replace link_lock with the netdev instance lock, as it is sufficient
    to handle the required synchronization.

v1: https://lore.kernel.org/all/20260223163641.755200-1-bhargava.marreddy@broadcom.com/

Bhargava Marreddy (10):
  bng_en: add per-PF workqueue, timer, and slow-path task
  bng_en: query PHY capabilities and report link status
  bng_en: add ethtool link settings, get_link, and nway_reset
  bng_en: implement ethtool pauseparam operations
  bng_en: add support for link async events
  bng_en: add HW stats infra and structured ethtool ops
  bng_en: periodically fetch and accumulate hardware statistics
  bng_en: implement ndo_get_stats64
  bng_en: implement netdev_stat_ops
  bng_en: add support for ethtool -S stats display

 drivers/net/ethernet/broadcom/bnge/Makefile   |    3 +-
 drivers/net/ethernet/broadcom/bnge/bnge.h     |   12 +
 .../net/ethernet/broadcom/bnge/bnge_core.c    |    1 +
 .../net/ethernet/broadcom/bnge/bnge_ethtool.c |  808 ++++++++++
 .../ethernet/broadcom/bnge/bnge_hwrm_lib.c    |  388 ++++-
 .../ethernet/broadcom/bnge/bnge_hwrm_lib.h    |    8 +
 .../net/ethernet/broadcom/bnge/bnge_link.c    | 1300 +++++++++++++++++
 .../net/ethernet/broadcom/bnge/bnge_link.h    |  204 +++
 .../net/ethernet/broadcom/bnge/bnge_netdev.c  |  632 +++++++-
 .../net/ethernet/broadcom/bnge/bnge_netdev.h  |  119 +-
 .../net/ethernet/broadcom/bnge/bnge_txrx.c    |   35 +-
 11 files changed, 3491 insertions(+), 19 deletions(-)
 create mode 100644 drivers/net/ethernet/broadcom/bnge/bnge_link.c
 create mode 100644 drivers/net/ethernet/broadcom/bnge/bnge_link.h

-- 
2.47.3


^ permalink raw reply	[flat|nested] 17+ messages in thread
* Re: [PATCH net-next v6 06/10] bng_en: add HW stats infra and structured ethtool ops
  2026-03-10 14:40 ` [PATCH net-next v6 06/10] bng_en: add HW stats infra and structured ethtool ops Bhargava Marreddy
@ 2026-03-18  7:47 ` Dan Carpenter
  -1 siblings, 0 replies; 17+ messages in thread
From: kernel test robot @ 2026-03-17 22:06 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <20260310144044.21672-7-bhargava.marreddy@broadcom.com>
References: <20260310144044.21672-7-bhargava.marreddy@broadcom.com>
TO: Bhargava Marreddy <bhargava.marreddy@broadcom.com>
TO: davem@davemloft.net
TO: edumazet@google.com
TO: kuba@kernel.org
TO: pabeni@redhat.com
TO: andrew+netdev@lunn.ch
TO: horms@kernel.org
CC: netdev@vger.kernel.org
CC: linux-kernel@vger.kernel.org
CC: michael.chan@broadcom.com
CC: pavan.chebbi@broadcom.com
CC: vsrama-krishna.nemani@broadcom.com
CC: vikas.gupta@broadcom.com
CC: Bhargava Marreddy <bhargava.marreddy@broadcom.com>
CC: Rahul Gupta <rahul-rg.gupta@broadcom.com>
CC: Ajit Kumar Khaparde <ajit.khaparde@broadcom.com>

Hi Bhargava,

kernel test robot noticed the following build warnings:

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

url:    https://github.com/intel-lab-lkp/linux/commits/Bhargava-Marreddy/bng_en-add-per-PF-workqueue-timer-and-slow-path-task/20260310-231948
base:   net-next/main
patch link:    https://lore.kernel.org/r/20260310144044.21672-7-bhargava.marreddy%40broadcom.com
patch subject: [PATCH net-next v6 06/10] bng_en: add HW stats infra and structured ethtool ops
:::::: branch date: 7 days ago
:::::: commit date: 7 days ago
config: arm64-randconfig-r071-20260317 (https://download.01.org/0day-ci/archive/20260318/202603180509.nOQGZrG0-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 8.5.0
smatch: v0.5.0-9004-gb810ac53

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>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202603180509.nOQGZrG0-lkp@intel.com/

smatch warnings:
drivers/net/ethernet/broadcom/bnge/bnge_hwrm_lib.c:1598 bnge_hwrm_port_qstats_ext() warn: missing error code? 'rc'

vim +/rc +1598 drivers/net/ethernet/broadcom/bnge/bnge_hwrm_lib.c

598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1522  
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1523  int bnge_hwrm_port_qstats_ext(struct bnge_dev *bd, u8 flags)
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1524  {
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1525  	struct hwrm_queue_pri2cos_qcfg_output *resp_qc;
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1526  	struct bnge_net *bn = netdev_priv(bd->netdev);
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1527  	struct hwrm_queue_pri2cos_qcfg_input *req_qc;
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1528  	struct hwrm_port_qstats_ext_output *resp_qs;
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1529  	struct hwrm_port_qstats_ext_input *req_qs;
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1530  	struct bnge_pf_info *pf = &bd->pf;
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1531  	u32 tx_stat_size;
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1532  	int rc;
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1533  
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1534  	if (!(bn->flags & BNGE_FLAG_PORT_STATS_EXT))
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1535  		return 0;
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1536  
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1537  	if (flags && !(bd->fw_cap & BNGE_FW_CAP_EXT_HW_STATS_SUPPORTED))
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1538  		return -EOPNOTSUPP;
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1539  
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1540  	rc = bnge_hwrm_req_init(bd, req_qs, HWRM_PORT_QSTATS_EXT);
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1541  	if (rc)
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1542  		return rc;
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1543  
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1544  	req_qs->flags = flags;
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1545  	req_qs->port_id = cpu_to_le16(pf->port_id);
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1546  	req_qs->rx_stat_size = cpu_to_le16(sizeof(struct rx_port_stats_ext));
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1547  	req_qs->rx_stat_host_addr =
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1548  		cpu_to_le64(bn->rx_port_stats_ext.hw_stats_map);
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1549  	tx_stat_size = bn->tx_port_stats_ext.hw_stats ?
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1550  		       sizeof(struct tx_port_stats_ext) : 0;
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1551  	req_qs->tx_stat_size = cpu_to_le16(tx_stat_size);
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1552  	req_qs->tx_stat_host_addr =
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1553  		cpu_to_le64(bn->tx_port_stats_ext.hw_stats_map);
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1554  	resp_qs = bnge_hwrm_req_hold(bd, req_qs);
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1555  	rc = bnge_hwrm_req_send(bd, req_qs);
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1556  	if (!rc) {
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1557  		bn->fw_rx_stats_ext_size =
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1558  			le16_to_cpu(resp_qs->rx_stat_size) / 8;
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1559  		bn->fw_tx_stats_ext_size = tx_stat_size ?
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1560  			le16_to_cpu(resp_qs->tx_stat_size) / 8 : 0;
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1561  	} else {
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1562  		bn->fw_rx_stats_ext_size = 0;
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1563  		bn->fw_tx_stats_ext_size = 0;
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1564  	}
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1565  	bnge_hwrm_req_drop(bd, req_qs);
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1566  
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1567  	if (flags)
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1568  		return rc;
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1569  
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1570  	if (bn->fw_tx_stats_ext_size <=
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1571  	    offsetof(struct tx_port_stats_ext, pfc_pri0_tx_duration_us) / 8) {
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1572  		bn->pri2cos_valid = false;
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1573  		return rc;
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1574  	}
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1575  
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1576  	rc = bnge_hwrm_req_init(bd, req_qc, HWRM_QUEUE_PRI2COS_QCFG);
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1577  	if (rc)
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1578  		return rc;
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1579  
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1580  	req_qc->flags = cpu_to_le32(QUEUE_PRI2COS_QCFG_REQ_FLAGS_IVLAN);
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1581  
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1582  	resp_qc = bnge_hwrm_req_hold(bd, req_qc);
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1583  	rc = bnge_hwrm_req_send(bd, req_qc);
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1584  	if (!rc) {
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1585  		u8 *pri2cos;
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1586  		int i, j;
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1587  
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1588  		pri2cos = &resp_qc->pri0_cos_queue_id;
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1589  		for (i = 0; i < 8; i++) {
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1590  			u8 queue_id = pri2cos[i];
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1591  			u8 queue_idx;
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1592  
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1593  			/* Per port queue IDs start from 0, 10, 20, etc */
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1594  			queue_idx = queue_id % 10;
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1595  			if (queue_idx >= BNGE_MAX_QUEUE) {
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1596  				bn->pri2cos_valid = false;
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1597  				bnge_hwrm_req_drop(bd, req_qc);
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10 @1598  				return rc;
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1599  			}
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1600  			for (j = 0; j < bd->max_q; j++) {
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1601  				if (bd->q_ids[j] == queue_id)
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1602  					bn->pri2cos_idx[i] = queue_idx;
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1603  			}
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1604  		}
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1605  		bn->pri2cos_valid = true;
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1606  	}
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1607  	bnge_hwrm_req_drop(bd, req_qc);
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1608  
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1609  	return rc;
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1610  }
598cdbbcf8f4c1 Bhargava Marreddy 2026-03-10  1611  

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

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

end of thread, other threads:[~2026-03-18  7:47 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-10 14:40 [PATCH net-next v6 00/10] bng_en: add link management and statistics support Bhargava Marreddy
2026-03-10 14:40 ` [PATCH net-next v6 01/10] bng_en: add per-PF workqueue, timer, and slow-path task Bhargava Marreddy
2026-03-10 14:40 ` [PATCH net-next v6 02/10] bng_en: query PHY capabilities and report link status Bhargava Marreddy
2026-03-11 15:44   ` ALOK TIWARI
2026-03-13  2:18   ` [net-next,v6,02/10] " Jakub Kicinski
2026-03-10 14:40 ` [PATCH net-next v6 03/10] bng_en: add ethtool link settings, get_link, and nway_reset Bhargava Marreddy
2026-03-10 14:40 ` [PATCH net-next v6 04/10] bng_en: implement ethtool pauseparam operations Bhargava Marreddy
2026-03-10 14:40 ` [PATCH net-next v6 05/10] bng_en: add support for link async events Bhargava Marreddy
2026-03-10 14:40 ` [PATCH net-next v6 06/10] bng_en: add HW stats infra and structured ethtool ops Bhargava Marreddy
2026-03-10 14:40 ` [PATCH net-next v6 07/10] bng_en: periodically fetch and accumulate hardware statistics Bhargava Marreddy
2026-03-10 14:40 ` [PATCH net-next v6 08/10] bng_en: implement ndo_get_stats64 Bhargava Marreddy
2026-03-10 14:40 ` [PATCH net-next v6 09/10] bng_en: implement netdev_stat_ops Bhargava Marreddy
2026-03-10 14:40 ` [PATCH net-next v6 10/10] bng_en: add support for ethtool -S stats display Bhargava Marreddy
2026-03-12  7:01   ` ALOK TIWARI
2026-03-13  2:22   ` Jakub Kicinski
  -- strict thread matches above, loose matches on Subject: below --
2026-03-17 22:06 [PATCH net-next v6 06/10] bng_en: add HW stats infra and structured ethtool ops kernel test robot
2026-03-18  7:47 ` Dan Carpenter

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.