Subject: Re: [PATCH net-next v2 1/7] bnx2x: convert to use ndo_hwtstamp callbacks

From: Vadim Fedorenko <[email-masked]>
Date: Wed, 5 Nov 2025 13:33:08 +0000

On 05/11/2025 01:37, Jakub Kicinski wrote:
> On Mon,  3 Nov 2025 15:09:46 +0000 Vadim Fedorenko wrote:
>> -static int bnx2x_hwtstamp_ioctl(struct bnx2x *bp, struct ifreq *ifr)
>> +static int bnx2x_hwtstamp_set(struct net_device *dev,
>> +			      struct kernel_hwtstamp_config *config,
>> +			      struct netlink_ext_ack *extack)
>>   {
>> -	struct hwtstamp_config config;
>> +	struct bnx2x *bp = netdev_priv(dev);
>>   	int rc;
>>   
>> -	DP(BNX2X_MSG_PTP, "HWTSTAMP IOCTL called\n");
>> -
>> -	if (copy_from_user(&config, ifr->ifr_data, sizeof(config)))
>> -		return -EFAULT;
>> +	DP(BNX2X_MSG_PTP, "HWTSTAMP SET called\n");
>>   
>>   	DP(BNX2X_MSG_PTP, "Requested tx_type: %d, requested rx_filters = %d\n",
>> -	   config.tx_type, config.rx_filter);
>> +	   config->tx_type, config->rx_filter);
>>   
>>   	bp->hwtstamp_ioctl_called = true;
>> -	bp->tx_type = config.tx_type;
>> -	bp->rx_filter = config.rx_filter;
>> +	bp->tx_type = config->tx_type;
>> +	bp->rx_filter = config->rx_filter;
>>   
>>   	rc = bnx2x_configure_ptp_filters(bp);
> 
> bnx2x_configure_ptp_filters() may return -ERANGE if settings were not applied.
> This may already be semi-broken but with the get in place we will make
> it even worse.

Ah, you mean in case of -ERANGE we will still have new filter
configuration set in bp object? It's easy to fix, but it will be
some kind of change of behavior. If it's acceptable, I'm happy to send 
v3 of the patchset.>
>>   	if (rc)
>>   		return rc;
>>   
>> -	config.rx_filter = bp->rx_filter;
>> +	config->rx_filter = bp->rx_filter;
>> +
>> +	return 0;
>> +}
>>   
>> -	return copy_to_user(ifr->ifr_data, &config, sizeof(config)) ?
>> -		-EFAULT : 0;
>> +static int bnx2x_hwtstamp_get(struct net_device *dev,
>> +			      struct kernel_hwtstamp_config *config)
>> +{
>> +	struct bnx2x *bp = netdev_priv(dev);
>> +
>> +	config->rx_filter = bp->rx_filter;
>> +	config->tx_type = bp->tx_type;
>> +
>> +	return 0;
>>   }