* Re: brcmfmac: Fix kernel oops on resume when request firmware fails.
From: Enric Balletbo Serra @ 2017-06-13 10:23 UTC (permalink / raw)
To: Kalle Valo
Cc: Enric Balletbo i Serra, Arend van Spriel,
linux-wireless@vger.kernel.org, brcm80211-dev-list.pdl, netdev,
linux-kernel, Hante Meuleman, Christian Daudt
In-Reply-To: <20170613055448.C0CD36075B@smtp.codeaurora.org>
Hello Kalle,
2017-06-13 7:54 GMT+02:00 Kalle Valo <kvalo@codeaurora.org>:
> Enric Balletbo i Serra <enric.balletbo@collabora.com> wrote:
>
>> When request firmware fails, brcmf_ops_sdio_remove is being called and
>> brcmf_bus freed. In such circumstancies if you do a suspend/resume cycle
>> the kernel hangs on resume due a NULL pointer dereference in resume
>> function.
>>
>> Steps to reproduce the problem:
>> - modprobe brcmfmac without the firmware
>> brcmfmac mmc1:0001:1: Direct firmware load for brcm/brcmfmac4354-sdio.bin
>> failed with error -2
>> - do a suspend/resume cycle (echo mem > /sys/power/state)
>>
>> Protect against the NULL pointer derefence by checking if dev_get_drvdata
>> returned a valid pointer.
>>
>> Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
>
> My understanding is that there's a new version of this patch which fixes
> the issue. If not, let me know.
>
> Patch set to Superseded.
>
Yes there are these patch series [1] that fixes the issue, I guess
Arend is working on a v2 to fix a small issue we found.
[1] https://www.spinics.net/lists/linux-wireless/msg162762.html
> --
> https://patchwork.kernel.org/patch/9743159/
>
> https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
>
Regards,
Enric
^ permalink raw reply
* Re: [PATCH] ip6_tunnel: Correct tos value in collect_md mode
From: Daniel Borkmann @ 2017-06-13 9:57 UTC (permalink / raw)
To: Haishuang Yan, David S. Miller, Alexey Kuznetsov, James Morris,
Patrick McHardy
Cc: netdev, linux-kernel, peter.a.dawson, ast
In-Reply-To: <1497340529-18736-1-git-send-email-yanhaishuang@cmss.chinamobile.com>
On 06/13/2017 09:55 AM, Haishuang Yan wrote:
> Same as ip_gre, geneve and vxlan, use key->tos as tos value.
>
Please also add Fixes tag and Cc original authors.
Fixes: 0e9a709560db ("ip6_tunnel, ip6_gre: fix setting of DSCP on encapsulated packets")
> Signed-off-by: Haishuang Yan <yanhaishuang@cmss.chinamobile.com>
> ---
> net/ipv6/ip6_tunnel.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c
> index ef99d59..5f4aff5 100644
> --- a/net/ipv6/ip6_tunnel.c
> +++ b/net/ipv6/ip6_tunnel.c
> @@ -1249,7 +1249,7 @@ int ip6_tnl_xmit(struct sk_buff *skb, struct net_device *dev, __u8 dsfield,
> fl6.flowi6_proto = IPPROTO_IPIP;
> fl6.daddr = key->u.ipv6.dst;
> fl6.flowlabel = key->label;
> - dsfield = ip6_tclass(key->label);
> + dsfield = key->tos;
Not exactly the same as vxlan / geneve. They do use key->tos
indeed, but they also set fl6.flowlabel differently:
[...]
prio = info->key.tos;
[...]
fl6->flowlabel = ip6_make_flowinfo(RT_TOS(prio),
info->key.label);
[...]
But looks like the latter is done later in ip6_tnl_xmit() eventually
before the route lookup as per 5f733ee68f9a ("ip6_tunnel: fix traffic
class routing for tunnels") fix. However, you still might want to
mask key->tos with RT_TOS().
> } else {
> if (!(t->parms.flags & IP6_TNL_F_IGN_ENCAP_LIMIT))
> encap_limit = t->parms.encap_limit;
> @@ -1320,7 +1320,7 @@ int ip6_tnl_xmit(struct sk_buff *skb, struct net_device *dev, __u8 dsfield,
> fl6.flowi6_proto = IPPROTO_IPV6;
> fl6.daddr = key->u.ipv6.dst;
> fl6.flowlabel = key->label;
> - dsfield = ip6_tclass(key->label);
> + dsfield = key->tos;
> } else {
> offset = ip6_tnl_parse_tlv_enc_lim(skb, skb_network_header(skb));
> /* ip6_tnl_parse_tlv_enc_lim() might have reallocated skb->head */
>
^ permalink raw reply
* Re: Re: [PATCH] mwifiex: fixes the trivial print
From: Xinming Hu @ 2017-06-13 9:51 UTC (permalink / raw)
To: Kalle Valo, Caesar Wang, Zhiyuan Yang, Cathy Luo
Cc: amitkarwar@gmail.com, Nishant Sarmukadam, Ganapathi Bhat,
linux-wireless@vger.kernel.org, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org, briannorris@chromium.org,
jeffy.chen@rock-chips.com
In-Reply-To: <87ink0728l.fsf@kamboji.qca.qualcomm.com>
Hi Caesar,
The original log in google issue tracker show there exist AP in channel 13 after periodically scan.
Per my understand, if reg domain is set to US, channel 12/13/14 will not get chance to scan. (test using iw/wpa_supplicant).
I am curious about whether there are any diff from upper layer.
As a test, you can print the scan channel list, as below:
diff --git a/drivers/net/wireless/marvell/mwifiex/cfg80211.c b/drivers/net/wireless/marvell/mwifiex/cfg80211.c
index a7593aa..a289818 100644
--- a/drivers/net/wireless/marvell/mwifiex/cfg80211.c
+++ b/drivers/net/wireless/marvell/mwifiex/cfg80211.c
@@ -2572,6 +2572,7 @@ static int mwifiex_set_ibss_params(struct mwifiex_private *priv,
MWIFIEX_USER_SCAN_CHAN_MAX); i++) {
chan = request->channels[i];
user_scan_cfg->chan_list[i].chan_number = chan->hw_value;
+ pr_err("chan->hw_value = %d", chan->hw_value);
user_scan_cfg->chan_list[i].radio_type = chan->band;
if ((chan->flags & IEEE80211_CHAN_NO_IR) || !request->n_ssids)
Regards,
Simon
> -----Original Message-----
> From: Kalle Valo [mailto:kvalo@codeaurora.org]
> Sent: 2017年6月13日 15:53
> To: Caesar Wang
> Cc: amitkarwar@gmail.com; Xinming Hu; Nishant Sarmukadam; Ganapathi
> Bhat; linux-wireless@vger.kernel.org; netdev@vger.kernel.org;
> linux-kernel@vger.kernel.org; briannorris@chromium.org;
> jeffy.chen@rock-chips.com
> Subject: [EXT] Re: [PATCH] mwifiex: fixes the trivial print
>
> External Email
>
> ----------------------------------------------------------------------
> Caesar Wang <wxt@rock-chips.com> writes:
>
> > 在 2017年06月13日 15:04, Kalle Valo 写道:
> >> Caesar Wang <wxt@rock-chips.com> writes:
> >>
> >>> Kalle,
> >>>
> >>> 在 2017年06月13日 14:28, Kalle Valo 写道:
> >>>> Caesar Wang <wxt@rock-chips.com> writes:
> >>>>
> >>>>> We have always met the unused log be printed as following.
> >>>>>
> >>>>> ...
> >>>>> [23193.523182] mwifiex_pcie 0000:01:00.0: mwifiex_get_cfp:
> >>>>> cannot find cfp by band 2 & channel=13 freq=0
> >>>>> [23378.633684] mwifiex_pcie 0000:01:00.0: mwifiex_get_cfp:
> >>>>> cannot find cfp by band 2 & channel=13 freq=0
> >>>>>
> >>>>> Maybe that's related to wifi regdom, since wifi default area was
> >>>>> US and didn't support 12~14 channels.
> >>>>>
> >>>>> As Frequencies:
> >>>>> * 2412 MHz [1] (30.0 dBm)
> >>>>> * 2417 MHz [2] (30.0 dBm)
> >>>>> * 2422 MHz [3] (30.0 dBm)
> >>>>> * 2427 MHz [4] (30.0 dBm)
> >>>>> * 2432 MHz [5] (30.0 dBm)
> >>>>> * 2437 MHz [6] (30.0 dBm)
> >>>>> * 2442 MHz [7] (30.0 dBm)
> >>>>> * 2447 MHz [8] (30.0 dBm)
> >>>>> * 2452 MHz [9] (30.0 dBm)
> >>>>> * 2457 MHz [10] (30.0 dBm)
> >>>>> * 2462 MHz [11] (30.0 dBm)
> >>>>> * 2467 MHz [12] (disabled)
> >>>>> * 2472 MHz [13] (disabled)
> >>>>> * 2484 MHz [14] (disabled)
> >>>>>
> >>>>> Signed-off-by: Caesar Wang <wxt@rock-chips.com>
> >>>>> ---
> >>>>>
> >>>>> drivers/net/wireless/marvell/mwifiex/cfp.c | 2 +-
> >>>>> 1 file changed, 1 insertion(+), 1 deletion(-)
> >>>>>
> >>>>> diff --git a/drivers/net/wireless/marvell/mwifiex/cfp.c
> >>>>> b/drivers/net/wireless/marvell/mwifiex/cfp.c
> >>>>> index 1ff2205..6e29943 100644
> >>>>> --- a/drivers/net/wireless/marvell/mwifiex/cfp.c
> >>>>> +++ b/drivers/net/wireless/marvell/mwifiex/cfp.c
> >>>>> @@ -350,7 +350,7 @@ mwifiex_get_cfp(struct mwifiex_private *priv, u8
> band, u16 channel, u32 freq)
> >>>>> }
> >>>>> }
> >>>>> if (i == sband->n_channels) {
> >>>>> - mwifiex_dbg(priv->adapter, ERROR,
> >>>>> + mwifiex_dbg(priv->adapter, WARN,
> >>>>> "%s: cannot find cfp by band %d\t"
> >>>>> "& channel=%d freq=%d\n",
> >>>>> __func__, band, channel, freq);
> >>>> I don't see how this fixes anything, care to explain? And the title
> >>>> is quite vague.
> >>> Sorry for the description maybe unclear.
> >>> I'm assuming the print log is expected for marvel wifi driver. Do we
> >>> should use 'WARN' to instead of the 'ERROR' here.
> >> But does that make any functional difference, isn't the warning still
> >> printed?
> >>
> >
> > At least, that shouldn't be printed log by default. :)
> >
> > if I read the code is correct. That only the MSG/FATAL/ERROR will
> > output by default.
> >
> > /**
> > *enum mwifiex_debug_level - marvell wifi debug level */ enum
> > MWIFIEX_DEBUG_LEVEL {
> > MWIFIEX_DBG_MSG = 0x00000001,
> > MWIFIEX_DBG_FATAL = 0x00000002,
> > MWIFIEX_DBG_ERROR = 0x00000004,
> > MWIFIEX_DBG_DATA = 0x00000008,
> > MWIFIEX_DBG_CMD = 0x00000010,
> > MWIFIEX_DBG_EVENT = 0x00000020,
> > MWIFIEX_DBG_INTR = 0x00000040,
> > MWIFIEX_DBG_IOCTL = 0x00000080,
> >
> > MWIFIEX_DBG_MPA_D = 0x00008000,
> > MWIFIEX_DBG_DAT_D = 0x00010000,
> > MWIFIEX_DBG_CMD_D = 0x00020000,
> > MWIFIEX_DBG_EVT_D = 0x00040000,
> > MWIFIEX_DBG_FW_D = 0x00080000,
> > MWIFIEX_DBG_IF_D = 0x00100000,
> >
> > MWIFIEX_DBG_ENTRY = 0x10000000,
> > MWIFIEX_DBG_WARN = 0x20000000,
> > MWIFIEX_DBG_INFO = 0x40000000,
> > MWIFIEX_DBG_DUMP = 0x80000000,
> >
> > MWIFIEX_DBG_ANY = 0xffffffff
> > };
> >
> > #define MWIFIEX_DEFAULT_DEBUG_MASK (MWIFIEX_DBG_MSG | \
> > MWIFIEX_DBG_FATAL | \
> > MWIFIEX_DBG_ERROR)
>
> Heh, makes more sense now :) But you still should improve the title and
> explain in the commit log that WARN level is not printed by default.
>
> But before you submit v2 let's wait what Marvell says about this.
>
> --
> Kalle Valo
^ permalink raw reply related
* Re: [PATCH] ip6_tunnel: fix potential issue in __ip6_tnl_rcv
From: 严海双 @ 2017-06-13 9:51 UTC (permalink / raw)
To: David S. Miller, Hideaki YOSHIFUJI, Patrick McHardy, zhangshengju
Cc: Linux Kernel Network Developers, LKML, Alexei Starovoitov
In-Reply-To: <1497344195-19900-2-git-send-email-yanhaishuang@cmss.chinamobile.com>
> On 13 Jun 2017, at 4:56 PM, Haishuang Yan <yanhaishuang@cmss.chinamobile.com> wrote:
>
> When __ip6_tnl_rcv fails, the tun_dst won't be freed, so call
> dst_release to free it in error code path.
>
> CC: Alexei Starovoitov <ast@fb.com>
> Fixes: 8d79266bc48c ("ip6_tunnel: add collect_md mode to IPv6 tunnels")
> Signed-off-by: Haishuang Yan <yanhaishuang@cmss.chinamobile.com>
> Tested-by: Zhang Shengju <zhangshengju@cmss.chinamobile.com>
>
> ---
> v4:
> - Add tester information
> v3:
> - Free tun_dst from error code path
> v2:
> - Add the the missing Fixes information
> ---
> net/ipv6/ip6_tunnel.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c
> index 9b37f97..ef99d59 100644
> --- a/net/ipv6/ip6_tunnel.c
> +++ b/net/ipv6/ip6_tunnel.c
> @@ -859,6 +859,8 @@ static int __ip6_tnl_rcv(struct ip6_tnl *tunnel, struct sk_buff *skb,
> return 0;
>
> drop:
> + if (tun_dst)
> + dst_release((struct dst_entry *)tun_dst);
> kfree_skb(skb);
> return 0;
> }
> --
> 1.8.3.1
>
>
Hi David, Please ignore the patches, I forgot to add subject prefix, sorry.
^ permalink raw reply
* pull-request: mac80211 2017-06-13
From: Johannes Berg @ 2017-06-13 9:44 UTC (permalink / raw)
To: David Miller
Cc: netdev-u79uwXL29TY76Z2rM5mHXA,
linux-wireless-u79uwXL29TY76Z2rM5mHXA
Hi Dave,
Here are some more fixes for the current cycle. Nothing really
big, though my own patches look bigger than they are due to some
code moving. The commit logs are far longer than the changes :-)
Please pull and let me know if there's any problem.
Thanks,
johannes
The following changes since commit 0bed865060836dc5f26b68052de0a504d66d9fae:
net: Fix build regression in rtl8723bs staging driver. (2017-06-08 11:51:59 -0400)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git tags/mac80211-for-davem-2017-06-13
for you to fetch changes up to b3dd8279659f14f3624bb32559782d699fa6f7d1:
mac80211: don't send SMPS action frame in AP mode when not needed (2017-06-13 10:24:35 +0200)
----------------------------------------------------------------
Some fixes:
* Avi fixes some fallout from my mac80211 RX flags changes
* Emmanuel fixes an issue with adhering to the spec, and
an oversight in the SMPS management code
* Jason's patch makes mac80211 use constant-time memory
comparisons for message authentication, to avoid having
potentially observable timing differences
* my fix makes mac80211 set the basic rates bitmap before
the channel so the next update to the driver has more
consistent data - this required another rework patch to
remove some useless 5/10 MHz code that can never be hit
----------------------------------------------------------------
Avraham Stern (1):
mac80211: Fix incorrect condition when checking rx timestamp
Emmanuel Grumbach (2):
mac80211: don't look at the PM bit of BAR frames
mac80211: don't send SMPS action frame in AP mode when not needed
Jason A. Donenfeld (1):
mac80211/wpa: use constant time memory comparison for MACs
Johannes Berg (2):
mac80211: remove 5/10 MHz rate code from station MLME
mac80211: set bss_info data before configuring the channel
net/mac80211/cfg.c | 2 ++
net/mac80211/ieee80211_i.h | 2 +-
net/mac80211/mlme.c | 62 +++++++++++++++++++++++-----------------------
net/mac80211/rx.c | 6 ++++-
net/mac80211/wpa.c | 9 ++++---
5 files changed, 44 insertions(+), 37 deletions(-)
^ permalink raw reply
* Re: Toggling link state breaks network connectivity
From: Matthias May @ 2017-06-13 9:39 UTC (permalink / raw)
To: Mason, netdev
Cc: Florian Fainelli, Andrew Lunn, Mans Rullgard, Thibaud Cornic
In-Reply-To: <927c2f12-0d1b-1e80-fede-ad9abe807222@free.fr>
On 12/06/17 15:22, Mason wrote:
> Hello,
>
> I am using the following drivers for Ethernet connectivity.
> drivers/net/ethernet/aurora/nb8800.c
> drivers/net/phy/at803x.c
>
> Pulling the cable and plugging it back works as expected.
> (I can ping both before and after.)
>
> However, if I toggle the link state in software (using ip link set),
> the board loses network connectivity.
>
> # Statically assign IP address
> ip addr add 172.27.64.77/18 brd 172.27.127.255 dev eth0
> # Set link state to "up"
> ip link set eth0 up
> # ping -c 3 172.27.64.1 > /tmp/v1
>
> PING 172.27.64.1 (172.27.64.1): 56 data bytes
> 64 bytes from 172.27.64.1: seq=0 ttl=64 time=18.321 ms
>
> --- 172.27.64.1 ping statistics ---
> 3 packets transmitted, 1 packets received, 66% packet loss
> round-trip min/avg/max = 18.321/18.321/18.321 ms
>
>
> 172.27.64.1 is a desktop system.
> Running
> % tcpdump -n -i eth1-boards ether host 00:16:e8:4d:7f:c4
> on the desktop, I get:
>
> 15:01:45.187346 ARP, Request who-has 172.27.64.1 tell 172.27.64.77, length 46
> 15:01:45.187359 ARP, Reply 172.27.64.1 is-at 00:15:17:24:e0:81, length 28
> 15:01:45.194633 IP 172.27.64.77 > 172.27.64.1: ICMP echo request, id 41219, seq 0, length 64
> 15:01:45.194662 IP 172.27.64.1 > 172.27.64.77: ICMP echo reply, id 41219, seq 0, length 64
> 15:01:50.198564 ARP, Request who-has 172.27.64.77 tell 172.27.64.1, length 28
> 15:01:50.205929 IP 172.27.64.77 > 172.27.64.1: ICMP echo request, id 41219, seq 1, length 64
> 15:01:50.205951 IP 172.27.64.1 > 172.27.64.77: ICMP echo reply, id 41219, seq 1, length 64
> 15:01:50.213217 IP 172.27.64.77 > 172.27.64.1: ICMP echo request, id 41219, seq 2, length 64
> 15:01:50.213232 IP 172.27.64.1 > 172.27.64.77: ICMP echo reply, id 41219, seq 2, length 64
> 15:01:51.198563 ARP, Request who-has 172.27.64.77 tell 172.27.64.1, length 28
> 15:01:51.209586 ARP, Reply 172.27.64.77 is-at 00:16:e8:4d:7f:c4, length 46
> 15:01:51.209598 ARP, Reply 172.27.64.77 is-at 00:16:e8:4d:7f:c4, length 46
>
> Packet #1: the board asks for the desktop's MAC address
> Packet #2: the desktop replies instantly
> Packet #3: the board sends the first ping
> Packet #4: the desktop replies instantly
> Then the board goes quiet for a long time (why???)
> Packet #5: the desktop asks for the board's MAC address (doesn't it have it already?)
> Packet #6: this seems to unwedge the board, which sends the second ping
> Packet #7: the desktop replies instantly
> Packet #8: the board sends the third ping
> Packet #9: the desktop replies instantly
> Packet #10: the desktop asks again for the board's MAC address
> Packet #11 and #12: the board answers twice (for the old and new requests?)
>
> Some oddities, but it seems to work.
>
> Now toggle the link state:
>
> % ip link set eth0 down
> % ip link set eth0 up
> % ping -c 3 172.27.64.1 > /tmp/v2
>
> PING 172.27.64.1 (172.27.64.1): 56 data bytes
>
> --- 172.27.64.1 ping statistics ---
> 3 packets transmitted, 0 packets received, 100% packet loss
>
>
> On the desktop, I see
>
> 15:14:03.900162 ARP, Request who-has 172.27.64.1 tell 172.27.64.77, length 46
> 15:14:03.900175 ARP, Reply 172.27.64.1 is-at 00:15:17:24:e0:81, length 28
> 15:14:05.017189 ARP, Request who-has 172.27.64.1 tell 172.27.64.77, length 46
> 15:14:05.017200 ARP, Reply 172.27.64.1 is-at 00:15:17:24:e0:81, length 28
> 15:14:06.030531 ARP, Request who-has 172.27.64.1 tell 172.27.64.77, length 46
> 15:14:06.030541 ARP, Reply 172.27.64.1 is-at 00:15:17:24:e0:81, length 28
>
> So basically, the board is asking the desktop for its MAC address,
> and the desktop is answering immediately. But the board doesn't seem
> to be getting the replies... Any ideas, or words of wisdom, as they say?
>
> Regards.
>
Hi
You might want to read this thread:
https://www.mail-archive.com/netdev@vger.kernel.org/msg133896.html
The symptoms you describe are pretty much what we had at one point.
BR
Matthias
^ permalink raw reply
* Re: [PATCH 1/2] mdio_bus: handle only single PHY reset GPIO
From: Sergei Shtylyov @ 2017-06-13 9:20 UTC (permalink / raw)
To: Florian Fainelli, Andrew Lunn, Rob Herring, Frank Rowand,
netdev-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <12bb1f10-79cc-25a5-1115-69d13c36a68b-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Hello!
On 6/13/2017 2:43 AM, Florian Fainelli wrote:
> Subject should be: net: phy: Handle only single PHY reset GPIO to be
> consistent with prior submissions,
With what exactly previous submissions? I'm seeing all kinds of prefixes
for drivers/net/phy/mdio_bus.c, mine matched Roger's one (as well as my own
and others').
> and can you also send your patches
> inline using git format-patch + git send-email so it's possible to quote
> the contents?
Hm, you're the first complaining about my patches posted with quilt...
Using git adds more efforts on my side (I don't use git for the patch
development). :-/
> Thanks
MNR, Sergei
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
* [PATCH net] qed: fix dump of context data
From: Tomer Tayar @ 2017-06-13 9:15 UTC (permalink / raw)
To: davem, netdev; +Cc: yuval.mintz, Tomer Tayar
Currently when dumping a context data only word number '1' is read for the
entire context.
Fixes: c965db444629 ("qed: Add support for debug data collection")
Signed-off-by: Tomer Tayar <Tomer.Tayar@cavium.com>
---
drivers/net/ethernet/qlogic/qed/qed_debug.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/qlogic/qed/qed_debug.c b/drivers/net/ethernet/qlogic/qed/qed_debug.c
index 483241b..a672f6a 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_debug.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_debug.c
@@ -2956,7 +2956,7 @@ static u32 qed_grc_dump_ctx_data(struct qed_hwfn *p_hwfn,
qed_wr(p_hwfn,
p_ptt,
s_storm_defs[storm_id].cm_ctx_wr_addr,
- BIT(9) | lid);
+ (i << 9) | lid);
*(dump_buf + offset) = qed_rd(p_hwfn,
p_ptt,
rd_reg_addr);
--
1.8.3.1
^ permalink raw reply related
* Re: [PATCH v1] net: rfkill: gpio: Switch to devm_acpi_dev_add_driver_gpios()
From: Johannes Berg @ 2017-06-13 9:08 UTC (permalink / raw)
To: Andy Shevchenko, linux-wireless, David S. Miller, netdev
In-Reply-To: <20170610191034.53635-1-andriy.shevchenko@linux.intel.com>
On Sat, 2017-06-10 at 22:10 +0300, Andy Shevchenko wrote:
> Switch to use managed variant of acpi_dev_add_driver_gpios() to
> simplify
> error path and fix potentially wrong assingment if ->probe() fails.
>
Looks fine, applied.
johannes
^ permalink raw reply
* Re: stmmac tx timeout
From: Pavel Machek @ 2017-06-13 8:38 UTC (permalink / raw)
To: Niklas Cassel
Cc: Alexandre Torgue, Giuseppe Cavallaro, Joao Pinto, Lars Persson,
netdev
In-Reply-To: <9f7d2198-073f-435c-fd9a-f25889968b9d@axis.com>
[-- Attachment #1: Type: text/plain, Size: 1408 bytes --]
Hi!
> > @@ -2043,7 +2063,11 @@ static netdev_tx_t stmmac_xmit(struct sk_buff
> > *skb, stru\
> > ct net_device *dev)
> > } else
> > priv->tx_count_frames = 0;
> >
> > + dma_rmb();
> > + dma_wmb();
> > /* To avoid raise condition */
> > + BUG_ON(first->des01.etx.own); /* This BUG_ON seems to be enough.
> > + Replacing it with barriers is _not_enough. */
> > priv->hw->desc->set_tx_owner(first);
> > wmb();
> >
> > No, the BUG_ON() does not trigger. Yes, it still fixes the driver for
> > me. You may want to verify it has same effect for you.
>
> Hello Pavel,
>
> I am sincerely grateful for you help.
>
> I forward ported your patch to 4.9,
> however, I could still get tx timeouts.
>
> Thankfully I finally found the root cause of
> my tx timeouts, see the patch I've submitted
> here:
>
> http://marc.info/?l=linux-kernel&m=149673393525236
Thanks a lot for the information. And unfortunately yes, there's
probably more work to do in the stmmac driver; for example it would be
good if _tx_timeout were actually able to recover the card. I probably
have patch for that somewhere, too...
Best regards,
Pavel
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]
^ permalink raw reply
* Re: [net-next] net: phy: marvell: Show complete link partner advertising
From: Tom Bogendoerfer @ 2017-06-13 8:32 UTC (permalink / raw)
To: Florian Fainelli; +Cc: andrew, netdev, linux-kernel, rmk+kernel
In-Reply-To: <a172b1f9-5141-6d53-1d96-bd028a0b0a23@gmail.com>
On Mon, Jun 12, 2017 at 09:05:04AM -0700, Florian Fainelli wrote:
> On 06/12/2017 05:54 AM, Thomas Bogendoerfer wrote:
> > From: Thomas Bogendoerfer <tbogendoerfer@suse.de>
> >
> > Give back all modes advertised by the link partner. This change brings
> > the marvell phy driver in line with all other phy drivers.
> >
> > Signed-off-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
>
> I thought Russell had a similar patch but I can't find it applied in
> net-next, so:
>
> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
>
> drivers/net/phy/lxt.c has a similar pattern that would be worth fixing too.
that's different and correct. The lpa value is not exported as lp_advertising,
but only used internal. Well the bug here is IMHO, that it doesn't
export lpa to lp_advertising at all as it's done in genphy_read_status().
And from a quick grep there are more phy drivers doing that...
I'll have a look later.
Thomas.
--
Crap can work. Given enough thrust pigs will fly, but it's not necessarily a
good idea. [ RFC1925, 2.3 ]
^ permalink raw reply
* Re: [Patch net] igmp: acquire pmc lock for ip_mc_clear_src()
From: Xin Long @ 2017-06-13 8:23 UTC (permalink / raw)
To: Cong Wang; +Cc: network dev, Andrey Konovalov, Eric Dumazet
In-Reply-To: <CAM_iQpV7GmFfM2zo0ADxHm7fF4EErY5h3jLLKvNhfN+N-tYStQ@mail.gmail.com>
On Tue, Jun 13, 2017 at 2:35 AM, Cong Wang <xiyou.wangcong@gmail.com> wrote:
> On Mon, Jun 12, 2017 at 11:30 AM, Xin Long <lucien.xin@gmail.com> wrote:
>> Hi, Cong.
>>
>> how about in ip_check_mc_rcu():
>> for (psf = im->sources; psf; psf = psf->sf_next) {
>> if (psf->sf_inaddr == src_addr)
>> break;
>> }
>>
>> I didn't see spinlock for it, is it safe to access them in parallel ?
>> or these two places would never be in parallel ?
>
> That is a different bug which needs more work, therefore
> I defer it to net-next. And I already explained to you why
> it needs more work than just a call_rcu().
Okay, thanks Cong.
Reviewed-by: Xin Long <lucien.xin@gmail.com>
^ permalink raw reply
* [PATCH] ip6_tunnel: Correct tos value in collect_md mode
From: Haishuang Yan @ 2017-06-13 7:55 UTC (permalink / raw)
To: David S. Miller, Alexey Kuznetsov, James Morris, Patrick McHardy
Cc: netdev, linux-kernel, Haishuang Yan
Same as ip_gre, geneve and vxlan, use key->tos as tos value.
Signed-off-by: Haishuang Yan <yanhaishuang@cmss.chinamobile.com>
---
net/ipv6/ip6_tunnel.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c
index ef99d59..5f4aff5 100644
--- a/net/ipv6/ip6_tunnel.c
+++ b/net/ipv6/ip6_tunnel.c
@@ -1249,7 +1249,7 @@ int ip6_tnl_xmit(struct sk_buff *skb, struct net_device *dev, __u8 dsfield,
fl6.flowi6_proto = IPPROTO_IPIP;
fl6.daddr = key->u.ipv6.dst;
fl6.flowlabel = key->label;
- dsfield = ip6_tclass(key->label);
+ dsfield = key->tos;
} else {
if (!(t->parms.flags & IP6_TNL_F_IGN_ENCAP_LIMIT))
encap_limit = t->parms.encap_limit;
@@ -1320,7 +1320,7 @@ int ip6_tnl_xmit(struct sk_buff *skb, struct net_device *dev, __u8 dsfield,
fl6.flowi6_proto = IPPROTO_IPV6;
fl6.daddr = key->u.ipv6.dst;
fl6.flowlabel = key->label;
- dsfield = ip6_tclass(key->label);
+ dsfield = key->tos;
} else {
offset = ip6_tnl_parse_tlv_enc_lim(skb, skb_network_header(skb));
/* ip6_tnl_parse_tlv_enc_lim() might have reallocated skb->head */
--
1.8.3.1
^ permalink raw reply related
* Re: [PATCH] mwifiex: fixes the trivial print
From: Kalle Valo @ 2017-06-13 7:53 UTC (permalink / raw)
To: Caesar Wang
Cc: amitkarwar, huxm, nishants, gbhat, linux-wireless, netdev,
linux-kernel, briannorris, jeffy.chen
In-Reply-To: <2eb9e680-64bc-a74d-f224-b6e13dd3b45b@rock-chips.com>
Caesar Wang <wxt@rock-chips.com> writes:
> 在 2017年06月13日 15:04, Kalle Valo 写道:
>> Caesar Wang <wxt@rock-chips.com> writes:
>>
>>> Kalle,
>>>
>>> 在 2017年06月13日 14:28, Kalle Valo 写道:
>>>> Caesar Wang <wxt@rock-chips.com> writes:
>>>>
>>>>> We have always met the unused log be printed as following.
>>>>>
>>>>> ...
>>>>> [23193.523182] mwifiex_pcie 0000:01:00.0: mwifiex_get_cfp:
>>>>> cannot find cfp by band 2 & channel=13 freq=0
>>>>> [23378.633684] mwifiex_pcie 0000:01:00.0: mwifiex_get_cfp:
>>>>> cannot find cfp by band 2 & channel=13 freq=0
>>>>>
>>>>> Maybe that's related to wifi regdom, since wifi default area
>>>>> was US and didn't support 12~14 channels.
>>>>>
>>>>> As Frequencies:
>>>>> * 2412 MHz [1] (30.0 dBm)
>>>>> * 2417 MHz [2] (30.0 dBm)
>>>>> * 2422 MHz [3] (30.0 dBm)
>>>>> * 2427 MHz [4] (30.0 dBm)
>>>>> * 2432 MHz [5] (30.0 dBm)
>>>>> * 2437 MHz [6] (30.0 dBm)
>>>>> * 2442 MHz [7] (30.0 dBm)
>>>>> * 2447 MHz [8] (30.0 dBm)
>>>>> * 2452 MHz [9] (30.0 dBm)
>>>>> * 2457 MHz [10] (30.0 dBm)
>>>>> * 2462 MHz [11] (30.0 dBm)
>>>>> * 2467 MHz [12] (disabled)
>>>>> * 2472 MHz [13] (disabled)
>>>>> * 2484 MHz [14] (disabled)
>>>>>
>>>>> Signed-off-by: Caesar Wang <wxt@rock-chips.com>
>>>>> ---
>>>>>
>>>>> drivers/net/wireless/marvell/mwifiex/cfp.c | 2 +-
>>>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/drivers/net/wireless/marvell/mwifiex/cfp.c b/drivers/net/wireless/marvell/mwifiex/cfp.c
>>>>> index 1ff2205..6e29943 100644
>>>>> --- a/drivers/net/wireless/marvell/mwifiex/cfp.c
>>>>> +++ b/drivers/net/wireless/marvell/mwifiex/cfp.c
>>>>> @@ -350,7 +350,7 @@ mwifiex_get_cfp(struct mwifiex_private *priv, u8 band, u16 channel, u32 freq)
>>>>> }
>>>>> }
>>>>> if (i == sband->n_channels) {
>>>>> - mwifiex_dbg(priv->adapter, ERROR,
>>>>> + mwifiex_dbg(priv->adapter, WARN,
>>>>> "%s: cannot find cfp by band %d\t"
>>>>> "& channel=%d freq=%d\n",
>>>>> __func__, band, channel, freq);
>>>> I don't see how this fixes anything, care to explain? And the title is
>>>> quite vague.
>>> Sorry for the description maybe unclear.
>>> I'm assuming the print log is expected for marvel wifi driver. Do we
>>> should use 'WARN' to instead of the 'ERROR' here.
>> But does that make any functional difference, isn't the warning still
>> printed?
>>
>
> At least, that shouldn't be printed log by default. :)
>
> if I read the code is correct. That only the MSG/FATAL/ERROR will
> output by default.
>
> /**
> *enum mwifiex_debug_level - marvell wifi debug level
> */
> enum MWIFIEX_DEBUG_LEVEL {
> MWIFIEX_DBG_MSG = 0x00000001,
> MWIFIEX_DBG_FATAL = 0x00000002,
> MWIFIEX_DBG_ERROR = 0x00000004,
> MWIFIEX_DBG_DATA = 0x00000008,
> MWIFIEX_DBG_CMD = 0x00000010,
> MWIFIEX_DBG_EVENT = 0x00000020,
> MWIFIEX_DBG_INTR = 0x00000040,
> MWIFIEX_DBG_IOCTL = 0x00000080,
>
> MWIFIEX_DBG_MPA_D = 0x00008000,
> MWIFIEX_DBG_DAT_D = 0x00010000,
> MWIFIEX_DBG_CMD_D = 0x00020000,
> MWIFIEX_DBG_EVT_D = 0x00040000,
> MWIFIEX_DBG_FW_D = 0x00080000,
> MWIFIEX_DBG_IF_D = 0x00100000,
>
> MWIFIEX_DBG_ENTRY = 0x10000000,
> MWIFIEX_DBG_WARN = 0x20000000,
> MWIFIEX_DBG_INFO = 0x40000000,
> MWIFIEX_DBG_DUMP = 0x80000000,
>
> MWIFIEX_DBG_ANY = 0xffffffff
> };
>
> #define MWIFIEX_DEFAULT_DEBUG_MASK (MWIFIEX_DBG_MSG | \
> MWIFIEX_DBG_FATAL | \
> MWIFIEX_DBG_ERROR)
Heh, makes more sense now :) But you still should improve the title and
explain in the commit log that WARN level is not printed by default.
But before you submit v2 let's wait what Marvell says about this.
--
Kalle Valo
^ permalink raw reply
* Re: [PATCH] mwifiex: fixes the trivial print
From: Caesar Wang @ 2017-06-13 7:42 UTC (permalink / raw)
To: Kalle Valo
Cc: amitkarwar, huxm, nishants, gbhat, linux-wireless, netdev,
linux-kernel, briannorris, jeffy.chen
In-Reply-To: <87mv9c74hn.fsf@kamboji.qca.qualcomm.com>
在 2017年06月13日 15:04, Kalle Valo 写道:
> Caesar Wang <wxt@rock-chips.com> writes:
>
>> Kalle,
>>
>> 在 2017年06月13日 14:28, Kalle Valo 写道:
>>> Caesar Wang <wxt@rock-chips.com> writes:
>>>
>>>> We have always met the unused log be printed as following.
>>>>
>>>> ...
>>>> [23193.523182] mwifiex_pcie 0000:01:00.0: mwifiex_get_cfp:
>>>> cannot find cfp by band 2 & channel=13 freq=0
>>>> [23378.633684] mwifiex_pcie 0000:01:00.0: mwifiex_get_cfp:
>>>> cannot find cfp by band 2 & channel=13 freq=0
>>>>
>>>> Maybe that's related to wifi regdom, since wifi default area
>>>> was US and didn't support 12~14 channels.
>>>>
>>>> As Frequencies:
>>>> * 2412 MHz [1] (30.0 dBm)
>>>> * 2417 MHz [2] (30.0 dBm)
>>>> * 2422 MHz [3] (30.0 dBm)
>>>> * 2427 MHz [4] (30.0 dBm)
>>>> * 2432 MHz [5] (30.0 dBm)
>>>> * 2437 MHz [6] (30.0 dBm)
>>>> * 2442 MHz [7] (30.0 dBm)
>>>> * 2447 MHz [8] (30.0 dBm)
>>>> * 2452 MHz [9] (30.0 dBm)
>>>> * 2457 MHz [10] (30.0 dBm)
>>>> * 2462 MHz [11] (30.0 dBm)
>>>> * 2467 MHz [12] (disabled)
>>>> * 2472 MHz [13] (disabled)
>>>> * 2484 MHz [14] (disabled)
>>>>
>>>> Signed-off-by: Caesar Wang <wxt@rock-chips.com>
>>>> ---
>>>>
>>>> drivers/net/wireless/marvell/mwifiex/cfp.c | 2 +-
>>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>>
>>>> diff --git a/drivers/net/wireless/marvell/mwifiex/cfp.c b/drivers/net/wireless/marvell/mwifiex/cfp.c
>>>> index 1ff2205..6e29943 100644
>>>> --- a/drivers/net/wireless/marvell/mwifiex/cfp.c
>>>> +++ b/drivers/net/wireless/marvell/mwifiex/cfp.c
>>>> @@ -350,7 +350,7 @@ mwifiex_get_cfp(struct mwifiex_private *priv, u8 band, u16 channel, u32 freq)
>>>> }
>>>> }
>>>> if (i == sband->n_channels) {
>>>> - mwifiex_dbg(priv->adapter, ERROR,
>>>> + mwifiex_dbg(priv->adapter, WARN,
>>>> "%s: cannot find cfp by band %d\t"
>>>> "& channel=%d freq=%d\n",
>>>> __func__, band, channel, freq);
>>> I don't see how this fixes anything, care to explain? And the title is
>>> quite vague.
>> Sorry for the description maybe unclear.
>> I'm assuming the print log is expected for marvel wifi driver. Do we
>> should use 'WARN' to instead of the 'ERROR' here.
> But does that make any functional difference, isn't the warning still
> printed?
>
At least, that shouldn't be printed log by default. :)
if I read the code is correct. That only the MSG/FATAL/ERROR will output
by default.
/**
*enum mwifiex_debug_level - marvell wifi debug level
*/
enum MWIFIEX_DEBUG_LEVEL {
MWIFIEX_DBG_MSG = 0x00000001,
MWIFIEX_DBG_FATAL = 0x00000002,
MWIFIEX_DBG_ERROR = 0x00000004,
MWIFIEX_DBG_DATA = 0x00000008,
MWIFIEX_DBG_CMD = 0x00000010,
MWIFIEX_DBG_EVENT = 0x00000020,
MWIFIEX_DBG_INTR = 0x00000040,
MWIFIEX_DBG_IOCTL = 0x00000080,
MWIFIEX_DBG_MPA_D = 0x00008000,
MWIFIEX_DBG_DAT_D = 0x00010000,
MWIFIEX_DBG_CMD_D = 0x00020000,
MWIFIEX_DBG_EVT_D = 0x00040000,
MWIFIEX_DBG_FW_D = 0x00080000,
MWIFIEX_DBG_IF_D = 0x00100000,
MWIFIEX_DBG_ENTRY = 0x10000000,
MWIFIEX_DBG_WARN = 0x20000000,
MWIFIEX_DBG_INFO = 0x40000000,
MWIFIEX_DBG_DUMP = 0x80000000,
MWIFIEX_DBG_ANY = 0xffffffff
};
#define MWIFIEX_DEFAULT_DEBUG_MASK (MWIFIEX_DBG_MSG | \
MWIFIEX_DBG_FATAL | \
MWIFIEX_DBG_ERROR)
^ permalink raw reply
* [PATCH net-next v2 2/2] r8152: move calling delay_autosuspend function
From: Hayes Wang @ 2017-06-13 7:14 UTC (permalink / raw)
To: netdev; +Cc: nic_swsd, linux-kernel, linux-usb, Hayes Wang
In-Reply-To: <1394712342-15778-275-Taiwan-albertk@realtek.com>
Move calling delay_autosuspend() in rtl8152_runtime_suspend(). Calling
delay_autosuspend() as late as possible.
The original flows are
1. check if the driver/device is busy now.
2. set wake events.
3. enter runtime suspend.
If the wake event occurs between (1) and (2), the device may miss it. Besides,
to avoid the runtime resume occurs after runtime suspend immediately, move the
checking to the end of rtl8152_runtime_suspend().
Signed-off-by: Hayes Wang <hayeswang@realtek.com>
---
drivers/net/usb/r8152.c | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c
index 2d238b5..b916418 100644
--- a/drivers/net/usb/r8152.c
+++ b/drivers/net/usb/r8152.c
@@ -3752,13 +3752,6 @@ static int rtl8152_runtime_suspend(struct r8152 *tp)
if (netif_running(netdev) && test_bit(WORK_ENABLE, &tp->flags)) {
u32 rcr = 0;
- if (delay_autosuspend(tp)) {
- clear_bit(SELECTIVE_SUSPEND, &tp->flags);
- smp_mb__after_atomic();
- ret = -EBUSY;
- goto out1;
- }
-
if (netif_carrier_ok(netdev)) {
u32 ocp_data;
@@ -3792,6 +3785,11 @@ static int rtl8152_runtime_suspend(struct r8152 *tp)
ocp_write_dword(tp, MCU_TYPE_PLA, PLA_RCR, rcr);
napi_enable(napi);
}
+
+ if (delay_autosuspend(tp)) {
+ rtl8152_runtime_resume(tp);
+ ret = -EBUSY;
+ }
}
out1:
--
2.7.4
^ permalink raw reply related
* [PATCH net-next v2 1/2] r8152: split rtl8152_resume function
From: Hayes Wang @ 2017-06-13 7:14 UTC (permalink / raw)
To: netdev; +Cc: nic_swsd, linux-kernel, linux-usb, Hayes Wang
In-Reply-To: <1394712342-15778-275-Taiwan-albertk@realtek.com>
Split rtl8152_resume() into rtl8152_runtime_resume() and
rtl8152_system_resume().
Besides, replace GFP_KERNEL with GFP_NOIO for usb_submit_urb().
Signed-off-by: Hayes Wang <hayeswang@realtek.com>
---
drivers/net/usb/r8152.c | 99 ++++++++++++++++++++++++++++++-------------------
1 file changed, 61 insertions(+), 38 deletions(-)
diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c
index 5a02053..2d238b5 100644
--- a/drivers/net/usb/r8152.c
+++ b/drivers/net/usb/r8152.c
@@ -3686,6 +3686,61 @@ static bool delay_autosuspend(struct r8152 *tp)
return false;
}
+static int rtl8152_runtime_resume(struct r8152 *tp)
+{
+ struct net_device *netdev = tp->netdev;
+
+ if (netif_running(netdev) && netdev->flags & IFF_UP) {
+ struct napi_struct *napi = &tp->napi;
+
+ tp->rtl_ops.autosuspend_en(tp, false);
+ napi_disable(napi);
+ set_bit(WORK_ENABLE, &tp->flags);
+
+ if (netif_carrier_ok(netdev)) {
+ if (rtl8152_get_speed(tp) & LINK_STATUS) {
+ rtl_start_rx(tp);
+ } else {
+ netif_carrier_off(netdev);
+ tp->rtl_ops.disable(tp);
+ netif_info(tp, link, netdev, "linking down\n");
+ }
+ }
+
+ napi_enable(napi);
+ clear_bit(SELECTIVE_SUSPEND, &tp->flags);
+ smp_mb__after_atomic();
+
+ if (!list_empty(&tp->rx_done))
+ napi_schedule(&tp->napi);
+
+ usb_submit_urb(tp->intr_urb, GFP_NOIO);
+ } else {
+ if (netdev->flags & IFF_UP)
+ tp->rtl_ops.autosuspend_en(tp, false);
+
+ clear_bit(SELECTIVE_SUSPEND, &tp->flags);
+ }
+
+ return 0;
+}
+
+static int rtl8152_system_resume(struct r8152 *tp)
+{
+ struct net_device *netdev = tp->netdev;
+
+ netif_device_attach(netdev);
+
+ if (netif_running(netdev) && netdev->flags & IFF_UP) {
+ tp->rtl_ops.up(tp);
+ netif_carrier_off(netdev);
+ set_bit(WORK_ENABLE, &tp->flags);
+ usb_submit_urb(tp->intr_urb, GFP_NOIO);
+ }
+
+ return 0;
+}
+
static int rtl8152_runtime_suspend(struct r8152 *tp)
{
struct net_device *netdev = tp->netdev;
@@ -3784,50 +3839,18 @@ static int rtl8152_suspend(struct usb_interface *intf, pm_message_t message)
static int rtl8152_resume(struct usb_interface *intf)
{
struct r8152 *tp = usb_get_intfdata(intf);
- struct net_device *netdev = tp->netdev;
+ int ret;
mutex_lock(&tp->control);
- if (!test_bit(SELECTIVE_SUSPEND, &tp->flags))
- netif_device_attach(netdev);
-
- if (netif_running(netdev) && netdev->flags & IFF_UP) {
- if (test_bit(SELECTIVE_SUSPEND, &tp->flags)) {
- struct napi_struct *napi = &tp->napi;
-
- tp->rtl_ops.autosuspend_en(tp, false);
- napi_disable(napi);
- set_bit(WORK_ENABLE, &tp->flags);
- if (netif_carrier_ok(netdev)) {
- if (rtl8152_get_speed(tp) & LINK_STATUS) {
- rtl_start_rx(tp);
- } else {
- netif_carrier_off(netdev);
- tp->rtl_ops.disable(tp);
- netif_info(tp, link, netdev,
- "linking down\n");
- }
- }
- napi_enable(napi);
- clear_bit(SELECTIVE_SUSPEND, &tp->flags);
- smp_mb__after_atomic();
- if (!list_empty(&tp->rx_done))
- napi_schedule(&tp->napi);
- } else {
- tp->rtl_ops.up(tp);
- netif_carrier_off(netdev);
- set_bit(WORK_ENABLE, &tp->flags);
- }
- usb_submit_urb(tp->intr_urb, GFP_KERNEL);
- } else if (test_bit(SELECTIVE_SUSPEND, &tp->flags)) {
- if (netdev->flags & IFF_UP)
- tp->rtl_ops.autosuspend_en(tp, false);
- clear_bit(SELECTIVE_SUSPEND, &tp->flags);
- }
+ if (test_bit(SELECTIVE_SUSPEND, &tp->flags))
+ ret = rtl8152_runtime_resume(tp);
+ else
+ ret = rtl8152_system_resume(tp);
mutex_unlock(&tp->control);
- return 0;
+ return ret;
}
static int rtl8152_reset_resume(struct usb_interface *intf)
--
2.7.4
^ permalink raw reply related
* [PATCH net-next v2 0/2] r8152: adjust runtime suspend/resume
From: Hayes Wang @ 2017-06-13 7:14 UTC (permalink / raw)
To: netdev; +Cc: nic_swsd, linux-kernel, linux-usb, Hayes Wang
In-Reply-To: <1394712342-15778-272-Taiwan-albertk@realtek.com>
v2:
For #1, replace GFP_KERNEL with GFP_NOIO for usb_submit_urb().
v1:
Improve the flow about runtime suspend/resume and make the code
easy to read.
Hayes Wang (2):
r8152: split rtl8152_resume function
r8152: move calling delay_autosuspend function
drivers/net/usb/r8152.c | 107 ++++++++++++++++++++++++++++--------------------
1 file changed, 62 insertions(+), 45 deletions(-)
--
2.7.4
^ permalink raw reply
* [PATCH v3] net: phy: Make phy_ethtool_ksettings_get return void
From: Yuval Shaia @ 2017-06-13 7:09 UTC (permalink / raw)
To: isubramanian, kchudgar, qnguyen, michael.chan, f.fainelli,
bcm-kernel-feedback-list, siva.kallam, prashant, madalin.bucur,
leoli, yisen.zhuang, salil.mehta, sebastian.hesselbarth, nbd,
blogic, matthias.bgg, sergei.shtylyov, peppe.cavallaro,
alexandre.torgue, grygorii.strashko, w-kwok2, m-karicheri2,
andrew, woojung.huh, UNGLinuxDriver, gregkh, vivien.didelot,
davem, arnd, tremyfr, edumazet, yuval.shaia, yamada.masahiro,
jarod, yankejian, lipeng321, huangdaode, xieqianqian,
horms+renesas, kazuya.mizuguchi.ks, johan, dan.carpenter,
niklas.soderlund+renesas, masaru.nagai.vx, erosca, geert+renesas,
chris.brandt, ivan.khoronzhuk, mugunthanvnm, mihaela.muraru21,
tklauser, julia.lawall, mpkofron, bhumirks, stephen, netdev,
linux-arm-kernel, linuxppc-dev, linux-mediatek, linux-renesas-soc,
linux-omap, linux-usb, devel
Make return value void since function never return meaningfull value
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com>
Acked-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
---
v0 ->v1:
* These files were missing in v0
* drivers/net/ethernet/renesas/ravb_main.c
* drivers/net/ethernet/renesas/sh_eth.c
* drivers/net/ethernet/ti/netcp_ethss.c
* Add Acked-by: Sergei Shtylyov
v1 -> v2:
* Adjust to net-next tree
v2 -> v3:
* These files were missing in v1
* drivers/net/ethernet/apm/xgene-v2/ethtool.c
* drivers/net/ethernet/apm/xgene/xgene_enet_ethtool.c
* drivers/net/ethernet/broadcom/b44.c
* drivers/net/ethernet/broadcom/bcm63xx_enet.c
* drivers/net/ethernet/hisilicon/hns/hns_ethtool.c
* drivers/net/ethernet/mediatek/mtk_eth_soc.c
* drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c
* drivers/net/ethernet/ti/cpsw.c
* drivers/staging/netlogic/xlr_net.c
---
drivers/net/ethernet/apm/xgene-v2/ethtool.c | 4 +++-
drivers/net/ethernet/apm/xgene/xgene_enet_ethtool.c | 8 ++++++--
drivers/net/ethernet/broadcom/b44.c | 4 +++-
drivers/net/ethernet/broadcom/bcm63xx_enet.c | 5 ++++-
drivers/net/ethernet/broadcom/genet/bcmgenet.c | 4 +++-
drivers/net/ethernet/broadcom/tg3.c | 4 +++-
drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c | 6 ++----
drivers/net/ethernet/freescale/ucc_geth_ethtool.c | 4 +++-
drivers/net/ethernet/hisilicon/hns/hns_ethtool.c | 2 +-
drivers/net/ethernet/marvell/mv643xx_eth.c | 5 ++---
drivers/net/ethernet/mediatek/mtk_eth_soc.c | 4 +++-
drivers/net/ethernet/renesas/ravb_main.c | 14 +++++++-------
drivers/net/ethernet/renesas/sh_eth.c | 5 ++---
drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c | 5 ++---
drivers/net/ethernet/ti/cpsw.c | 8 ++++----
drivers/net/ethernet/ti/netcp_ethss.c | 8 +++-----
drivers/net/phy/phy.c | 10 +++++-----
drivers/net/usb/lan78xx.c | 2 +-
drivers/staging/netlogic/xlr_net.c | 5 ++++-
include/linux/phy.h | 4 ++--
net/dsa/slave.c | 9 +++++----
21 files changed, 68 insertions(+), 52 deletions(-)
diff --git a/drivers/net/ethernet/apm/xgene-v2/ethtool.c b/drivers/net/ethernet/apm/xgene-v2/ethtool.c
index b6666e4..d31ad82 100644
--- a/drivers/net/ethernet/apm/xgene-v2/ethtool.c
+++ b/drivers/net/ethernet/apm/xgene-v2/ethtool.c
@@ -157,7 +157,9 @@ static int xge_get_link_ksettings(struct net_device *ndev,
if (!phydev)
return -ENODEV;
- return phy_ethtool_ksettings_get(phydev, cmd);
+ phy_ethtool_ksettings_get(phydev, cmd);
+
+ return 0;
}
static int xge_set_link_ksettings(struct net_device *ndev,
diff --git a/drivers/net/ethernet/apm/xgene/xgene_enet_ethtool.c b/drivers/net/ethernet/apm/xgene/xgene_enet_ethtool.c
index 559963b..4f50f11 100644
--- a/drivers/net/ethernet/apm/xgene/xgene_enet_ethtool.c
+++ b/drivers/net/ethernet/apm/xgene/xgene_enet_ethtool.c
@@ -131,13 +131,17 @@ static int xgene_get_link_ksettings(struct net_device *ndev,
if (phydev == NULL)
return -ENODEV;
- return phy_ethtool_ksettings_get(phydev, cmd);
+ phy_ethtool_ksettings_get(phydev, cmd);
+
+ return 0;
} else if (pdata->phy_mode == PHY_INTERFACE_MODE_SGMII) {
if (pdata->mdio_driver) {
if (!phydev)
return -ENODEV;
- return phy_ethtool_ksettings_get(phydev, cmd);
+ phy_ethtool_ksettings_get(phydev, cmd);
+
+ return 0;
}
supported = SUPPORTED_1000baseT_Full | SUPPORTED_Autoneg |
diff --git a/drivers/net/ethernet/broadcom/b44.c b/drivers/net/ethernet/broadcom/b44.c
index 5b95bb4..f411936 100644
--- a/drivers/net/ethernet/broadcom/b44.c
+++ b/drivers/net/ethernet/broadcom/b44.c
@@ -1836,7 +1836,9 @@ static int b44_get_link_ksettings(struct net_device *dev,
if (bp->flags & B44_FLAG_EXTERNAL_PHY) {
BUG_ON(!dev->phydev);
- return phy_ethtool_ksettings_get(dev->phydev, cmd);
+ phy_ethtool_ksettings_get(dev->phydev, cmd);
+
+ return 0;
}
supported = (SUPPORTED_Autoneg);
diff --git a/drivers/net/ethernet/broadcom/bcm63xx_enet.c b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
index 50d88d3..ea3c906 100644
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
@@ -1453,7 +1453,10 @@ static int bcm_enet_get_link_ksettings(struct net_device *dev,
if (priv->has_phy) {
if (!dev->phydev)
return -ENODEV;
- return phy_ethtool_ksettings_get(dev->phydev, cmd);
+
+ phy_ethtool_ksettings_get(dev->phydev, cmd);
+
+ return 0;
} else {
cmd->base.autoneg = 0;
cmd->base.speed = (priv->force_speed_100) ?
diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
index a205a9f..daca1c9 100644
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
@@ -477,7 +477,9 @@ static int bcmgenet_get_link_ksettings(struct net_device *dev,
if (!priv->phydev)
return -ENODEV;
- return phy_ethtool_ksettings_get(priv->phydev, cmd);
+ phy_ethtool_ksettings_get(priv->phydev, cmd);
+
+ return 0;
}
static int bcmgenet_set_link_ksettings(struct net_device *dev,
diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c
index 537d571..d600c41 100644
--- a/drivers/net/ethernet/broadcom/tg3.c
+++ b/drivers/net/ethernet/broadcom/tg3.c
@@ -12097,7 +12097,9 @@ static int tg3_get_link_ksettings(struct net_device *dev,
if (!(tp->phy_flags & TG3_PHYFLG_IS_CONNECTED))
return -EAGAIN;
phydev = mdiobus_get_phy(tp->mdio_bus, tp->phy_addr);
- return phy_ethtool_ksettings_get(phydev, cmd);
+ phy_ethtool_ksettings_get(phydev, cmd);
+
+ return 0;
}
supported = (SUPPORTED_Autoneg);
diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c b/drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c
index 15571e2..aad825088 100644
--- a/drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c
+++ b/drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c
@@ -75,16 +75,14 @@ static char dpaa_stats_global[][ETH_GSTRING_LEN] = {
static int dpaa_get_link_ksettings(struct net_device *net_dev,
struct ethtool_link_ksettings *cmd)
{
- int err;
-
if (!net_dev->phydev) {
netdev_dbg(net_dev, "phy device not initialized\n");
return 0;
}
- err = phy_ethtool_ksettings_get(net_dev->phydev, cmd);
+ phy_ethtool_ksettings_get(net_dev->phydev, cmd);
- return err;
+ return 0;
}
static int dpaa_set_link_ksettings(struct net_device *net_dev,
diff --git a/drivers/net/ethernet/freescale/ucc_geth_ethtool.c b/drivers/net/ethernet/freescale/ucc_geth_ethtool.c
index b642990..4df282e 100644
--- a/drivers/net/ethernet/freescale/ucc_geth_ethtool.c
+++ b/drivers/net/ethernet/freescale/ucc_geth_ethtool.c
@@ -113,7 +113,9 @@ uec_get_ksettings(struct net_device *netdev, struct ethtool_link_ksettings *cmd)
if (!phydev)
return -ENODEV;
- return phy_ethtool_ksettings_get(phydev, cmd);
+ phy_ethtool_ksettings_get(phydev, cmd);
+
+ return 0;
}
static int
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c b/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c
index b8fab14..af1b15c 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c
+++ b/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c
@@ -150,7 +150,7 @@ static int hns_nic_get_link_ksettings(struct net_device *net_dev,
cmd->base.duplex = duplex;
if (net_dev->phydev)
- (void)phy_ethtool_ksettings_get(net_dev->phydev, cmd);
+ phy_ethtool_ksettings_get(net_dev->phydev, cmd);
link_stat = hns_nic_get_link(net_dev);
if (!link_stat) {
diff --git a/drivers/net/ethernet/marvell/mv643xx_eth.c b/drivers/net/ethernet/marvell/mv643xx_eth.c
index 25642de..5794d98 100644
--- a/drivers/net/ethernet/marvell/mv643xx_eth.c
+++ b/drivers/net/ethernet/marvell/mv643xx_eth.c
@@ -1501,10 +1501,9 @@ mv643xx_eth_get_link_ksettings_phy(struct mv643xx_eth_private *mp,
struct ethtool_link_ksettings *cmd)
{
struct net_device *dev = mp->dev;
- int err;
u32 supported, advertising;
- err = phy_ethtool_ksettings_get(dev->phydev, cmd);
+ phy_ethtool_ksettings_get(dev->phydev, cmd);
/*
* The MAC does not support 1000baseT_Half.
@@ -1520,7 +1519,7 @@ mv643xx_eth_get_link_ksettings_phy(struct mv643xx_eth_private *mp,
ethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,
advertising);
- return err;
+ return 0;
}
static int
diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
index 16f9755..962975d 100644
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -2056,7 +2056,9 @@ static int mtk_get_link_ksettings(struct net_device *ndev,
if (unlikely(test_bit(MTK_RESETTING, &mac->hw->state)))
return -EBUSY;
- return phy_ethtool_ksettings_get(ndev->phydev, cmd);
+ phy_ethtool_ksettings_get(ndev->phydev, cmd);
+
+ return 0;
}
static int mtk_set_link_ksettings(struct net_device *ndev,
diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c
index 784782d..5931e85 100644
--- a/drivers/net/ethernet/renesas/ravb_main.c
+++ b/drivers/net/ethernet/renesas/ravb_main.c
@@ -1076,16 +1076,16 @@ static int ravb_get_link_ksettings(struct net_device *ndev,
struct ethtool_link_ksettings *cmd)
{
struct ravb_private *priv = netdev_priv(ndev);
- int error = -ENODEV;
unsigned long flags;
- if (ndev->phydev) {
- spin_lock_irqsave(&priv->lock, flags);
- error = phy_ethtool_ksettings_get(ndev->phydev, cmd);
- spin_unlock_irqrestore(&priv->lock, flags);
- }
+ if (!ndev->phydev)
+ return -ENODEV;
- return error;
+ spin_lock_irqsave(&priv->lock, flags);
+ phy_ethtool_ksettings_get(ndev->phydev, cmd);
+ spin_unlock_irqrestore(&priv->lock, flags);
+
+ return 0;
}
static int ravb_set_link_ksettings(struct net_device *ndev,
diff --git a/drivers/net/ethernet/renesas/sh_eth.c b/drivers/net/ethernet/renesas/sh_eth.c
index 2d686cc..b2f0cea 100644
--- a/drivers/net/ethernet/renesas/sh_eth.c
+++ b/drivers/net/ethernet/renesas/sh_eth.c
@@ -1915,16 +1915,15 @@ static int sh_eth_get_link_ksettings(struct net_device *ndev,
{
struct sh_eth_private *mdp = netdev_priv(ndev);
unsigned long flags;
- int ret;
if (!ndev->phydev)
return -ENODEV;
spin_lock_irqsave(&mdp->lock, flags);
- ret = phy_ethtool_ksettings_get(ndev->phydev, cmd);
+ phy_ethtool_ksettings_get(ndev->phydev, cmd);
spin_unlock_irqrestore(&mdp->lock, flags);
- return ret;
+ return 0;
}
static int sh_eth_set_link_ksettings(struct net_device *ndev,
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c
index 16808e4..743170d 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c
@@ -273,7 +273,6 @@ static int stmmac_ethtool_get_link_ksettings(struct net_device *dev,
{
struct stmmac_priv *priv = netdev_priv(dev);
struct phy_device *phy = dev->phydev;
- int rc;
if (priv->hw->pcs & STMMAC_PCS_RGMII ||
priv->hw->pcs & STMMAC_PCS_SGMII) {
@@ -364,8 +363,8 @@ static int stmmac_ethtool_get_link_ksettings(struct net_device *dev,
"link speed / duplex setting\n", dev->name);
return -EBUSY;
}
- rc = phy_ethtool_ksettings_get(phy, cmd);
- return rc;
+ phy_ethtool_ksettings_get(phy, cmd);
+ return 0;
}
static int
diff --git a/drivers/net/ethernet/ti/cpsw.c b/drivers/net/ethernet/ti/cpsw.c
index b6a0d92..b7a0f5e 100644
--- a/drivers/net/ethernet/ti/cpsw.c
+++ b/drivers/net/ethernet/ti/cpsw.c
@@ -2170,11 +2170,11 @@ static int cpsw_get_link_ksettings(struct net_device *ndev,
struct cpsw_common *cpsw = priv->cpsw;
int slave_no = cpsw_slave_index(cpsw, priv);
- if (cpsw->slaves[slave_no].phy)
- return phy_ethtool_ksettings_get(cpsw->slaves[slave_no].phy,
- ecmd);
- else
+ if (!cpsw->slaves[slave_no].phy)
return -EOPNOTSUPP;
+
+ phy_ethtool_ksettings_get(cpsw->slaves[slave_no].phy, ecmd);
+ return 0;
}
static int cpsw_set_link_ksettings(struct net_device *ndev,
diff --git a/drivers/net/ethernet/ti/netcp_ethss.c b/drivers/net/ethernet/ti/netcp_ethss.c
index dd92950..0847a8f 100644
--- a/drivers/net/ethernet/ti/netcp_ethss.c
+++ b/drivers/net/ethernet/ti/netcp_ethss.c
@@ -1927,7 +1927,6 @@ static int keystone_get_link_ksettings(struct net_device *ndev,
struct netcp_intf *netcp = netdev_priv(ndev);
struct phy_device *phy = ndev->phydev;
struct gbe_intf *gbe_intf;
- int ret;
if (!phy)
return -EINVAL;
@@ -1939,11 +1938,10 @@ static int keystone_get_link_ksettings(struct net_device *ndev,
if (!gbe_intf->slave)
return -EINVAL;
- ret = phy_ethtool_ksettings_get(phy, cmd);
- if (!ret)
- cmd->base.port = gbe_intf->slave->phy_port_t;
+ phy_ethtool_ksettings_get(phy, cmd);
+ cmd->base.port = gbe_intf->slave->phy_port_t;
- return ret;
+ return 0;
}
static int keystone_set_link_ksettings(struct net_device *ndev,
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
index 14fc5bc..edcdf0d 100644
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -509,8 +509,8 @@ int phy_ethtool_ksettings_set(struct phy_device *phydev,
}
EXPORT_SYMBOL(phy_ethtool_ksettings_set);
-int phy_ethtool_ksettings_get(struct phy_device *phydev,
- struct ethtool_link_ksettings *cmd)
+void phy_ethtool_ksettings_get(struct phy_device *phydev,
+ struct ethtool_link_ksettings *cmd)
{
ethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,
phydev->supported);
@@ -532,8 +532,6 @@ int phy_ethtool_ksettings_get(struct phy_device *phydev,
cmd->base.autoneg = phydev->autoneg;
cmd->base.eth_tp_mdix_ctrl = phydev->mdix_ctrl;
cmd->base.eth_tp_mdix = phydev->mdix;
-
- return 0;
}
EXPORT_SYMBOL(phy_ethtool_ksettings_get);
@@ -1449,7 +1447,9 @@ int phy_ethtool_get_link_ksettings(struct net_device *ndev,
if (!phydev)
return -ENODEV;
- return phy_ethtool_ksettings_get(phydev, cmd);
+ phy_ethtool_ksettings_get(phydev, cmd);
+
+ return 0;
}
EXPORT_SYMBOL(phy_ethtool_get_link_ksettings);
diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
index 9eff97a..5833f7e 100644
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
@@ -1490,7 +1490,7 @@ static int lan78xx_get_link_ksettings(struct net_device *net,
if (ret < 0)
return ret;
- ret = phy_ethtool_ksettings_get(phydev, cmd);
+ phy_ethtool_ksettings_get(phydev, cmd);
usb_autopm_put_interface(dev->intf);
diff --git a/drivers/staging/netlogic/xlr_net.c b/drivers/staging/netlogic/xlr_net.c
index 781ef62..e05ae46 100644
--- a/drivers/staging/netlogic/xlr_net.c
+++ b/drivers/staging/netlogic/xlr_net.c
@@ -179,7 +179,10 @@ static int xlr_get_link_ksettings(struct net_device *ndev,
if (!phydev)
return -ENODEV;
- return phy_ethtool_ksettings_get(phydev, ecmd);
+
+ phy_ethtool_ksettings_get(phydev, ecmd);
+
+ return 0;
}
static int xlr_set_link_ksettings(struct net_device *ndev,
diff --git a/include/linux/phy.h b/include/linux/phy.h
index 4142422..e70360a 100644
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
@@ -874,8 +874,8 @@ void phy_start_machine(struct phy_device *phydev);
void phy_stop_machine(struct phy_device *phydev);
void phy_trigger_machine(struct phy_device *phydev, bool sync);
int phy_ethtool_sset(struct phy_device *phydev, struct ethtool_cmd *cmd);
-int phy_ethtool_ksettings_get(struct phy_device *phydev,
- struct ethtool_link_ksettings *cmd);
+void phy_ethtool_ksettings_get(struct phy_device *phydev,
+ struct ethtool_link_ksettings *cmd);
int phy_ethtool_ksettings_set(struct phy_device *phydev,
const struct ethtool_link_ksettings *cmd);
int phy_mii_ioctl(struct phy_device *phydev, struct ifreq *ifr, int cmd);
diff --git a/net/dsa/slave.c b/net/dsa/slave.c
index 5f3caee..5e45ae5 100644
--- a/net/dsa/slave.c
+++ b/net/dsa/slave.c
@@ -387,12 +387,13 @@ dsa_slave_get_link_ksettings(struct net_device *dev,
struct ethtool_link_ksettings *cmd)
{
struct dsa_slave_priv *p = netdev_priv(dev);
- int err = -EOPNOTSUPP;
- if (p->phy != NULL)
- err = phy_ethtool_ksettings_get(p->phy, cmd);
+ if (!p->phy)
+ return -EOPNOTSUPP;
- return err;
+ phy_ethtool_ksettings_get(p->phy, cmd);
+
+ return 0;
}
static int
--
2.9.4
^ permalink raw reply related
* [PATCH v3] net: phy: Make phy_ethtool_ksettings_get return void
From: Yuval Shaia @ 2017-06-13 7:09 UTC (permalink / raw)
To: isubramanian, kchudgar, qnguyen, michael.chan, f.fainelli,
bcm-kernel-feedback-list, siva.kallam, prashant, madalin.bucur,
leoli, yisen.zhuang, salil.mehta, sebastian.hesselbarth, nbd,
blogic, matthias.bgg, sergei.shtylyov, peppe.cavallaro,
alexandre.torgue, grygorii.strashko, w-kwok2, m-karicheri2,
andrew, woojung.huh, UNGLinuxDriver, gregkh, vivien.didelot,
davem, arnd, tremyfr, edumazet, yuval.shaia, yamada.masahiro
Make return value void since function never return meaningfull value
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com>
Acked-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
---
v0 ->v1:
* These files were missing in v0
* drivers/net/ethernet/renesas/ravb_main.c
* drivers/net/ethernet/renesas/sh_eth.c
* drivers/net/ethernet/ti/netcp_ethss.c
* Add Acked-by: Sergei Shtylyov
v1 -> v2:
* Adjust to net-next tree
v2 -> v3:
* These files were missing in v1
* drivers/net/ethernet/apm/xgene-v2/ethtool.c
* drivers/net/ethernet/apm/xgene/xgene_enet_ethtool.c
* drivers/net/ethernet/broadcom/b44.c
* drivers/net/ethernet/broadcom/bcm63xx_enet.c
* drivers/net/ethernet/hisilicon/hns/hns_ethtool.c
* drivers/net/ethernet/mediatek/mtk_eth_soc.c
* drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c
* drivers/net/ethernet/ti/cpsw.c
* drivers/staging/netlogic/xlr_net.c
---
drivers/net/ethernet/apm/xgene-v2/ethtool.c | 4 +++-
drivers/net/ethernet/apm/xgene/xgene_enet_ethtool.c | 8 ++++++--
drivers/net/ethernet/broadcom/b44.c | 4 +++-
drivers/net/ethernet/broadcom/bcm63xx_enet.c | 5 ++++-
drivers/net/ethernet/broadcom/genet/bcmgenet.c | 4 +++-
drivers/net/ethernet/broadcom/tg3.c | 4 +++-
drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c | 6 ++----
drivers/net/ethernet/freescale/ucc_geth_ethtool.c | 4 +++-
drivers/net/ethernet/hisilicon/hns/hns_ethtool.c | 2 +-
drivers/net/ethernet/marvell/mv643xx_eth.c | 5 ++---
drivers/net/ethernet/mediatek/mtk_eth_soc.c | 4 +++-
drivers/net/ethernet/renesas/ravb_main.c | 14 +++++++-------
drivers/net/ethernet/renesas/sh_eth.c | 5 ++---
drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c | 5 ++---
drivers/net/ethernet/ti/cpsw.c | 8 ++++----
drivers/net/ethernet/ti/netcp_ethss.c | 8 +++-----
drivers/net/phy/phy.c | 10 +++++-----
drivers/net/usb/lan78xx.c | 2 +-
drivers/staging/netlogic/xlr_net.c | 5 ++++-
include/linux/phy.h | 4 ++--
net/dsa/slave.c | 9 +++++----
21 files changed, 68 insertions(+), 52 deletions(-)
diff --git a/drivers/net/ethernet/apm/xgene-v2/ethtool.c b/drivers/net/ethernet/apm/xgene-v2/ethtool.c
index b6666e4..d31ad82 100644
--- a/drivers/net/ethernet/apm/xgene-v2/ethtool.c
+++ b/drivers/net/ethernet/apm/xgene-v2/ethtool.c
@@ -157,7 +157,9 @@ static int xge_get_link_ksettings(struct net_device *ndev,
if (!phydev)
return -ENODEV;
- return phy_ethtool_ksettings_get(phydev, cmd);
+ phy_ethtool_ksettings_get(phydev, cmd);
+
+ return 0;
}
static int xge_set_link_ksettings(struct net_device *ndev,
diff --git a/drivers/net/ethernet/apm/xgene/xgene_enet_ethtool.c b/drivers/net/ethernet/apm/xgene/xgene_enet_ethtool.c
index 559963b..4f50f11 100644
--- a/drivers/net/ethernet/apm/xgene/xgene_enet_ethtool.c
+++ b/drivers/net/ethernet/apm/xgene/xgene_enet_ethtool.c
@@ -131,13 +131,17 @@ static int xgene_get_link_ksettings(struct net_device *ndev,
if (phydev == NULL)
return -ENODEV;
- return phy_ethtool_ksettings_get(phydev, cmd);
+ phy_ethtool_ksettings_get(phydev, cmd);
+
+ return 0;
} else if (pdata->phy_mode == PHY_INTERFACE_MODE_SGMII) {
if (pdata->mdio_driver) {
if (!phydev)
return -ENODEV;
- return phy_ethtool_ksettings_get(phydev, cmd);
+ phy_ethtool_ksettings_get(phydev, cmd);
+
+ return 0;
}
supported = SUPPORTED_1000baseT_Full | SUPPORTED_Autoneg |
diff --git a/drivers/net/ethernet/broadcom/b44.c b/drivers/net/ethernet/broadcom/b44.c
index 5b95bb4..f411936 100644
--- a/drivers/net/ethernet/broadcom/b44.c
+++ b/drivers/net/ethernet/broadcom/b44.c
@@ -1836,7 +1836,9 @@ static int b44_get_link_ksettings(struct net_device *dev,
if (bp->flags & B44_FLAG_EXTERNAL_PHY) {
BUG_ON(!dev->phydev);
- return phy_ethtool_ksettings_get(dev->phydev, cmd);
+ phy_ethtool_ksettings_get(dev->phydev, cmd);
+
+ return 0;
}
supported = (SUPPORTED_Autoneg);
diff --git a/drivers/net/ethernet/broadcom/bcm63xx_enet.c b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
index 50d88d3..ea3c906 100644
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
@@ -1453,7 +1453,10 @@ static int bcm_enet_get_link_ksettings(struct net_device *dev,
if (priv->has_phy) {
if (!dev->phydev)
return -ENODEV;
- return phy_ethtool_ksettings_get(dev->phydev, cmd);
+
+ phy_ethtool_ksettings_get(dev->phydev, cmd);
+
+ return 0;
} else {
cmd->base.autoneg = 0;
cmd->base.speed = (priv->force_speed_100) ?
diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
index a205a9f..daca1c9 100644
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
@@ -477,7 +477,9 @@ static int bcmgenet_get_link_ksettings(struct net_device *dev,
if (!priv->phydev)
return -ENODEV;
- return phy_ethtool_ksettings_get(priv->phydev, cmd);
+ phy_ethtool_ksettings_get(priv->phydev, cmd);
+
+ return 0;
}
static int bcmgenet_set_link_ksettings(struct net_device *dev,
diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c
index 537d571..d600c41 100644
--- a/drivers/net/ethernet/broadcom/tg3.c
+++ b/drivers/net/ethernet/broadcom/tg3.c
@@ -12097,7 +12097,9 @@ static int tg3_get_link_ksettings(struct net_device *dev,
if (!(tp->phy_flags & TG3_PHYFLG_IS_CONNECTED))
return -EAGAIN;
phydev = mdiobus_get_phy(tp->mdio_bus, tp->phy_addr);
- return phy_ethtool_ksettings_get(phydev, cmd);
+ phy_ethtool_ksettings_get(phydev, cmd);
+
+ return 0;
}
supported = (SUPPORTED_Autoneg);
diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c b/drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c
index 15571e2..aad825088 100644
--- a/drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c
+++ b/drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c
@@ -75,16 +75,14 @@ static char dpaa_stats_global[][ETH_GSTRING_LEN] = {
static int dpaa_get_link_ksettings(struct net_device *net_dev,
struct ethtool_link_ksettings *cmd)
{
- int err;
-
if (!net_dev->phydev) {
netdev_dbg(net_dev, "phy device not initialized\n");
return 0;
}
- err = phy_ethtool_ksettings_get(net_dev->phydev, cmd);
+ phy_ethtool_ksettings_get(net_dev->phydev, cmd);
- return err;
+ return 0;
}
static int dpaa_set_link_ksettings(struct net_device *net_dev,
diff --git a/drivers/net/ethernet/freescale/ucc_geth_ethtool.c b/drivers/net/ethernet/freescale/ucc_geth_ethtool.c
index b642990..4df282e 100644
--- a/drivers/net/ethernet/freescale/ucc_geth_ethtool.c
+++ b/drivers/net/ethernet/freescale/ucc_geth_ethtool.c
@@ -113,7 +113,9 @@ uec_get_ksettings(struct net_device *netdev, struct ethtool_link_ksettings *cmd)
if (!phydev)
return -ENODEV;
- return phy_ethtool_ksettings_get(phydev, cmd);
+ phy_ethtool_ksettings_get(phydev, cmd);
+
+ return 0;
}
static int
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c b/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c
index b8fab14..af1b15c 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c
+++ b/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c
@@ -150,7 +150,7 @@ static int hns_nic_get_link_ksettings(struct net_device *net_dev,
cmd->base.duplex = duplex;
if (net_dev->phydev)
- (void)phy_ethtool_ksettings_get(net_dev->phydev, cmd);
+ phy_ethtool_ksettings_get(net_dev->phydev, cmd);
link_stat = hns_nic_get_link(net_dev);
if (!link_stat) {
diff --git a/drivers/net/ethernet/marvell/mv643xx_eth.c b/drivers/net/ethernet/marvell/mv643xx_eth.c
index 25642de..5794d98 100644
--- a/drivers/net/ethernet/marvell/mv643xx_eth.c
+++ b/drivers/net/ethernet/marvell/mv643xx_eth.c
@@ -1501,10 +1501,9 @@ mv643xx_eth_get_link_ksettings_phy(struct mv643xx_eth_private *mp,
struct ethtool_link_ksettings *cmd)
{
struct net_device *dev = mp->dev;
- int err;
u32 supported, advertising;
- err = phy_ethtool_ksettings_get(dev->phydev, cmd);
+ phy_ethtool_ksettings_get(dev->phydev, cmd);
/*
* The MAC does not support 1000baseT_Half.
@@ -1520,7 +1519,7 @@ mv643xx_eth_get_link_ksettings_phy(struct mv643xx_eth_private *mp,
ethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,
advertising);
- return err;
+ return 0;
}
static int
diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
index 16f9755..962975d 100644
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -2056,7 +2056,9 @@ static int mtk_get_link_ksettings(struct net_device *ndev,
if (unlikely(test_bit(MTK_RESETTING, &mac->hw->state)))
return -EBUSY;
- return phy_ethtool_ksettings_get(ndev->phydev, cmd);
+ phy_ethtool_ksettings_get(ndev->phydev, cmd);
+
+ return 0;
}
static int mtk_set_link_ksettings(struct net_device *ndev,
diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c
index 784782d..5931e85 100644
--- a/drivers/net/ethernet/renesas/ravb_main.c
+++ b/drivers/net/ethernet/renesas/ravb_main.c
@@ -1076,16 +1076,16 @@ static int ravb_get_link_ksettings(struct net_device *ndev,
struct ethtool_link_ksettings *cmd)
{
struct ravb_private *priv = netdev_priv(ndev);
- int error = -ENODEV;
unsigned long flags;
- if (ndev->phydev) {
- spin_lock_irqsave(&priv->lock, flags);
- error = phy_ethtool_ksettings_get(ndev->phydev, cmd);
- spin_unlock_irqrestore(&priv->lock, flags);
- }
+ if (!ndev->phydev)
+ return -ENODEV;
- return error;
+ spin_lock_irqsave(&priv->lock, flags);
+ phy_ethtool_ksettings_get(ndev->phydev, cmd);
+ spin_unlock_irqrestore(&priv->lock, flags);
+
+ return 0;
}
static int ravb_set_link_ksettings(struct net_device *ndev,
diff --git a/drivers/net/ethernet/renesas/sh_eth.c b/drivers/net/ethernet/renesas/sh_eth.c
index 2d686cc..b2f0cea 100644
--- a/drivers/net/ethernet/renesas/sh_eth.c
+++ b/drivers/net/ethernet/renesas/sh_eth.c
@@ -1915,16 +1915,15 @@ static int sh_eth_get_link_ksettings(struct net_device *ndev,
{
struct sh_eth_private *mdp = netdev_priv(ndev);
unsigned long flags;
- int ret;
if (!ndev->phydev)
return -ENODEV;
spin_lock_irqsave(&mdp->lock, flags);
- ret = phy_ethtool_ksettings_get(ndev->phydev, cmd);
+ phy_ethtool_ksettings_get(ndev->phydev, cmd);
spin_unlock_irqrestore(&mdp->lock, flags);
- return ret;
+ return 0;
}
static int sh_eth_set_link_ksettings(struct net_device *ndev,
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c
index 16808e4..743170d 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c
@@ -273,7 +273,6 @@ static int stmmac_ethtool_get_link_ksettings(struct net_device *dev,
{
struct stmmac_priv *priv = netdev_priv(dev);
struct phy_device *phy = dev->phydev;
- int rc;
if (priv->hw->pcs & STMMAC_PCS_RGMII ||
priv->hw->pcs & STMMAC_PCS_SGMII) {
@@ -364,8 +363,8 @@ static int stmmac_ethtool_get_link_ksettings(struct net_device *dev,
"link speed / duplex setting\n", dev->name);
return -EBUSY;
}
- rc = phy_ethtool_ksettings_get(phy, cmd);
- return rc;
+ phy_ethtool_ksettings_get(phy, cmd);
+ return 0;
}
static int
diff --git a/drivers/net/ethernet/ti/cpsw.c b/drivers/net/ethernet/ti/cpsw.c
index b6a0d92..b7a0f5e 100644
--- a/drivers/net/ethernet/ti/cpsw.c
+++ b/drivers/net/ethernet/ti/cpsw.c
@@ -2170,11 +2170,11 @@ static int cpsw_get_link_ksettings(struct net_device *ndev,
struct cpsw_common *cpsw = priv->cpsw;
int slave_no = cpsw_slave_index(cpsw, priv);
- if (cpsw->slaves[slave_no].phy)
- return phy_ethtool_ksettings_get(cpsw->slaves[slave_no].phy,
- ecmd);
- else
+ if (!cpsw->slaves[slave_no].phy)
return -EOPNOTSUPP;
+
+ phy_ethtool_ksettings_get(cpsw->slaves[slave_no].phy, ecmd);
+ return 0;
}
static int cpsw_set_link_ksettings(struct net_device *ndev,
diff --git a/drivers/net/ethernet/ti/netcp_ethss.c b/drivers/net/ethernet/ti/netcp_ethss.c
index dd92950..0847a8f 100644
--- a/drivers/net/ethernet/ti/netcp_ethss.c
+++ b/drivers/net/ethernet/ti/netcp_ethss.c
@@ -1927,7 +1927,6 @@ static int keystone_get_link_ksettings(struct net_device *ndev,
struct netcp_intf *netcp = netdev_priv(ndev);
struct phy_device *phy = ndev->phydev;
struct gbe_intf *gbe_intf;
- int ret;
if (!phy)
return -EINVAL;
@@ -1939,11 +1938,10 @@ static int keystone_get_link_ksettings(struct net_device *ndev,
if (!gbe_intf->slave)
return -EINVAL;
- ret = phy_ethtool_ksettings_get(phy, cmd);
- if (!ret)
- cmd->base.port = gbe_intf->slave->phy_port_t;
+ phy_ethtool_ksettings_get(phy, cmd);
+ cmd->base.port = gbe_intf->slave->phy_port_t;
- return ret;
+ return 0;
}
static int keystone_set_link_ksettings(struct net_device *ndev,
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
index 14fc5bc..edcdf0d 100644
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -509,8 +509,8 @@ int phy_ethtool_ksettings_set(struct phy_device *phydev,
}
EXPORT_SYMBOL(phy_ethtool_ksettings_set);
-int phy_ethtool_ksettings_get(struct phy_device *phydev,
- struct ethtool_link_ksettings *cmd)
+void phy_ethtool_ksettings_get(struct phy_device *phydev,
+ struct ethtool_link_ksettings *cmd)
{
ethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported,
phydev->supported);
@@ -532,8 +532,6 @@ int phy_ethtool_ksettings_get(struct phy_device *phydev,
cmd->base.autoneg = phydev->autoneg;
cmd->base.eth_tp_mdix_ctrl = phydev->mdix_ctrl;
cmd->base.eth_tp_mdix = phydev->mdix;
-
- return 0;
}
EXPORT_SYMBOL(phy_ethtool_ksettings_get);
@@ -1449,7 +1447,9 @@ int phy_ethtool_get_link_ksettings(struct net_device *ndev,
if (!phydev)
return -ENODEV;
- return phy_ethtool_ksettings_get(phydev, cmd);
+ phy_ethtool_ksettings_get(phydev, cmd);
+
+ return 0;
}
EXPORT_SYMBOL(phy_ethtool_get_link_ksettings);
diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
index 9eff97a..5833f7e 100644
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
@@ -1490,7 +1490,7 @@ static int lan78xx_get_link_ksettings(struct net_device *net,
if (ret < 0)
return ret;
- ret = phy_ethtool_ksettings_get(phydev, cmd);
+ phy_ethtool_ksettings_get(phydev, cmd);
usb_autopm_put_interface(dev->intf);
diff --git a/drivers/staging/netlogic/xlr_net.c b/drivers/staging/netlogic/xlr_net.c
index 781ef62..e05ae46 100644
--- a/drivers/staging/netlogic/xlr_net.c
+++ b/drivers/staging/netlogic/xlr_net.c
@@ -179,7 +179,10 @@ static int xlr_get_link_ksettings(struct net_device *ndev,
if (!phydev)
return -ENODEV;
- return phy_ethtool_ksettings_get(phydev, ecmd);
+
+ phy_ethtool_ksettings_get(phydev, ecmd);
+
+ return 0;
}
static int xlr_set_link_ksettings(struct net_device *ndev,
diff --git a/include/linux/phy.h b/include/linux/phy.h
index 4142422..e70360a 100644
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
@@ -874,8 +874,8 @@ void phy_start_machine(struct phy_device *phydev);
void phy_stop_machine(struct phy_device *phydev);
void phy_trigger_machine(struct phy_device *phydev, bool sync);
int phy_ethtool_sset(struct phy_device *phydev, struct ethtool_cmd *cmd);
-int phy_ethtool_ksettings_get(struct phy_device *phydev,
- struct ethtool_link_ksettings *cmd);
+void phy_ethtool_ksettings_get(struct phy_device *phydev,
+ struct ethtool_link_ksettings *cmd);
int phy_ethtool_ksettings_set(struct phy_device *phydev,
const struct ethtool_link_ksettings *cmd);
int phy_mii_ioctl(struct phy_device *phydev, struct ifreq *ifr, int cmd);
diff --git a/net/dsa/slave.c b/net/dsa/slave.c
index 5f3caee..5e45ae5 100644
--- a/net/dsa/slave.c
+++ b/net/dsa/slave.c
@@ -387,12 +387,13 @@ dsa_slave_get_link_ksettings(struct net_device *dev,
struct ethtool_link_ksettings *cmd)
{
struct dsa_slave_priv *p = netdev_priv(dev);
- int err = -EOPNOTSUPP;
- if (p->phy != NULL)
- err = phy_ethtool_ksettings_get(p->phy, cmd);
+ if (!p->phy)
+ return -EOPNOTSUPP;
- return err;
+ phy_ethtool_ksettings_get(p->phy, cmd);
+
+ return 0;
}
static int
--
2.9.4
^ permalink raw reply related
* Re: wlcore: spi: remove unnecessary variable
From: Kalle Valo @ 2017-06-13 7:07 UTC (permalink / raw)
To: Gustavo A. R. Silva
Cc: linux-wireless, netdev, linux-kernel, Gustavo A. R. Silva
In-Reply-To: <20170609032430.GA7432@embeddedgus>
"Gustavo A. R. Silva" <garsilva@embeddedor.com> wrote:
> Remove unnecessary variable and refactor the code.
>
> Addresses-Coverity-ID: 1365000
> Signed-off-by: Gustavo A. R. Silva <garsilva@embeddedor.com>
Patch applied to wireless-drivers-next.git, thanks.
c48c281e7236 wlcore: spi: remove unnecessary variable
--
https://patchwork.kernel.org/patch/9777073/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
^ permalink raw reply
* Re: [PATCHv5] wlcore: add wl1285 compatible
From: Kalle Valo @ 2017-06-13 7:06 UTC (permalink / raw)
To: Sebastian Reichel; +Cc: linux-wireless, netdev, linux-kernel, Sebastian Reichel
In-Reply-To: <20170608205000.3268-1-sebastian.reichel@collabora.co.uk>
Sebastian Reichel <sebastian.reichel@collabora.co.uk> wrote:
> Motorola Droid 4 uses a WL 1285C. With differences between
> chips not being public let's add explicit binding for wl1285
> instead of relying on wl1283 being very similar.
>
> Reviewed-by: Rob Herring <robh@kernel.org>
> Acked-by: Kalle Valo <kvalo@codeaurora.org>
> Acked-by: Tony Lindgren <tony@atomide.com>
> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
Patch applied to wireless-drivers-next.git, thanks.
078b30da3f07 wlcore: add wl1285 compatible
--
https://patchwork.kernel.org/patch/9776481/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
^ permalink raw reply
* Re: mwifiex: Replace semaphore async_sem with mutex
From: Kalle Valo @ 2017-06-13 7:05 UTC (permalink / raw)
To: Binoy Jayan
Cc: Binoy Jayan, linux-kernel, Arnd Bergmann, Rajendra, Mark Brown,
Amitkumar Karwar, Nishant Sarmukadam, Ganapathi Bhat, Xinming Hu,
linux-wireless, netdev
In-Reply-To: <1496916183-4097-1-git-send-email-binoy.jayan@linaro.org>
Binoy Jayan <binoy.jayan@linaro.org> wrote:
> The semaphore 'async_sem' is used as a simple mutex, so
> it should be written as one. Semaphores are going away in the future.
>
> Signed-off-by: Binoy Jayan <binoy.jayan@linaro.org>
> Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Patch applied to wireless-drivers-next.git, thanks.
1abf9ae719f6 mwifiex: Replace semaphore async_sem with mutex
--
https://patchwork.kernel.org/patch/9774361/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
^ permalink raw reply
* Re: [PATCH] mwifiex: fixes the trivial print
From: Kalle Valo @ 2017-06-13 7:04 UTC (permalink / raw)
To: Caesar Wang
Cc: amitkarwar, huxm, nishants, gbhat, linux-wireless, netdev,
linux-kernel, briannorris, jeffy.chen
In-Reply-To: <b5621250-c9c8-b413-0dae-88b326c729bf@rock-chips.com>
Caesar Wang <wxt@rock-chips.com> writes:
> Kalle,
>
> 在 2017年06月13日 14:28, Kalle Valo 写道:
>> Caesar Wang <wxt@rock-chips.com> writes:
>>
>>> We have always met the unused log be printed as following.
>>>
>>> ...
>>> [23193.523182] mwifiex_pcie 0000:01:00.0: mwifiex_get_cfp:
>>> cannot find cfp by band 2 & channel=13 freq=0
>>> [23378.633684] mwifiex_pcie 0000:01:00.0: mwifiex_get_cfp:
>>> cannot find cfp by band 2 & channel=13 freq=0
>>>
>>> Maybe that's related to wifi regdom, since wifi default area
>>> was US and didn't support 12~14 channels.
>>>
>>> As Frequencies:
>>> * 2412 MHz [1] (30.0 dBm)
>>> * 2417 MHz [2] (30.0 dBm)
>>> * 2422 MHz [3] (30.0 dBm)
>>> * 2427 MHz [4] (30.0 dBm)
>>> * 2432 MHz [5] (30.0 dBm)
>>> * 2437 MHz [6] (30.0 dBm)
>>> * 2442 MHz [7] (30.0 dBm)
>>> * 2447 MHz [8] (30.0 dBm)
>>> * 2452 MHz [9] (30.0 dBm)
>>> * 2457 MHz [10] (30.0 dBm)
>>> * 2462 MHz [11] (30.0 dBm)
>>> * 2467 MHz [12] (disabled)
>>> * 2472 MHz [13] (disabled)
>>> * 2484 MHz [14] (disabled)
>>>
>>> Signed-off-by: Caesar Wang <wxt@rock-chips.com>
>>> ---
>>>
>>> drivers/net/wireless/marvell/mwifiex/cfp.c | 2 +-
>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/net/wireless/marvell/mwifiex/cfp.c b/drivers/net/wireless/marvell/mwifiex/cfp.c
>>> index 1ff2205..6e29943 100644
>>> --- a/drivers/net/wireless/marvell/mwifiex/cfp.c
>>> +++ b/drivers/net/wireless/marvell/mwifiex/cfp.c
>>> @@ -350,7 +350,7 @@ mwifiex_get_cfp(struct mwifiex_private *priv, u8 band, u16 channel, u32 freq)
>>> }
>>> }
>>> if (i == sband->n_channels) {
>>> - mwifiex_dbg(priv->adapter, ERROR,
>>> + mwifiex_dbg(priv->adapter, WARN,
>>> "%s: cannot find cfp by band %d\t"
>>> "& channel=%d freq=%d\n",
>>> __func__, band, channel, freq);
>> I don't see how this fixes anything, care to explain? And the title is
>> quite vague.
>
> Sorry for the description maybe unclear.
> I'm assuming the print log is expected for marvel wifi driver. Do we
> should use 'WARN' to instead of the 'ERROR' here.
But does that make any functional difference, isn't the warning still
printed?
--
Kalle Valo
^ permalink raw reply
* Re: [wireless-next] qtnfmac: check band before allocating cmd_skb to avoid resource leak
From: Kalle Valo @ 2017-06-13 7:02 UTC (permalink / raw)
To: Colin Ian King
Cc: Igor Mitsyanko, Avinash Patil, Sergey Matyukevich, Dmitrii Lebed,
Huizhao Wang, linux-wireless, netdev, kernel-janitors,
linux-kernel
In-Reply-To: <20170602154045.28948-1-colin.king@canonical.com>
Colin Ian King <colin.king@canonical.com> wrote:
> From: Colin Ian King <colin.king@canonical.com>
>
> The current code allocates cmd_skb and then will leak this if band->band
> is an illegal value. It is simpler to sanity check the band first before
> allocating cmd_skb so that we don't have to free cmd_skb if an invalid
> band occurs.
>
> Detected by CoverityScan, CID#1437561 ("Resource Leak")
>
> Signed-off-by: Colin Ian King <colin.king@canonical.com>
> Reviewed-by: Igor Mitsyanko <igor.mitsyanko.os@quantenna.com>
Patch applied to wireless-drivers-next.git, thanks.
bc0384eedb66 qtnfmac: check band before allocating cmd_skb to avoid resource leak
--
https://patchwork.kernel.org/patch/9762863/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox