aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/ethernet')
-rw-r--r--drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c33
-rw-r--r--drivers/net/ethernet/hisilicon/hns/hns_dsaf_reg.h1
-rw-r--r--drivers/net/ethernet/hisilicon/hns/hns_enet.c17
-rw-r--r--drivers/net/ethernet/hisilicon/hns/hns_enet.h3
4 files changed, 22 insertions, 32 deletions
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c b/drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c
index 1e8bf222ef3a..1c86336d6475 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c
+++ b/drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c
@@ -29,25 +29,6 @@ static struct hns_mac_cb *hns_get_mac_cb(struct hnae_handle *handle)
29 return vf_cb->mac_cb; 29 return vf_cb->mac_cb;
30} 30}
31 31
32/**
33 * hns_ae_map_eport_to_dport - translate enet port id to dsaf port id
34 * @port_id: enet port id
35 *: debug port 0-1, service port 2 -7 (dsaf mode only 2)
36 * return: dsaf port id
37 *: service ports 0 - 5, debug port 6-7
38 **/
39static int hns_ae_map_eport_to_dport(u32 port_id)
40{
41 int port_index;
42
43 if (port_id < DSAF_DEBUG_NW_NUM)
44 port_index = port_id + DSAF_SERVICE_PORT_NUM_PER_DSAF;
45 else
46 port_index = port_id - DSAF_DEBUG_NW_NUM;
47
48 return port_index;
49}
50
51static struct dsaf_device *hns_ae_get_dsaf_dev(struct hnae_ae_dev *dev) 32static struct dsaf_device *hns_ae_get_dsaf_dev(struct hnae_ae_dev *dev)
52{ 33{
53 return container_of(dev, struct dsaf_device, ae_dev); 34 return container_of(dev, struct dsaf_device, ae_dev);
@@ -110,7 +91,6 @@ static struct ring_pair_cb *hns_ae_get_ring_pair(struct hnae_queue *q)
110struct hnae_handle *hns_ae_get_handle(struct hnae_ae_dev *dev, 91struct hnae_handle *hns_ae_get_handle(struct hnae_ae_dev *dev,
111 u32 port_id) 92 u32 port_id)
112{ 93{
113 int port_idx;
114 int vfnum_per_port; 94 int vfnum_per_port;
115 int qnum_per_vf; 95 int qnum_per_vf;
116 int i; 96 int i;
@@ -120,11 +100,10 @@ struct hnae_handle *hns_ae_get_handle(struct hnae_ae_dev *dev,
120 struct hnae_vf_cb *vf_cb; 100 struct hnae_vf_cb *vf_cb;
121 101
122 dsaf_dev = hns_ae_get_dsaf_dev(dev); 102 dsaf_dev = hns_ae_get_dsaf_dev(dev);
123 port_idx = hns_ae_map_eport_to_dport(port_id);
124 103
125 ring_pair_cb = hns_ae_get_base_ring_pair(dsaf_dev, port_idx); 104 ring_pair_cb = hns_ae_get_base_ring_pair(dsaf_dev, port_id);
126 vfnum_per_port = hns_ae_get_vf_num_per_port(dsaf_dev, port_idx); 105 vfnum_per_port = hns_ae_get_vf_num_per_port(dsaf_dev, port_id);
127 qnum_per_vf = hns_ae_get_q_num_per_vf(dsaf_dev, port_idx); 106 qnum_per_vf = hns_ae_get_q_num_per_vf(dsaf_dev, port_id);
128 107
129 vf_cb = kzalloc(sizeof(*vf_cb) + 108 vf_cb = kzalloc(sizeof(*vf_cb) +
130 qnum_per_vf * sizeof(struct hnae_queue *), GFP_KERNEL); 109 qnum_per_vf * sizeof(struct hnae_queue *), GFP_KERNEL);
@@ -163,14 +142,14 @@ struct hnae_handle *hns_ae_get_handle(struct hnae_ae_dev *dev,
163 } 142 }
164 143
165 vf_cb->dsaf_dev = dsaf_dev; 144 vf_cb->dsaf_dev = dsaf_dev;
166 vf_cb->port_index = port_idx; 145 vf_cb->port_index = port_id;
167 vf_cb->mac_cb = &dsaf_dev->mac_cb[port_idx]; 146 vf_cb->mac_cb = &dsaf_dev->mac_cb[port_id];
168 147
169 ae_handle->phy_if = vf_cb->mac_cb->phy_if; 148 ae_handle->phy_if = vf_cb->mac_cb->phy_if;
170 ae_handle->phy_node = vf_cb->mac_cb->phy_node; 149 ae_handle->phy_node = vf_cb->mac_cb->phy_node;
171 ae_handle->if_support = vf_cb->mac_cb->if_support; 150 ae_handle->if_support = vf_cb->mac_cb->if_support;
172 ae_handle->port_type = vf_cb->mac_cb->mac_type; 151 ae_handle->port_type = vf_cb->mac_cb->mac_type;
173 ae_handle->dport_id = port_idx; 152 ae_handle->dport_id = port_id;
174 153
175 return ae_handle; 154 return ae_handle;
176vf_id_err: 155vf_id_err:
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_reg.h b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_reg.h
index 87826087f08b..ed0043a4dbe1 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_reg.h
+++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_reg.h
@@ -24,7 +24,6 @@
24#define DSAF_SERVICE_NW_NUM 6 24#define DSAF_SERVICE_NW_NUM 6
25#define DSAF_COMM_CHN DSAF_SERVICE_NW_NUM 25#define DSAF_COMM_CHN DSAF_SERVICE_NW_NUM
26#define DSAF_GE_NUM ((DSAF_SERVICE_NW_NUM) + (DSAF_DEBUG_NW_NUM)) 26#define DSAF_GE_NUM ((DSAF_SERVICE_NW_NUM) + (DSAF_DEBUG_NW_NUM))
27#define DSAF_PORT_NUM ((DSAF_SERVICE_NW_NUM) + (DSAF_DEBUG_NW_NUM))
28#define DSAF_XGE_NUM DSAF_SERVICE_NW_NUM 27#define DSAF_XGE_NUM DSAF_SERVICE_NW_NUM
29#define DSAF_PORT_TYPE_NUM 3 28#define DSAF_PORT_TYPE_NUM 3
30#define DSAF_NODE_NUM 18 29#define DSAF_NODE_NUM 18
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_enet.c b/drivers/net/ethernet/hisilicon/hns/hns_enet.c
index 687204b780b0..e47aff250b15 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_enet.c
+++ b/drivers/net/ethernet/hisilicon/hns/hns_enet.c
@@ -1873,6 +1873,7 @@ static int hns_nic_dev_probe(struct platform_device *pdev)
1873 struct net_device *ndev; 1873 struct net_device *ndev;
1874 struct hns_nic_priv *priv; 1874 struct hns_nic_priv *priv;
1875 struct device_node *node = dev->of_node; 1875 struct device_node *node = dev->of_node;
1876 u32 port_id;
1876 int ret; 1877 int ret;
1877 1878
1878 ndev = alloc_etherdev_mq(sizeof(struct hns_nic_priv), NIC_MAX_Q_PER_VF); 1879 ndev = alloc_etherdev_mq(sizeof(struct hns_nic_priv), NIC_MAX_Q_PER_VF);
@@ -1896,10 +1897,18 @@ static int hns_nic_dev_probe(struct platform_device *pdev)
1896 dev_err(dev, "not find ae-handle\n"); 1897 dev_err(dev, "not find ae-handle\n");
1897 goto out_read_prop_fail; 1898 goto out_read_prop_fail;
1898 } 1899 }
1899 1900 /* try to find port-idx-in-ae first */
1900 ret = of_property_read_u32(node, "port-id", &priv->port_id); 1901 ret = of_property_read_u32(node, "port-idx-in-ae", &port_id);
1901 if (ret) 1902 if (ret) {
1902 goto out_read_prop_fail; 1903 /* only for old code compatible */
1904 ret = of_property_read_u32(node, "port-id", &port_id);
1905 if (ret)
1906 goto out_read_prop_fail;
1907 /* for old dts, we need to caculate the port offset */
1908 port_id = port_id < HNS_SRV_OFFSET ? port_id + HNS_DEBUG_OFFSET
1909 : port_id - HNS_SRV_OFFSET;
1910 }
1911 priv->port_id = port_id;
1903 1912
1904 hns_init_mac_addr(ndev); 1913 hns_init_mac_addr(ndev);
1905 1914
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_enet.h b/drivers/net/ethernet/hisilicon/hns/hns_enet.h
index c68ab3d34fc2..337efa582bac 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_enet.h
+++ b/drivers/net/ethernet/hisilicon/hns/hns_enet.h
@@ -18,6 +18,9 @@
18 18
19#include "hnae.h" 19#include "hnae.h"
20 20
21#define HNS_DEBUG_OFFSET 6
22#define HNS_SRV_OFFSET 2
23
21enum hns_nic_state { 24enum hns_nic_state {
22 NIC_STATE_TESTING = 0, 25 NIC_STATE_TESTING = 0,
23 NIC_STATE_RESETTING, 26 NIC_STATE_RESETTING,