net: ena: take into account xdp_features setting tx/rx queues
ena nic allows xdp just if enough hw queues are available for XDP.
Take into account queues configuration setting xdp_features.
Fixes: 66c0e13ad2
("drivers: net: turn on XDP features")
Reviewed-by: Shay Agroskin <shayagr@amazon.com>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
3c249fe4de
commit
7aa6dc351b
|
@ -850,11 +850,20 @@ static int ena_set_channels(struct net_device *netdev,
|
|||
struct ena_adapter *adapter = netdev_priv(netdev);
|
||||
u32 count = channels->combined_count;
|
||||
/* The check for max value is already done in ethtool */
|
||||
if (count < ENA_MIN_NUM_IO_QUEUES ||
|
||||
(ena_xdp_present(adapter) &&
|
||||
!ena_xdp_legal_queue_count(adapter, count)))
|
||||
if (count < ENA_MIN_NUM_IO_QUEUES)
|
||||
return -EINVAL;
|
||||
|
||||
if (!ena_xdp_legal_queue_count(adapter, count)) {
|
||||
if (ena_xdp_present(adapter))
|
||||
return -EINVAL;
|
||||
|
||||
xdp_clear_features_flag(netdev);
|
||||
} else {
|
||||
xdp_set_features_flag(netdev,
|
||||
NETDEV_XDP_ACT_BASIC |
|
||||
NETDEV_XDP_ACT_REDIRECT);
|
||||
}
|
||||
|
||||
return ena_update_queue_count(adapter, count);
|
||||
}
|
||||
|
||||
|
|
|
@ -4105,8 +4105,6 @@ static void ena_set_conf_feat_params(struct ena_adapter *adapter,
|
|||
/* Set offload features */
|
||||
ena_set_dev_offloads(feat, netdev);
|
||||
|
||||
netdev->xdp_features = NETDEV_XDP_ACT_BASIC | NETDEV_XDP_ACT_REDIRECT;
|
||||
|
||||
adapter->max_mtu = feat->dev_attr.max_mtu;
|
||||
netdev->max_mtu = adapter->max_mtu;
|
||||
netdev->min_mtu = ENA_MIN_MTU;
|
||||
|
@ -4393,6 +4391,10 @@ static int ena_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|||
|
||||
ena_config_debug_area(adapter);
|
||||
|
||||
if (ena_xdp_legal_queue_count(adapter, adapter->num_io_queues))
|
||||
netdev->xdp_features = NETDEV_XDP_ACT_BASIC |
|
||||
NETDEV_XDP_ACT_REDIRECT;
|
||||
|
||||
memcpy(adapter->netdev->perm_addr, adapter->mac_addr, netdev->addr_len);
|
||||
|
||||
netif_carrier_off(netdev);
|
||||
|
|
Loading…
Reference in New Issue