Re: [patch net-next] net: hns: add skb_reset_mac_header() after skb being alloc

From: David Miller
Date: Mon Jun 20 2016 - 12:07:15 EST


From: Yisen Zhuang <Yisen.zhuang@xxxxxxxxxx>
Date: Mon, 20 Jun 2016 15:12:34 +0800

>
>
> 在 2016/6/15 18:30, Yisen Zhuang 写道:
>> Hi David,
>>
>> Thanks for your suggestions.
>>
>> Please see my comments below.
>>
>> Thanks,
>>
>> Yisen
>>
>> 在 2016/6/15 13:41, David Miller 写道:
>>> From: Yisen Zhuang <Yisen.Zhuang@xxxxxxxxxx>
>>> Date: Mon, 13 Jun 2016 20:41:22 +0800
>>>
>>>> From: Kejian Yan <yankejian@xxxxxxxxxx>
>>>>
>>>> HNS receives a packet without doing anything, but it should call
>>>> skb_reset_mac_header() to initialize the header before using
>>>> eth_hdr().
>>>>
>>>> Fixes: 0d6b425a3773c3445b0f51b2f333821beaacb619
>>>> Signed-off-by: Kejian Yan <yankejian@xxxxxxxxxx>
>>>> Signed-off-by: Yisen Zhuang <Yisen.Zhuang@xxxxxxxxxx>
>>>
>>> Well, this patch made me look at this function.
>>>
>>> You really shouldn't be filtering packets looped back, that is
>>> the stack's job. It shouldn't be happening in the driver.
>>
>> If we use ping6 to test if it is connected to network, CPUs would send out the NS packets
>> and these packets will be looped back to CPUs. If driver does not drop these packets,
>> they will be sent to protocol stack and protocol stack consider that there is a device
>> with the same address and it is not available address. It will show us the log like
>> "connect: Cannot assign requested address". Then it can not connect to the network enviroment.
>> Thus, we drop these packets looped back in HNS driver.
>>
>
> Hi David,
>
> What is the opinion about this issue? We need this patch to resolve the issue.

I guess this is fine if your chip behaves this way.