* [PATCH net-next 00/11] skb_put_zero() used to optimize code @ 2017-06-14 14:30 yuan linyu 2017-06-14 14:42 ` Johannes Berg 0 siblings, 1 reply; 10+ messages in thread From: yuan linyu @ 2017-06-14 14:30 UTC (permalink / raw) To: netdev; +Cc: David S . Miller, yuan linyu From: yuan linyu <Linyu.Yuan@alcatel-sbell.com.cn> yuan linyu (11): ipv6: skb_put_zero() used to optimize code ipv4: skb_put_zero() used to optimize code ncsi: skb_put_zero() used to optimize code dsa: skb_put_zero() used to optimize code key: skb_put_zero() used to optimize code openvswitch: skb_put_zero() used to optimize code batman-adv: skb_put_zero() used to optimize code bridge: skb_put_zero() used to optimize code sctp: skb_put_zero() used to optimize code atm: skb_put_zero() used to optimize code qrtr: skb_put_zero() used to optimize code net/atm/signaling.c | 3 +-- net/batman-adv/bat_v_elp.c | 3 +-- net/bridge/netfilter/nft_reject_bridge.c | 6 ++---- net/dsa/tag_trailer.c | 3 +-- net/ipv4/ipconfig.c | 3 +-- net/ipv4/netfilter/nf_reject_ipv4.c | 3 +-- net/ipv6/mcast.c | 3 +-- net/ipv6/ndisc.c | 13 ++---------- net/key/af_key.c | 12 ++++------- net/ncsi/ncsi-cmd.c | 36 +++++++++++--------------------- net/openvswitch/datapath.c | 2 +- net/qrtr/qrtr.c | 9 +++----- net/sctp/output.c | 2 +- 13 files changed, 31 insertions(+), 67 deletions(-) -- 2.7.4 ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH net-next 00/11] skb_put_zero() used to optimize code 2017-06-14 14:30 [PATCH net-next 00/11] skb_put_zero() used to optimize code yuan linyu @ 2017-06-14 14:42 ` Johannes Berg 2017-06-14 15:00 ` yuan linyu 0 siblings, 1 reply; 10+ messages in thread From: Johannes Berg @ 2017-06-14 14:42 UTC (permalink / raw) To: yuan linyu, netdev; +Cc: David S . Miller, yuan linyu On Wed, 2017-06-14 at 22:30 +0800, yuan linyu wrote: > From: yuan linyu <Linyu.Yuan@alcatel-sbell.com.cn> > > > yuan linyu (11): > ipv6: skb_put_zero() used to optimize code > ipv4: skb_put_zero() used to optimize code > ncsi: skb_put_zero() used to optimize code > dsa: skb_put_zero() used to optimize code > key: skb_put_zero() used to optimize code > openvswitch: skb_put_zero() used to optimize code > batman-adv: skb_put_zero() used to optimize code > bridge: skb_put_zero() used to optimize code > sctp: skb_put_zero() used to optimize code > atm: skb_put_zero() used to optimize code > qrtr: skb_put_zero() used to optimize code Hmm. I guess my spatch missed these because of the casts present in them. Surely you didn't do them by hand, so maybe you should provide a single big patch with the spatch? johannes ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH net-next 00/11] skb_put_zero() used to optimize code 2017-06-14 14:42 ` Johannes Berg @ 2017-06-14 15:00 ` yuan linyu 2017-06-14 16:29 ` Johannes Berg 0 siblings, 1 reply; 10+ messages in thread From: yuan linyu @ 2017-06-14 15:00 UTC (permalink / raw) To: Johannes Berg, netdev; +Cc: David S . Miller, yuan linyu On 三, 2017-06-14 at 16:42 +0200, Johannes Berg wrote: > On Wed, 2017-06-14 at 22:30 +0800, yuan linyu wrote: > > > > From: yuan linyu <Linyu.Yuan@alcatel-sbell.com.cn> > > > > > > yuan linyu (11): > > ipv6: skb_put_zero() used to optimize code > > ipv4: skb_put_zero() used to optimize code > > ncsi: skb_put_zero() used to optimize code > > dsa: skb_put_zero() used to optimize code > > key: skb_put_zero() used to optimize code > > openvswitch: skb_put_zero() used to optimize code > > batman-adv: skb_put_zero() used to optimize code > > bridge: skb_put_zero() used to optimize code > > sctp: skb_put_zero() used to optimize code > > atm: skb_put_zero() used to optimize code > > qrtr: skb_put_zero() used to optimize code > Hmm. I guess my spatch missed these because of the casts present in > them. > > Surely you didn't do them by hand, so maybe you should provide a single > big patch with the spatch? sorry, I do them by hand. last time when i try to change ndisc.c, david adhern suggest to use skb_put_zero(). > > johannes ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH net-next 00/11] skb_put_zero() used to optimize code 2017-06-14 15:00 ` yuan linyu @ 2017-06-14 16:29 ` Johannes Berg 2017-06-14 16:31 ` Johannes Berg 0 siblings, 1 reply; 10+ messages in thread From: Johannes Berg @ 2017-06-14 16:29 UTC (permalink / raw) To: cugyly, netdev; +Cc: David S . Miller, yuan linyu On Wed, 2017-06-14 at 23:00 +0800, yuan linyu wrote: > sorry, I do them by hand. oh, ok. This seems to work: @@ identifier p; expression len; expression skb; type t; @@ -p = (t)skb_put(skb, len); -memset(p, 0, len); +p = (t)skb_put_zero(skb, len); johannes ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH net-next 00/11] skb_put_zero() used to optimize code 2017-06-14 16:29 ` Johannes Berg @ 2017-06-14 16:31 ` Johannes Berg 2017-06-14 19:38 ` David Miller 2017-06-14 23:45 ` YUAN Linyu 0 siblings, 2 replies; 10+ messages in thread From: Johannes Berg @ 2017-06-14 16:31 UTC (permalink / raw) To: cugyly, netdev; +Cc: David S . Miller, yuan linyu On Wed, 2017-06-14 at 18:29 +0200, Johannes Berg wrote: > On Wed, 2017-06-14 at 23:00 +0800, yuan linyu wrote: > > > sorry, I do them by hand. > > oh, ok. > > This seems to work: > > @@ > identifier p; > expression len; > expression skb; > type t; > @@ > -p = (t)skb_put(skb, len); > -memset(p, 0, len); > +p = (t)skb_put_zero(skb, len); Nope, still didn't find everything - not the batman and atm cases for example. But still a few more, I think that you didn't find, e.g. in mac80211. Anyway - I think none of this is really critical. johannes ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH net-next 00/11] skb_put_zero() used to optimize code 2017-06-14 16:31 ` Johannes Berg @ 2017-06-14 19:38 ` David Miller 2017-06-14 20:11 ` Johannes Berg 2017-06-14 23:45 ` YUAN Linyu 1 sibling, 1 reply; 10+ messages in thread From: David Miller @ 2017-06-14 19:38 UTC (permalink / raw) To: johannes; +Cc: cugyly, netdev, Linyu.Yuan From: Johannes Berg <johannes@sipsolutions.net> Date: Wed, 14 Jun 2017 18:31:48 +0200 > On Wed, 2017-06-14 at 18:29 +0200, Johannes Berg wrote: >> On Wed, 2017-06-14 at 23:00 +0800, yuan linyu wrote: >> >> > sorry, I do them by hand. >> >> oh, ok. >> >> This seems to work: >> >> @@ >> identifier p; >> expression len; >> expression skb; >> type t; >> @@ >> -p = (t)skb_put(skb, len); >> -memset(p, 0, len); >> +p = (t)skb_put_zero(skb, len); > > Nope, still didn't find everything - not the batman and atm cases for > example. But still a few more, I think that you didn't find, e.g. in > mac80211. > > Anyway - I think none of this is really critical. What do you think about Stephen Hemminger's feedback to make skb_put_zero() return "void *". It will avoid a lot of casts and make the conversions look nicer. I'll also defer on this patch series until we have the spatch thing which can catch all of them. Thanks. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH net-next 00/11] skb_put_zero() used to optimize code 2017-06-14 19:38 ` David Miller @ 2017-06-14 20:11 ` Johannes Berg 2017-06-14 20:15 ` David Miller 0 siblings, 1 reply; 10+ messages in thread From: Johannes Berg @ 2017-06-14 20:11 UTC (permalink / raw) To: David Miller; +Cc: cugyly, netdev, Linyu.Yuan On Wed, 2017-06-14 at 15:38 -0400, David Miller wrote: > What do you think about Stephen Hemminger's feedback to make > skb_put_zero() return "void *". It will avoid a lot of casts and > make the conversions look nicer. I think it's a good idea. I can send a patch, and remove some casts where they exist - I guess we could also do it even for skb_put() eventually. > I'll also defer on this patch series until we have the spatch thing > which can catch all of them. I think I have something that covers most cases, will send out an RFC in a minute (since I'm not sure I was able to build it all yet). Note that some of the cases like in ipv6/ndisc.c certainly can't be done automatically, they look correct but are more complicated because there's not just a single big memset(), but they're doing it piece by piece (fill some bytes, clear some others, etc.) Might be worth checking which aren't covered by the spatch. johannes ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH net-next 00/11] skb_put_zero() used to optimize code 2017-06-14 20:11 ` Johannes Berg @ 2017-06-14 20:15 ` David Miller 0 siblings, 0 replies; 10+ messages in thread From: David Miller @ 2017-06-14 20:15 UTC (permalink / raw) To: johannes; +Cc: cugyly, netdev, Linyu.Yuan From: Johannes Berg <johannes@sipsolutions.net> Date: Wed, 14 Jun 2017 22:11:54 +0200 > On Wed, 2017-06-14 at 15:38 -0400, David Miller wrote: > >> What do you think about Stephen Hemminger's feedback to make >> skb_put_zero() return "void *". It will avoid a lot of casts and >> make the conversions look nicer. > > I think it's a good idea. I can send a patch, and remove some casts > where they exist - I guess we could also do it even for skb_put() > eventually. > >> I'll also defer on this patch series until we have the spatch thing >> which can catch all of them. > > I think I have something that covers most cases, will send out an RFC > in a minute (since I'm not sure I was able to build it all yet). All sounds great. > Note that some of the cases like in ipv6/ndisc.c certainly can't be > done automatically, they look correct but are more complicated because > there's not just a single big memset(), but they're doing it piece by > piece (fill some bytes, clear some others, etc.) Might be worth > checking which aren't covered by the spatch. Understood. ^ permalink raw reply [flat|nested] 10+ messages in thread
* RE: [PATCH net-next 00/11] skb_put_zero() used to optimize code 2017-06-14 16:31 ` Johannes Berg 2017-06-14 19:38 ` David Miller @ 2017-06-14 23:45 ` YUAN Linyu 2017-06-15 6:58 ` Johannes Berg 1 sibling, 1 reply; 10+ messages in thread From: YUAN Linyu @ 2017-06-14 23:45 UTC (permalink / raw) To: Johannes Berg, cugyly@163.com, netdev@vger.kernel.org; +Cc: David S . Miller > -----Original Message----- > From: netdev-owner@vger.kernel.org [mailto:netdev-owner@vger.kernel.org] > On Behalf Of Johannes Berg > Sent: Thursday, June 15, 2017 12:32 AM > To: cugyly@163.com; netdev@vger.kernel.org > Cc: David S . Miller; YUAN Linyu > Subject: Re: [PATCH net-next 00/11] skb_put_zero() used to optimize code > > On Wed, 2017-06-14 at 18:29 +0200, Johannes Berg wrote: > > On Wed, 2017-06-14 at 23:00 +0800, yuan linyu wrote: > > > > > sorry, I do them by hand. > > > > oh, ok. > > > > This seems to work: > > > > @@ > > identifier p; > > expression len; > > expression skb; > > type t; > > @@ > > -p = (t)skb_put(skb, len); > > -memset(p, 0, len); > > +p = (t)skb_put_zero(skb, len); > > Nope, still didn't find everything - not the batman and atm cases for > example. But still a few more, I think that you didn't find, e.g. in > mac80211. Yes, I thought you already done in mac80211 > > Anyway - I think none of this is really critical. > > johannes ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH net-next 00/11] skb_put_zero() used to optimize code 2017-06-14 23:45 ` YUAN Linyu @ 2017-06-15 6:58 ` Johannes Berg 0 siblings, 0 replies; 10+ messages in thread From: Johannes Berg @ 2017-06-15 6:58 UTC (permalink / raw) To: YUAN Linyu, cugyly@163.com, netdev@vger.kernel.org; +Cc: David S . Miller On Wed, 2017-06-14 at 23:45 +0000, YUAN Linyu wrote: > > > > But still a few more, I think that you didn't find, e.g. > > in mac80211. > > Yes, I thought you already done in mac80211 So did I, but I also only applied my spatch :) johannes ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2017-06-15 6:58 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2017-06-14 14:30 [PATCH net-next 00/11] skb_put_zero() used to optimize code yuan linyu 2017-06-14 14:42 ` Johannes Berg 2017-06-14 15:00 ` yuan linyu 2017-06-14 16:29 ` Johannes Berg 2017-06-14 16:31 ` Johannes Berg 2017-06-14 19:38 ` David Miller 2017-06-14 20:11 ` Johannes Berg 2017-06-14 20:15 ` David Miller 2017-06-14 23:45 ` YUAN Linyu 2017-06-15 6:58 ` Johannes Berg
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).