mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-01-19 03:36:09 +07:00
sfc: move yet more functions
Functions are not related. Signed-off-by: Alexandru-Mihai Maftei <amaftei@solarflare.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
960f16275b
commit
314823108c
@ -189,24 +189,6 @@ static bool efx_ef10_is_vf(struct efx_nic *efx)
|
||||
return efx->type->is_vf;
|
||||
}
|
||||
|
||||
static int efx_ef10_get_pf_index(struct efx_nic *efx)
|
||||
{
|
||||
MCDI_DECLARE_BUF(outbuf, MC_CMD_GET_FUNCTION_INFO_OUT_LEN);
|
||||
struct efx_ef10_nic_data *nic_data = efx->nic_data;
|
||||
size_t outlen;
|
||||
int rc;
|
||||
|
||||
rc = efx_mcdi_rpc(efx, MC_CMD_GET_FUNCTION_INFO, NULL, 0, outbuf,
|
||||
sizeof(outbuf), &outlen);
|
||||
if (rc)
|
||||
return rc;
|
||||
if (outlen < sizeof(outbuf))
|
||||
return -EIO;
|
||||
|
||||
nic_data->pf_index = MCDI_DWORD(outbuf, GET_FUNCTION_INFO_OUT_PF);
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SFC_SRIOV
|
||||
static int efx_ef10_get_vf_index(struct efx_nic *efx)
|
||||
{
|
||||
@ -714,7 +696,7 @@ static int efx_ef10_probe(struct efx_nic *efx)
|
||||
if (rc)
|
||||
goto fail4;
|
||||
|
||||
rc = efx_ef10_get_pf_index(efx);
|
||||
rc = efx_get_pf_index(efx, &nic_data->pf_index);
|
||||
if (rc)
|
||||
goto fail5;
|
||||
|
||||
|
@ -695,51 +695,6 @@ static void efx_watchdog(struct net_device *net_dev, unsigned int txqueue)
|
||||
efx_schedule_reset(efx, RESET_TYPE_TX_WATCHDOG);
|
||||
}
|
||||
|
||||
static unsigned int efx_xdp_max_mtu(struct efx_nic *efx)
|
||||
{
|
||||
/* The maximum MTU that we can fit in a single page, allowing for
|
||||
* framing, overhead and XDP headroom.
|
||||
*/
|
||||
int overhead = EFX_MAX_FRAME_LEN(0) + sizeof(struct efx_rx_page_state) +
|
||||
efx->rx_prefix_size + efx->type->rx_buffer_padding +
|
||||
efx->rx_ip_align + XDP_PACKET_HEADROOM;
|
||||
|
||||
return PAGE_SIZE - overhead;
|
||||
}
|
||||
|
||||
/* Context: process, rtnl_lock() held. */
|
||||
static int efx_change_mtu(struct net_device *net_dev, int new_mtu)
|
||||
{
|
||||
struct efx_nic *efx = netdev_priv(net_dev);
|
||||
int rc;
|
||||
|
||||
rc = efx_check_disabled(efx);
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
if (rtnl_dereference(efx->xdp_prog) &&
|
||||
new_mtu > efx_xdp_max_mtu(efx)) {
|
||||
netif_err(efx, drv, efx->net_dev,
|
||||
"Requested MTU of %d too big for XDP (max: %d)\n",
|
||||
new_mtu, efx_xdp_max_mtu(efx));
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
netif_dbg(efx, drv, efx->net_dev, "changing MTU to %d\n", new_mtu);
|
||||
|
||||
efx_device_detach_sync(efx);
|
||||
efx_stop_all(efx);
|
||||
|
||||
mutex_lock(&efx->mac_lock);
|
||||
net_dev->mtu = new_mtu;
|
||||
efx_mac_reconfigure(efx);
|
||||
mutex_unlock(&efx->mac_lock);
|
||||
|
||||
efx_start_all(efx);
|
||||
efx_device_attach_if_not_resetting(efx);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int efx_set_mac_address(struct net_device *net_dev, void *data)
|
||||
{
|
||||
struct efx_nic *efx = netdev_priv(net_dev);
|
||||
|
@ -197,6 +197,51 @@ void efx_link_status_changed(struct efx_nic *efx)
|
||||
netif_info(efx, link, efx->net_dev, "link down\n");
|
||||
}
|
||||
|
||||
unsigned int efx_xdp_max_mtu(struct efx_nic *efx)
|
||||
{
|
||||
/* The maximum MTU that we can fit in a single page, allowing for
|
||||
* framing, overhead and XDP headroom.
|
||||
*/
|
||||
int overhead = EFX_MAX_FRAME_LEN(0) + sizeof(struct efx_rx_page_state) +
|
||||
efx->rx_prefix_size + efx->type->rx_buffer_padding +
|
||||
efx->rx_ip_align + XDP_PACKET_HEADROOM;
|
||||
|
||||
return PAGE_SIZE - overhead;
|
||||
}
|
||||
|
||||
/* Context: process, rtnl_lock() held. */
|
||||
int efx_change_mtu(struct net_device *net_dev, int new_mtu)
|
||||
{
|
||||
struct efx_nic *efx = netdev_priv(net_dev);
|
||||
int rc;
|
||||
|
||||
rc = efx_check_disabled(efx);
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
if (rtnl_dereference(efx->xdp_prog) &&
|
||||
new_mtu > efx_xdp_max_mtu(efx)) {
|
||||
netif_err(efx, drv, efx->net_dev,
|
||||
"Requested MTU of %d too big for XDP (max: %d)\n",
|
||||
new_mtu, efx_xdp_max_mtu(efx));
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
netif_dbg(efx, drv, efx->net_dev, "changing MTU to %d\n", new_mtu);
|
||||
|
||||
efx_device_detach_sync(efx);
|
||||
efx_stop_all(efx);
|
||||
|
||||
mutex_lock(&efx->mac_lock);
|
||||
net_dev->mtu = new_mtu;
|
||||
efx_mac_reconfigure(efx);
|
||||
mutex_unlock(&efx->mac_lock);
|
||||
|
||||
efx_start_all(efx);
|
||||
efx_device_attach_if_not_resetting(efx);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Hardware monitor
|
||||
|
@ -67,5 +67,7 @@ static inline void efx_fini_mcdi_logging(struct efx_nic *efx) {}
|
||||
|
||||
void efx_mac_reconfigure(struct efx_nic *efx);
|
||||
void efx_link_status_changed(struct efx_nic *efx);
|
||||
unsigned int efx_xdp_max_mtu(struct efx_nic *efx);
|
||||
int efx_change_mtu(struct net_device *net_dev, int new_mtu);
|
||||
|
||||
#endif
|
||||
|
@ -370,3 +370,20 @@ int efx_mcdi_window_mode_to_stride(struct efx_nic *efx, u8 vi_window_mode)
|
||||
efx->vi_stride);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int efx_get_pf_index(struct efx_nic *efx, unsigned int *pf_index)
|
||||
{
|
||||
MCDI_DECLARE_BUF(outbuf, MC_CMD_GET_FUNCTION_INFO_OUT_LEN);
|
||||
size_t outlen;
|
||||
int rc;
|
||||
|
||||
rc = efx_mcdi_rpc(efx, MC_CMD_GET_FUNCTION_INFO, NULL, 0, outbuf,
|
||||
sizeof(outbuf), &outlen);
|
||||
if (rc)
|
||||
return rc;
|
||||
if (outlen < sizeof(outbuf))
|
||||
return -EIO;
|
||||
|
||||
*pf_index = MCDI_DWORD(outbuf, GET_FUNCTION_INFO_OUT_PF);
|
||||
return 0;
|
||||
}
|
||||
|
@ -27,5 +27,6 @@ void efx_mcdi_rx_init(struct efx_rx_queue *rx_queue);
|
||||
void efx_mcdi_rx_remove(struct efx_rx_queue *rx_queue);
|
||||
void efx_mcdi_rx_fini(struct efx_rx_queue *rx_queue);
|
||||
int efx_mcdi_window_mode_to_stride(struct efx_nic *efx, u8 vi_window_mode);
|
||||
int efx_get_pf_index(struct efx_nic *efx, unsigned int *pf_index);
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user