diff mbox series

[2/5] brcmfmac: remove "arp_hostip_clear" from "brcmf_netdev_stop"

Message ID 1541648845-194984-3-git-send-email-chi-hsien.lin@cypress.com (mailing list archive)
State Changes Requested
Delegated to: Kalle Valo
Headers show
Series brcmfmac: p2p/miracast/apsta fixes | expand

Commit Message

Chi-Hsien Lin Nov. 8, 2018, 3:48 a.m. UTC
From: Wright Feng <wright.feng@cypress.com>

The firmware does not respond ARP request and causes ping failure with
following steps:

1. Bring up interface
   ifconfig wlan0 up or start wpa_supplicant
2. Set the IP address
   ifconfig wlan0 192.168.100.10
3. Bring down interface or
   ifconfig wlan0 down or kill wpa_supplicant
4. Bring up interface again and set the same IP address
5. Connect to AP(192.168.100.1) and ping to AP will be failed.

FMAC clears arp_hostip when bringing down the interface, but not set it
back if setting the same IP address. We are able to see the IP address
in interface info(inconfig wlan0) but the ping still cannot work because
the firmware ARP offload does not respond the ARP request.
Because of that, we remove "arp_hostip_clear" from function
"brcmf_netdev_stop"

Signed-off-by: Wright Feng <wright.feng@cypress.com>
Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
---
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c | 2 --
 1 file changed, 2 deletions(-)

Comments

Franky Lin Nov. 8, 2018, 7:19 p.m. UTC | #1
On Wed, Nov 7, 2018 at 7:48 PM Chi-Hsien Lin <Chi-Hsien.Lin@cypress.com> wrote:
>
> From: Wright Feng <wright.feng@cypress.com>
>
> The firmware does not respond ARP request and causes ping failure with
> following steps:
>
> 1. Bring up interface
>    ifconfig wlan0 up or start wpa_supplicant
> 2. Set the IP address
>    ifconfig wlan0 192.168.100.10
> 3. Bring down interface or
>    ifconfig wlan0 down or kill wpa_supplicant
> 4. Bring up interface again and set the same IP address
> 5. Connect to AP(192.168.100.1) and ping to AP will be failed.
>
> FMAC clears arp_hostip when bringing down the interface, but not set it
> back if setting the same IP address. We are able to see the IP address
> in interface info(inconfig wlan0) but the ping still cannot work because
> the firmware ARP offload does not respond the ARP request.
> Because of that, we remove "arp_hostip_clear" from function
> "brcmf_netdev_stop"

Shouldn't brcmf_inetaddr_changed get called when the interface up again?

Thanks,
- Franky

>
> Signed-off-by: Wright Feng <wright.feng@cypress.com>
> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
> ---
>  drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c | 2 --
>  1 file changed, 2 deletions(-)
>
> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
> index b1f702faff4f..e1666cf3801c 100644
> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
> @@ -533,8 +533,6 @@ static int brcmf_netdev_stop(struct net_device *ndev)
>
>         brcmf_cfg80211_down(ndev);
>
> -       brcmf_fil_iovar_data_set(ifp, "arp_hostip_clear", NULL, 0);
> -
>         brcmf_net_setcarrier(ifp, false);
>
>         return 0;
> --
> 2.1.0
>
Wright Feng Nov. 12, 2018, 2:10 a.m. UTC | #2
On 2018/11/9 上午 03:19, Franky Lin wrote:
> On Wed, Nov 7, 2018 at 7:48 PM Chi-Hsien Lin <Chi-Hsien.Lin@cypress.com> wrote:
>>
>> From: Wright Feng <wright.feng@cypress.com>
>>
>> The firmware does not respond ARP request and causes ping failure with
>> following steps:
>>
>> 1. Bring up interface
>>     ifconfig wlan0 up or start wpa_supplicant
>> 2. Set the IP address
>>     ifconfig wlan0 192.168.100.10
>> 3. Bring down interface or
>>     ifconfig wlan0 down or kill wpa_supplicant
>> 4. Bring up interface again and set the same IP address
>> 5. Connect to AP(192.168.100.1) and ping to AP will be failed.
>>
>> FMAC clears arp_hostip when bringing down the interface, but not set it
>> back if setting the same IP address. We are able to see the IP address
>> in interface info(inconfig wlan0) but the ping still cannot work because
>> the firmware ARP offload does not respond the ARP request.
>> Because of that, we remove "arp_hostip_clear" from function
>> "brcmf_netdev_stop"
> 
> Shouldn't brcmf_inetaddr_changed get called when the interface up again?
> 
> Thanks,
> - Franky
> 
The brcmf_inetaddr_changed only be called in inet_del_ifa and
inet_insert_ifa. If the IP address is not changed when the interface up
again, the brcmf_inetaddr_changed will not be called.

