Merge branch '100GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue
Tony Nguyen says: ==================== Intel Wired LAN Driver Updates 2021-06-09 This series contains updates to ice driver only. Maciej informs the user when XDP is not supported due to the driver being in the 'safe mode' state. He also adds a parameter to Tx queue configuration to resolve an issue in configuring XDP queues as it cannot rely on using the number Tx or Rx queues. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
6cde05ab93
@ -1717,12 +1717,13 @@ setup_rings:
|
||||
* ice_vsi_cfg_txqs - Configure the VSI for Tx
|
||||
* @vsi: the VSI being configured
|
||||
* @rings: Tx ring array to be configured
|
||||
* @count: number of Tx ring array elements
|
||||
*
|
||||
* Return 0 on success and a negative value on error
|
||||
* Configure the Tx VSI for operation.
|
||||
*/
|
||||
static int
|
||||
ice_vsi_cfg_txqs(struct ice_vsi *vsi, struct ice_ring **rings)
|
||||
ice_vsi_cfg_txqs(struct ice_vsi *vsi, struct ice_ring **rings, u16 count)
|
||||
{
|
||||
struct ice_aqc_add_tx_qgrp *qg_buf;
|
||||
u16 q_idx = 0;
|
||||
@ -1734,7 +1735,7 @@ ice_vsi_cfg_txqs(struct ice_vsi *vsi, struct ice_ring **rings)
|
||||
|
||||
qg_buf->num_txqs = 1;
|
||||
|
||||
for (q_idx = 0; q_idx < vsi->num_txq; q_idx++) {
|
||||
for (q_idx = 0; q_idx < count; q_idx++) {
|
||||
err = ice_vsi_cfg_txq(vsi, rings[q_idx], qg_buf);
|
||||
if (err)
|
||||
goto err_cfg_txqs;
|
||||
@ -1754,7 +1755,7 @@ err_cfg_txqs:
|
||||
*/
|
||||
int ice_vsi_cfg_lan_txqs(struct ice_vsi *vsi)
|
||||
{
|
||||
return ice_vsi_cfg_txqs(vsi, vsi->tx_rings);
|
||||
return ice_vsi_cfg_txqs(vsi, vsi->tx_rings, vsi->num_txq);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1769,7 +1770,7 @@ int ice_vsi_cfg_xdp_txqs(struct ice_vsi *vsi)
|
||||
int ret;
|
||||
int i;
|
||||
|
||||
ret = ice_vsi_cfg_txqs(vsi, vsi->xdp_rings);
|
||||
ret = ice_vsi_cfg_txqs(vsi, vsi->xdp_rings, vsi->num_xdp_txq);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@ -2009,17 +2010,18 @@ int ice_vsi_stop_all_rx_rings(struct ice_vsi *vsi)
|
||||
* @rst_src: reset source
|
||||
* @rel_vmvf_num: Relative ID of VF/VM
|
||||
* @rings: Tx ring array to be stopped
|
||||
* @count: number of Tx ring array elements
|
||||
*/
|
||||
static int
|
||||
ice_vsi_stop_tx_rings(struct ice_vsi *vsi, enum ice_disq_rst_src rst_src,
|
||||
u16 rel_vmvf_num, struct ice_ring **rings)
|
||||
u16 rel_vmvf_num, struct ice_ring **rings, u16 count)
|
||||
{
|
||||
u16 q_idx;
|
||||
|
||||
if (vsi->num_txq > ICE_LAN_TXQ_MAX_QDIS)
|
||||
return -EINVAL;
|
||||
|
||||
for (q_idx = 0; q_idx < vsi->num_txq; q_idx++) {
|
||||
for (q_idx = 0; q_idx < count; q_idx++) {
|
||||
struct ice_txq_meta txq_meta = { };
|
||||
int status;
|
||||
|
||||
@ -2047,7 +2049,7 @@ int
|
||||
ice_vsi_stop_lan_tx_rings(struct ice_vsi *vsi, enum ice_disq_rst_src rst_src,
|
||||
u16 rel_vmvf_num)
|
||||
{
|
||||
return ice_vsi_stop_tx_rings(vsi, rst_src, rel_vmvf_num, vsi->tx_rings);
|
||||
return ice_vsi_stop_tx_rings(vsi, rst_src, rel_vmvf_num, vsi->tx_rings, vsi->num_txq);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -2056,7 +2058,7 @@ ice_vsi_stop_lan_tx_rings(struct ice_vsi *vsi, enum ice_disq_rst_src rst_src,
|
||||
*/
|
||||
int ice_vsi_stop_xdp_tx_rings(struct ice_vsi *vsi)
|
||||
{
|
||||
return ice_vsi_stop_tx_rings(vsi, ICE_NO_RESET, 0, vsi->xdp_rings);
|
||||
return ice_vsi_stop_tx_rings(vsi, ICE_NO_RESET, 0, vsi->xdp_rings, vsi->num_xdp_txq);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -2555,6 +2555,20 @@ ice_xdp_setup_prog(struct ice_vsi *vsi, struct bpf_prog *prog,
|
||||
return (ret || xdp_ring_err) ? -ENOMEM : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* ice_xdp_safe_mode - XDP handler for safe mode
|
||||
* @dev: netdevice
|
||||
* @xdp: XDP command
|
||||
*/
|
||||
static int ice_xdp_safe_mode(struct net_device __always_unused *dev,
|
||||
struct netdev_bpf *xdp)
|
||||
{
|
||||
NL_SET_ERR_MSG_MOD(xdp->extack,
|
||||
"Please provide working DDP firmware package in order to use XDP\n"
|
||||
"Refer to Documentation/networking/device_drivers/ethernet/intel/ice.rst");
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
/**
|
||||
* ice_xdp - implements XDP handler
|
||||
* @dev: netdevice
|
||||
@ -6937,6 +6951,7 @@ static const struct net_device_ops ice_netdev_safe_mode_ops = {
|
||||
.ndo_change_mtu = ice_change_mtu,
|
||||
.ndo_get_stats64 = ice_get_stats64,
|
||||
.ndo_tx_timeout = ice_tx_timeout,
|
||||
.ndo_bpf = ice_xdp_safe_mode,
|
||||
};
|
||||
|
||||
static const struct net_device_ops ice_netdev_ops = {
|
||||
|
Loading…
x
Reference in New Issue
Block a user