Skip to content

Commit

Permalink
net: hns3: add support to query tqps number
Browse files Browse the repository at this point in the history
This patch adds the support to query tqps number for PF driver
by using ehtool -l command.

Signed-off-by: Peng Li <lipeng321@huawei.com>
Signed-off-by: Mingguang Qu <qumingguang@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Peng Li authored and David S. Miller committed Dec 27, 2017
1 parent 214bb1c commit 482d2e9
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 0 deletions.
2 changes: 2 additions & 0 deletions drivers/net/ethernet/hisilicon/hns3/hnae3.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
10 changes: 10 additions & 0 deletions drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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)
Expand Down
21 changes: 21 additions & 0 deletions drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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 = {
Expand Down

0 comments on commit 482d2e9

Please sign in to comment.