-Wright
>>
>> Signed-off-by: Wright Feng <wright.feng@cypress.com>
>> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
>> ---
>>   drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c | 2 --
>>   1 file changed, 2 deletions(-)
>>
>> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
>> index b1f702faff4f..e1666cf3801c 100644
>> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
>> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
>> @@ -533,8 +533,6 @@ static int brcmf_netdev_stop(struct net_device *ndev)
>>
>>          brcmf_cfg80211_down(ndev);
>>
>> -       brcmf_fil_iovar_data_set(ifp, "arp_hostip_clear", NULL, 0);
>> -
>>          brcmf_net_setcarrier(ifp, false);
>>
>>          return 0;
>> --
>> 2.1.0
>>
> 
> 
> ----------
> 
> You're receiving this message because you're a member of the brcm80211-dev-list group.
>
Franky Lin Nov. 12, 2018, 8:08 p.m. UTC | #3
On Sun, Nov 11, 2018 at 6:10 PM Wright Feng <Wright.Feng@cypress.com> wrote:
>
>
>
> On 2018/11/9 上午 03:19, Franky Lin wrote:
> > On Wed, Nov 7, 2018 at 7:48 PM Chi-Hsien Lin <Chi-Hsien.Lin@cypress.com> wrote:
> >>
> >> From: Wright Feng <wright.feng@cypress.com>
> >>
> >> The firmware does not respond ARP request and causes ping failure with
> >> following steps:
> >>
> >> 1. Bring up interface
> >>     ifconfig wlan0 up or start wpa_supplicant
> >> 2. Set the IP address
> >>     ifconfig wlan0 192.168.100.10
> >> 3. Bring down interface or
> >>     ifconfig wlan0 down or kill wpa_supplicant
> >> 4. Bring up interface again and set the same IP address
> >> 5. Connect to AP(192.168.100.1) and ping to AP will be failed.
> >>
> >> FMAC clears arp_hostip when bringing down the interface, but not set it
> >> back if setting the same IP address. We are able to see the IP address
> >> in interface info(inconfig wlan0) but the ping still cannot work because
> >> the firmware ARP offload does not respond the ARP request.
> >> Because of that, we remove "arp_hostip_clear" from function
> >> "brcmf_netdev_stop"
> >
> > Shouldn't brcmf_inetaddr_changed get called when the interface up again?
> >
> > Thanks,
> > - Franky
> >
> The brcmf_inetaddr_changed only be called in inet_del_ifa and
> inet_insert_ifa. If the IP address is not changed when the interface up
> again, the brcmf_inetaddr_changed will not be called.

Thanks, looks good to me.

>
> -Wright
> >>
> >> Signed-off-by: Wright Feng <wright.feng@cypress.com>
> >> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>

Reviewed-by: Franky Lin <franky.lin@broadcom.com>

> >> ---
> >>   drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c | 2 --
> >>   1 file changed, 2 deletions(-)
> >>
> >> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
> >> index b1f702faff4f..e1666cf3801c 100644
> >> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
> >> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
> >> @@ -533,8 +533,6 @@ static int brcmf_netdev_stop(struct net_device *ndev)
> >>
> >>          brcmf_cfg80211_down(ndev);
> >>
> >> -       brcmf_fil_iovar_data_set(ifp, "arp_hostip_clear", NULL, 0);
> >> -
> >>          brcmf_net_setcarrier(ifp, false);
> >>
> >>          return 0;
> >> --
> >> 2.1.0
> >>
> >
> >
> > ----------
> >
> > You're receiving this message because you're a member of the brcm80211-dev-list group.
> >
diff mbox series

Patch

diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
index b1f702faff4f..e1666cf3801c 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
@@ -533,8 +533,6 @@  static int brcmf_netdev_stop(struct net_device *ndev)
 
 	brcmf_cfg80211_down(ndev);
 
-	brcmf_fil_iovar_data_set(ifp, "arp_hostip_clear", NULL, 0);
-
 	brcmf_net_setcarrier(ifp, false);
 
 	return 0;