diff mbox

[net,3/6] net: hns: fixed portid bug in sending manage pkt

Message ID 1457053798-93513-4-git-send-email-huangdaode@hisilicon.com (mailing list archive)
State New, archived
Headers show

Commit Message

huangdaode March 4, 2016, 1:09 a.m. UTC
In V2 chip, when sending mamagement packets, the driver should
config the port id to BD descs.

Signed-off-by: Daode Huang <huangdaode@hisilicon.com>
Signed-off-by: Lisheng <lisheng011@huawei.com>
---
 drivers/net/ethernet/hisilicon/hns/hnae.h         | 3 +++
 drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c | 1 +
 drivers/net/ethernet/hisilicon/hns/hns_enet.c     | 4 ++++
 3 files changed, 8 insertions(+)

Comments

Sergei Shtylyov March 4, 2016, 1:37 p.m. UTC | #1
Hello.

On 3/4/2016 4:09 AM, Daode Huang wrote:

> In V2 chip, when sending mamagement packets, the driver should
> config the port id to BD descs.
>
> Signed-off-by: Daode Huang <huangdaode@hisilicon.com>
> Signed-off-by: Lisheng <lisheng011@huawei.com>
> ---
>   drivers/net/ethernet/hisilicon/hns/hnae.h         | 3 +++
>   drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c | 1 +
>   drivers/net/ethernet/hisilicon/hns/hns_enet.c     | 4 ++++
>   3 files changed, 8 insertions(+)
>
> diff --git a/drivers/net/ethernet/hisilicon/hns/hnae.h b/drivers/net/ethernet/hisilicon/hns/hnae.h
> index 1cbcb9f..11a3f97 100644
> --- a/drivers/net/ethernet/hisilicon/hns/hnae.h
> +++ b/drivers/net/ethernet/hisilicon/hns/hnae.h
[...]
> @@ -516,6 +518,7 @@ struct hnae_handle {
>   	int q_num;
>   	int vf_id;
>   	u32 eport_id;
> +	u32 dport_id;	/*v2 tx bd should fill the dport_id*/

    Please add spaces after /* and before */ (like it's done in other places 
in this driver).

[...]
> diff --git a/drivers/net/ethernet/hisilicon/hns/hns_enet.c b/drivers/net/ethernet/hisilicon/hns/hns_enet.c
> index 6250a42..b45dcc2 100644
> --- a/drivers/net/ethernet/hisilicon/hns/hns_enet.c
> +++ b/drivers/net/ethernet/hisilicon/hns/hns_enet.c
> @@ -69,6 +69,10 @@ static void fill_v2_desc(struct hnae_ring *ring, void *priv,
>   	hnae_set_bit(rrcfv, HNSV2_TXD_VLD_B, 1);
>   	hnae_set_field(bn_pid, HNSV2_TXD_BUFNUM_M, 0, buf_num - 1);
>
> +	/*fill port_id in the tx bd for sending management pkts*/

    Likewise.

> +	hnae_set_field(bn_pid, HNSV2_TXD_PORTID_M,
> +		       HNSV2_TXD_PORTID_S, ring->q->handle->dport_id);
> +
>   	if (type == DESC_TYPE_SKB) {
>   		skb = (struct sk_buff *)priv;
>

MBR, Sergei
huangdaode March 11, 2016, 1:53 a.m. UTC | #2
On 2016/3/4 21:37, Sergei Shtylyov wrote:
> Hello.
>
> On 3/4/2016 4:09 AM, Daode Huang wrote:
>
>> In V2 chip, when sending mamagement packets, the driver should
>> config the port id to BD descs.
>>
>> Signed-off-by: Daode Huang <huangdaode@hisilicon.com>
>> Signed-off-by: Lisheng <lisheng011@huawei.com>
>> ---
>>   drivers/net/ethernet/hisilicon/hns/hnae.h         | 3 +++
>>   drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c | 1 +
>>   drivers/net/ethernet/hisilicon/hns/hns_enet.c     | 4 ++++
>>   3 files changed, 8 insertions(+)
>>
>> diff --git a/drivers/net/ethernet/hisilicon/hns/hnae.h 
>> b/drivers/net/ethernet/hisilicon/hns/hnae.h
>> index 1cbcb9f..11a3f97 100644
>> --- a/drivers/net/ethernet/hisilicon/hns/hnae.h
>> +++ b/drivers/net/ethernet/hisilicon/hns/hnae.h
> [...]
>> @@ -516,6 +518,7 @@ struct hnae_handle {
>>       int q_num;
>>       int vf_id;
>>       u32 eport_id;
>> +    u32 dport_id;    /*v2 tx bd should fill the dport_id*/
>
>    Please add spaces after /* and before */ (like it's done in other 
> places in this driver).
>

Hi MBR, Sergei,
Thanks for you comments,
will change it in next version.
Daode.

> [...]
>> diff --git a/drivers/net/ethernet/hisilicon/hns/hns_enet.c 
>> b/drivers/net/ethernet/hisilicon/hns/hns_enet.c
>> index 6250a42..b45dcc2 100644
>> --- a/drivers/net/ethernet/hisilicon/hns/hns_enet.c
>> +++ b/drivers/net/ethernet/hisilicon/hns/hns_enet.c
>> @@ -69,6 +69,10 @@ static void fill_v2_desc(struct hnae_ring *ring, 
>> void *priv,
>>       hnae_set_bit(rrcfv, HNSV2_TXD_VLD_B, 1);
>>       hnae_set_field(bn_pid, HNSV2_TXD_BUFNUM_M, 0, buf_num - 1);
>>
>> +    /*fill port_id in the tx bd for sending management pkts*/
>
>    Likewise.
>
>> +    hnae_set_field(bn_pid, HNSV2_TXD_PORTID_M,
>> +               HNSV2_TXD_PORTID_S, ring->q->handle->dport_id);
>> +
>>       if (type == DESC_TYPE_SKB) {
>>           skb = (struct sk_buff *)priv;
>>
>
> MBR, Sergei
>
>
> .
>
Sergei Shtylyov March 11, 2016, 1:29 p.m. UTC | #3
Hello.

On 3/11/2016 4:53 AM, Daode Huang wrote:

>>> In V2 chip, when sending mamagement packets, the driver should
>>> config the port id to BD descs.
>>>
>>> Signed-off-by: Daode Huang <huangdaode@hisilicon.com>
>>> Signed-off-by: Lisheng <lisheng011@huawei.com>
>>> ---
>>>   drivers/net/ethernet/hisilicon/hns/hnae.h         | 3 +++
>>>   drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c | 1 +
>>>   drivers/net/ethernet/hisilicon/hns/hns_enet.c     | 4 ++++
>>>   3 files changed, 8 insertions(+)
>>>
>>> diff --git a/drivers/net/ethernet/hisilicon/hns/hnae.h
>>> b/drivers/net/ethernet/hisilicon/hns/hnae.h
>>> index 1cbcb9f..11a3f97 100644
>>> --- a/drivers/net/ethernet/hisilicon/hns/hnae.h
>>> +++ b/drivers/net/ethernet/hisilicon/hns/hnae.h
>> [...]
>>> @@ -516,6 +518,7 @@ struct hnae_handle {
>>>       int q_num;
>>>       int vf_id;
>>>       u32 eport_id;
>>> +    u32 dport_id;    /*v2 tx bd should fill the dport_id*/
>>
>>    Please add spaces after /* and before */ (like it's done in other places
>> in this driver).
>>
>
> Hi MBR, Sergei,

    Just in case: MBR stands for "my best regards", Sergei is my name. :-)

> Daode.

MBR, Sergei
huangdaode March 14, 2016, 12:45 a.m. UTC | #4
On 2016/3/11 21:29, Sergei Shtylyov wrote:
> Hello.
>
> On 3/11/2016 4:53 AM, Daode Huang wrote:
>
>>>> In V2 chip, when sending mamagement packets, the driver should
>>>> config the port id to BD descs.
>>>>
>>>> Signed-off-by: Daode Huang <huangdaode@hisilicon.com>
>>>> Signed-off-by: Lisheng <lisheng011@huawei.com>
>>>> ---
>>>>   drivers/net/ethernet/hisilicon/hns/hnae.h         | 3 +++
>>>>   drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c | 1 +
>>>>   drivers/net/ethernet/hisilicon/hns/hns_enet.c     | 4 ++++
>>>>   3 files changed, 8 insertions(+)
>>>>
>>>> diff --git a/drivers/net/ethernet/hisilicon/hns/hnae.h
>>>> b/drivers/net/ethernet/hisilicon/hns/hnae.h
>>>> index 1cbcb9f..11a3f97 100644
>>>> --- a/drivers/net/ethernet/hisilicon/hns/hnae.h
>>>> +++ b/drivers/net/ethernet/hisilicon/hns/hnae.h
>>> [...]
>>>> @@ -516,6 +518,7 @@ struct hnae_handle {
>>>>       int q_num;
>>>>       int vf_id;
>>>>       u32 eport_id;
>>>> +    u32 dport_id;    /*v2 tx bd should fill the dport_id*/
>>>
>>>    Please add spaces after /* and before */ (like it's done in other 
>>> places
>>> in this driver).
>>>
>>
>> Hi MBR, Sergei,
>
>    Just in case: MBR stands for "my best regards", Sergei is my name. :-)
hi Sergei,

So sorry for my misunderstanding.
thanks for your reminding.

Best Regards
Daode.

>
>> Daode.
>
> MBR, Sergei
>
>
> .
>
diff mbox

Patch

diff --git a/drivers/net/ethernet/hisilicon/hns/hnae.h b/drivers/net/ethernet/hisilicon/hns/hnae.h
index 1cbcb9f..11a3f97 100644
--- a/drivers/net/ethernet/hisilicon/hns/hnae.h
+++ b/drivers/net/ethernet/hisilicon/hns/hnae.h
@@ -147,6 +147,8 @@  enum hnae_led_state {
 
 #define HNSV2_TXD_BUFNUM_S 0
 #define HNSV2_TXD_BUFNUM_M (0x7 << HNSV2_TXD_BUFNUM_S)
+#define HNSV2_TXD_PORTID_S	4
+#define HNSV2_TXD_PORTID_M	(0X7 << HNSV2_TXD_PORTID_S)
 #define HNSV2_TXD_RI_B   1
 #define HNSV2_TXD_L4CS_B   2
 #define HNSV2_TXD_L3CS_B   3
@@ -516,6 +518,7 @@  struct hnae_handle {
 	int q_num;
 	int vf_id;
 	u32 eport_id;
+	u32 dport_id;	/*v2 tx bd should fill the dport_id*/
 	enum hnae_port_type port_type;
 	struct list_head node;    /* list to hnae_ae_dev->handle_list */
 	struct hnae_buf_ops *bops; /* operation for the buffer */
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c b/drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c
index a0070d0..ea2561a 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c
+++ b/drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c
@@ -175,6 +175,7 @@  struct hnae_handle *hns_ae_get_handle(struct hnae_ae_dev *dev,
 	ae_handle->phy_node = vf_cb->mac_cb->phy_node;
 	ae_handle->if_support = vf_cb->mac_cb->if_support;
 	ae_handle->port_type = vf_cb->mac_cb->mac_type;
+	ae_handle->dport_id = port_idx;
 
 	return ae_handle;
 vf_id_err:
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_enet.c b/drivers/net/ethernet/hisilicon/hns/hns_enet.c
index 6250a42..b45dcc2 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_enet.c
+++ b/drivers/net/ethernet/hisilicon/hns/hns_enet.c
@@ -69,6 +69,10 @@  static void fill_v2_desc(struct hnae_ring *ring, void *priv,
 	hnae_set_bit(rrcfv, HNSV2_TXD_VLD_B, 1);
 	hnae_set_field(bn_pid, HNSV2_TXD_BUFNUM_M, 0, buf_num - 1);
 
+	/*fill port_id in the tx bd for sending management pkts*/
+	hnae_set_field(bn_pid, HNSV2_TXD_PORTID_M,
+		       HNSV2_TXD_PORTID_S, ring->q->handle->dport_id);
+
 	if (type == DESC_TYPE_SKB) {
 		skb = (struct sk_buff *)priv;