lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <659a571e-2760-4028-ba08-0040aeea4aff@lunn.ch>
Date: Sun, 6 Oct 2024 23:05:03 +0200
From: Andrew Lunn <andrew@...n.ch>
To: Liel Harel <liel.harel@...il.com>
Cc: Steve Glendinning <steve.glendinning@...well.net>,
	UNGLinuxDriver@...rochip.com,
	"David S. Miller" <davem@...emloft.net>,
	Eric Dumazet <edumazet@...gle.com>,
	Jakub Kicinski <kuba@...nel.org>, Paolo Abeni <pabeni@...hat.com>,
	netdev@...r.kernel.org, linux-usb@...r.kernel.org,
	linux-kernel@...r.kernel.org
Subject: Re: [PATCH net] smsc95xx: Add implementation for set_pauseparam for
 enabling to pause RX path.

On Fri, Oct 04, 2024 at 02:20:00PM +0300, Liel Harel wrote:
> Enable userspace applications to pause RX path by IOCTL.

The legacy API probably does still work, but netlink is used now a
days for pause.

>  
>  /* Loop until the read is completed with timeout
> - * called with phy_mutex held */
> + * called with phy_mutex held
> + */

Please don't mix checkpatch style changes with functional changes in
one patch. Please break this up into a patchset.

>  static int __must_check smsc95xx_phy_wait_not_busy(struct usbnet *dev)
>  {
>  	unsigned long start_time = jiffies;
> @@ -470,7 +471,8 @@ static int __must_check smsc95xx_write_reg_async(struct usbnet *dev, u16 index,
>  
>  /* returns hash bit number for given MAC address
>   * example:
> - * 01 00 5E 00 00 01 -> returns bit number 31 */
> + * 01 00 5E 00 00 01 -> returns bit number 31
> + */
>  static unsigned int smsc95xx_hash(char addr[ETH_ALEN])
>  {
>  	return (ether_crc(ETH_ALEN, addr) >> 26) & 0x3f;
> @@ -772,6 +774,45 @@ static int smsc95xx_ethtool_get_sset_count(struct net_device *ndev, int sset)
>  	}
>  }
>  
> +/* Starts the Receive path */
> +static int smsc95xx_start_rx_path(struct usbnet *dev)
> +{
> +	struct smsc95xx_priv *pdata = dev->driver_priv;
> +	unsigned long flags;
> +
> +	spin_lock_irqsave(&pdata->mac_cr_lock, flags);
> +	pdata->mac_cr |= MAC_CR_RXEN_;
> +	spin_unlock_irqrestore(&pdata->mac_cr_lock, flags);
> +
> +	return smsc95xx_write_reg(dev, MAC_CR, pdata->mac_cr);
> +}
> +
> +/* Stops the Receive path */
> +static int smsc95xx_stop_rx_path(struct usbnet *dev)
> +{
> +	struct smsc95xx_priv *pdata = dev->driver_priv;
> +	unsigned long flags;
> +
> +	spin_lock_irqsave(&pdata->mac_cr_lock, flags);
> +	pdata->mac_cr &= ~MAC_CR_RXEN_;
> +	spin_unlock_irqrestore(&pdata->mac_cr_lock, flags);
> +
> +	return smsc95xx_write_reg(dev, MAC_CR, pdata->mac_cr);
> +}
> +
> +static int smsc95xx_ethtool_set_pauseparam(struct net_device *netdev,
> +									struct ethtool_pauseparam *pause)

indentation is wrong here.

> +{
> +	struct usbnet *dev = netdev_priv(netdev);
> +
> +	if (!pause->tx_pause || !pause->autoneg)
> +		return -EINVAL;
> +
> +	if (pause->rx_pause)
> +		return smsc95xx_start_rx_path(dev);
> +	return smsc95xx_stop_rx_path(dev);

This does not make much sense to me. What does pause mean to you?

> +}
> +
>  static const struct ethtool_ops smsc95xx_ethtool_ops = {
>  	.get_link	= smsc95xx_get_link,
>  	.nway_reset	= phy_ethtool_nway_reset,
> @@ -791,6 +832,7 @@ static const struct ethtool_ops smsc95xx_ethtool_ops = {
>  	.self_test	= net_selftest,
>  	.get_strings	= smsc95xx_ethtool_get_strings,
>  	.get_sset_count	= smsc95xx_ethtool_get_sset_count,
> +	.set_pauseparam = smsc95xx_ethtool_set_pauseparam,
>  };
>  
>  static int smsc95xx_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd)
> @@ -863,26 +905,13 @@ static int smsc95xx_start_tx_path(struct usbnet *dev)
>  	return smsc95xx_write_reg(dev, TX_CFG, TX_CFG_ON_);
>  }
>  
> -/* Starts the Receive path */
> -static int smsc95xx_start_rx_path(struct usbnet *dev)
> -{
> -	struct smsc95xx_priv *pdata = dev->driver_priv;
> -	unsigned long flags;
> -
> -	spin_lock_irqsave(&pdata->mac_cr_lock, flags);
> -	pdata->mac_cr |= MAC_CR_RXEN_;
> -	spin_unlock_irqrestore(&pdata->mac_cr_lock, flags);
> -
> -	return smsc95xx_write_reg(dev, MAC_CR, pdata->mac_cr);
> -}

If you need to move a function earlier in the code, please do that as
a separate patch, making it clear in the commit message that all it is
doing is moving code.

You want lots of small patches which are obviously correct.

> @@ -1076,7 +1105,7 @@ static const struct net_device_ops smsc95xx_netdev_ops = {
>  	.ndo_tx_timeout		= usbnet_tx_timeout,
>  	.ndo_change_mtu		= usbnet_change_mtu,
>  	.ndo_get_stats64	= dev_get_tstats64,
> -	.ndo_set_mac_address 	= eth_mac_addr,
> +	.ndo_set_mac_address = eth_mac_addr,

This hunk looks wrong.

	Andrew

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