Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 482d2e9c authored by Peng Li's avatar Peng Li Committed by David S. Miller
Browse files

net: hns3: add support to query tqps number



This patch adds the support to query tqps number for PF driver
by using ehtool -l command.

Signed-off-by: default avatarPeng Li <lipeng321@huawei.com>
Signed-off-by: default avatarMingguang Qu <qumingguang@huawei.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 214bb1c7
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -386,6 +386,8 @@ struct hnae3_ae_ops {
				  u16 vlan, u8 qos, __be16 proto);
	void (*reset_event)(struct hnae3_handle *handle,
			    enum hnae3_reset_type reset);
	void (*get_channels)(struct hnae3_handle *handle,
			     struct ethtool_channels *ch);
};

struct hnae3_dcb_ops {
+10 −0
Original line number Diff line number Diff line
@@ -849,6 +849,15 @@ static int hns3_nway_reset(struct net_device *netdev)
	return genphy_restart_aneg(phy);
}

void hns3_get_channels(struct net_device *netdev,
		       struct ethtool_channels *ch)
{
	struct hnae3_handle *h = hns3_get_handle(netdev);

	if (h->ae_algo->ops->get_channels)
		h->ae_algo->ops->get_channels(h, ch);
}

static const struct ethtool_ops hns3vf_ethtool_ops = {
	.get_drvinfo = hns3_get_drvinfo,
	.get_ringparam = hns3_get_ringparam,
@@ -883,6 +892,7 @@ static const struct ethtool_ops hns3_ethtool_ops = {
	.get_link_ksettings = hns3_get_link_ksettings,
	.set_link_ksettings = hns3_set_link_ksettings,
	.nway_reset = hns3_nway_reset,
	.get_channels = hns3_get_channels,
};

void hns3_ethtool_set_ops(struct net_device *netdev)
+21 −0
Original line number Diff line number Diff line
@@ -5002,6 +5002,26 @@ static void hclge_uninit_ae_dev(struct hnae3_ae_dev *ae_dev)
	ae_dev->priv = NULL;
}

static u32 hclge_get_max_channels(struct hnae3_handle *handle)
{
	struct hnae3_knic_private_info *kinfo = &handle->kinfo;
	struct hclge_vport *vport = hclge_get_vport(handle);
	struct hclge_dev *hdev = vport->back;

	return min_t(u32, hdev->rss_size_max * kinfo->num_tc, hdev->num_tqps);
}

static void hclge_get_channels(struct hnae3_handle *handle,
			       struct ethtool_channels *ch)
{
	struct hclge_vport *vport = hclge_get_vport(handle);

	ch->max_combined = hclge_get_max_channels(handle);
	ch->other_count = 1;
	ch->max_other = 1;
	ch->combined_count = vport->alloc_tqps;
}

static const struct hnae3_ae_ops hclge_ops = {
	.init_ae_dev = hclge_init_ae_dev,
	.uninit_ae_dev = hclge_uninit_ae_dev,
@@ -5046,6 +5066,7 @@ static const struct hnae3_ae_ops hclge_ops = {
	.set_vlan_filter = hclge_set_port_vlan_filter,
	.set_vf_vlan_filter = hclge_set_vf_vlan_filter,
	.reset_event = hclge_reset_event,
	.get_channels = hclge_get_channels,
};

static struct hnae3_ae_algo ae_algo = {