diff options
-rw-r--r-- | drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c | 33 | ||||
-rw-r--r-- | drivers/net/ethernet/hisilicon/hns/hns_dsaf_reg.h | 1 | ||||
-rw-r--r-- | drivers/net/ethernet/hisilicon/hns/hns_enet.c | 17 | ||||
-rw-r--r-- | drivers/net/ethernet/hisilicon/hns/hns_enet.h | 3 |
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 | **/ | ||
39 | static 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 | |||
51 | static struct dsaf_device *hns_ae_get_dsaf_dev(struct hnae_ae_dev *dev) | 32 | static 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) | |||
110 | struct hnae_handle *hns_ae_get_handle(struct hnae_ae_dev *dev, | 91 | struct 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; |
176 | vf_id_err: | 155 | vf_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 | |||
21 | enum hns_nic_state { | 24 | enum hns_nic_state { |
22 | NIC_STATE_TESTING = 0, | 25 | NIC_STATE_TESTING = 0, |
23 | NIC_STATE_RESETTING, | 26 | NIC_STATE_RESETTING, |