mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-30 15:43:08 -04:00
net: wangxun: add reinit parameter to wx->do_reset callback
To implement a simple hardware reset without tearing down the network interface state, introduce a boolean 'reinit' parameter to wx->do_reset callback. Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com> Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com> Link: https://patch.msgid.link/20260803064334.21876-4-jiawenwu@trustnetic.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
22d95e93c0
commit
c656a3b75c
@@ -16,7 +16,7 @@ static void wx_pf_reset_subtask(struct wx *wx)
|
||||
|
||||
wx_warn(wx, "Reset adapter.\n");
|
||||
if (wx->do_reset)
|
||||
wx->do_reset(wx->netdev);
|
||||
wx->do_reset(wx->netdev, true);
|
||||
}
|
||||
|
||||
static void wx_reset_task(struct work_struct *work)
|
||||
|
||||
@@ -397,7 +397,7 @@ static void wx_update_rsc(struct wx *wx)
|
||||
|
||||
/* reset the device to apply the new RSC setting */
|
||||
if (need_reset && wx->do_reset)
|
||||
wx->do_reset(netdev);
|
||||
wx->do_reset(netdev, true);
|
||||
}
|
||||
|
||||
int wx_set_coalesce(struct net_device *netdev,
|
||||
|
||||
@@ -3151,7 +3151,7 @@ int wx_set_features(struct net_device *netdev, netdev_features_t features)
|
||||
netdev->features = features;
|
||||
|
||||
if (changed & NETIF_F_HW_VLAN_CTAG_RX && wx->do_reset)
|
||||
wx->do_reset(netdev);
|
||||
wx->do_reset(netdev, true);
|
||||
else if (changed & (NETIF_F_HW_VLAN_CTAG_RX | NETIF_F_HW_VLAN_CTAG_FILTER))
|
||||
wx_set_rx_mode(netdev);
|
||||
|
||||
@@ -3201,7 +3201,7 @@ int wx_set_features(struct net_device *netdev, netdev_features_t features)
|
||||
|
||||
out:
|
||||
if (need_reset && wx->do_reset)
|
||||
wx->do_reset(netdev);
|
||||
wx->do_reset(netdev, true);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1408,7 +1408,7 @@ struct wx {
|
||||
void (*atr)(struct wx_ring *ring, struct wx_tx_buffer *first, u8 ptype);
|
||||
void (*configure_fdir)(struct wx *wx);
|
||||
int (*setup_tc)(struct net_device *netdev, u8 tc);
|
||||
void (*do_reset)(struct net_device *netdev);
|
||||
void (*do_reset)(struct net_device *netdev, bool reinit);
|
||||
int (*ptp_setup_sdp)(struct wx *wx);
|
||||
void (*set_num_queues)(struct wx *wx);
|
||||
|
||||
|
||||
@@ -633,11 +633,11 @@ static void ngbe_reinit_locked(struct wx *wx)
|
||||
mutex_unlock(&wx->reset_lock);
|
||||
}
|
||||
|
||||
void ngbe_do_reset(struct net_device *netdev)
|
||||
void ngbe_do_reset(struct net_device *netdev, bool reinit)
|
||||
{
|
||||
struct wx *wx = netdev_priv(netdev);
|
||||
|
||||
if (netif_running(netdev))
|
||||
if (netif_running(netdev) && reinit)
|
||||
ngbe_reinit_locked(wx);
|
||||
else
|
||||
ngbe_reset(wx);
|
||||
|
||||
@@ -125,6 +125,6 @@ extern char ngbe_driver_name[];
|
||||
void ngbe_down(struct wx *wx);
|
||||
void ngbe_up(struct wx *wx);
|
||||
int ngbe_setup_tc(struct net_device *dev, u8 tc);
|
||||
void ngbe_do_reset(struct net_device *netdev);
|
||||
void ngbe_do_reset(struct net_device *netdev, bool reinit);
|
||||
|
||||
#endif /* _NGBE_TYPE_H_ */
|
||||
|
||||
@@ -610,11 +610,11 @@ static void txgbe_reinit_locked(struct wx *wx)
|
||||
mutex_unlock(&wx->reset_lock);
|
||||
}
|
||||
|
||||
void txgbe_do_reset(struct net_device *netdev)
|
||||
void txgbe_do_reset(struct net_device *netdev, bool reinit)
|
||||
{
|
||||
struct wx *wx = netdev_priv(netdev);
|
||||
|
||||
if (netif_running(netdev))
|
||||
if (netif_running(netdev) && reinit)
|
||||
txgbe_reinit_locked(wx);
|
||||
else
|
||||
txgbe_reset(wx);
|
||||
|
||||
@@ -313,7 +313,7 @@ extern char txgbe_driver_name[];
|
||||
void txgbe_down(struct wx *wx);
|
||||
void txgbe_up(struct wx *wx);
|
||||
int txgbe_setup_tc(struct net_device *dev, u8 tc);
|
||||
void txgbe_do_reset(struct net_device *netdev);
|
||||
void txgbe_do_reset(struct net_device *netdev, bool reinit);
|
||||
|
||||
#define DECLARE_PHY_INTERFACE_MASK_ZERO(name) \
|
||||
unsigned long name[PHY_INTERFACE_MODE_MAX] = { 0, }
|
||||
|
||||
Reference in New Issue
Block a user