mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-01-18 12:46:11 +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;
|
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
|
#ifdef CONFIG_SFC_SRIOV
|
||||||
static int efx_ef10_get_vf_index(struct efx_nic *efx)
|
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)
|
if (rc)
|
||||||
goto fail4;
|
goto fail4;
|
||||||
|
|
||||||
rc = efx_ef10_get_pf_index(efx);
|
rc = efx_get_pf_index(efx, &nic_data->pf_index);
|
||||||
if (rc)
|
if (rc)
|
||||||
goto fail5;
|
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);
|
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)
|
static int efx_set_mac_address(struct net_device *net_dev, void *data)
|
||||||
{
|
{
|
||||||
struct efx_nic *efx = netdev_priv(net_dev);
|
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");
|
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
|
* 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_mac_reconfigure(struct efx_nic *efx);
|
||||||
void efx_link_status_changed(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
|
#endif
|
||||||
|
@ -370,3 +370,20 @@ int efx_mcdi_window_mode_to_stride(struct efx_nic *efx, u8 vi_window_mode)
|
|||||||
efx->vi_stride);
|
efx->vi_stride);
|
||||||
return 0;
|
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_remove(struct efx_rx_queue *rx_queue);
|
||||||
void efx_mcdi_rx_fini(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_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
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user