1. 21 11月, 2016 4 次提交
  2. 19 11月, 2016 21 次提交
  3. 18 11月, 2016 6 次提交
    • A
      netns: make struct pernet_operations::id unsigned int · c7d03a00
      Alexey Dobriyan 提交于
      Make struct pernet_operations::id unsigned.
      
      There are 2 reasons to do so:
      
      1)
      This field is really an index into an zero based array and
      thus is unsigned entity. Using negative value is out-of-bound
      access by definition.
      
      2)
      On x86_64 unsigned 32-bit data which are mixed with pointers
      via array indexing or offsets added or subtracted to pointers
      are preffered to signed 32-bit data.
      
      "int" being used as an array index needs to be sign-extended
      to 64-bit before being used.
      
      	void f(long *p, int i)
      	{
      		g(p[i]);
      	}
      
        roughly translates to
      
      	movsx	rsi, esi
      	mov	rdi, [rsi+...]
      	call 	g
      
      MOVSX is 3 byte instruction which isn't necessary if the variable is
      unsigned because x86_64 is zero extending by default.
      
      Now, there is net_generic() function which, you guessed it right, uses
      "int" as an array index:
      
      	static inline void *net_generic(const struct net *net, int id)
      	{
      		...
      		ptr = ng->ptr[id - 1];
      		...
      	}
      
      And this function is used a lot, so those sign extensions add up.
      
      Patch snipes ~1730 bytes on allyesconfig kernel (without all junk
      messing with code generation):
      
      	add/remove: 0/0 grow/shrink: 70/598 up/down: 396/-2126 (-1730)
      
      Unfortunately some functions actually grow bigger.
      This is a semmingly random artefact of code generation with register
      allocator being used differently. gcc decides that some variable
      needs to live in new r8+ registers and every access now requires REX
      prefix. Or it is shifted into r12, so [r12+0] addressing mode has to be
      used which is longer than [r8]
      
      However, overall balance is in negative direction:
      
      	add/remove: 0/0 grow/shrink: 70/598 up/down: 396/-2126 (-1730)
      	function                                     old     new   delta
      	nfsd4_lock                                  3886    3959     +73
      	tipc_link_build_proto_msg                   1096    1140     +44
      	mac80211_hwsim_new_radio                    2776    2808     +32
      	tipc_mon_rcv                                1032    1058     +26
      	svcauth_gss_legacy_init                     1413    1429     +16
      	tipc_bcbase_select_primary                   379     392     +13
      	nfsd4_exchange_id                           1247    1260     +13
      	nfsd4_setclientid_confirm                    782     793     +11
      		...
      	put_client_renew_locked                      494     480     -14
      	ip_set_sockfn_get                            730     716     -14
      	geneve_sock_add                              829     813     -16
      	nfsd4_sequence_done                          721     703     -18
      	nlmclnt_lookup_host                          708     686     -22
      	nfsd4_lockt                                 1085    1063     -22
      	nfs_get_client                              1077    1050     -27
      	tcf_bpf_init                                1106    1076     -30
      	nfsd4_encode_fattr                          5997    5930     -67
      	Total: Before=154856051, After=154854321, chg -0.00%
      Signed-off-by: NAlexey Dobriyan <adobriyan@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c7d03a00
    • L
      net: stmmac: replace if (netif_msg_type) by their netif_xxx counterpart · b3e51069
      LABBE Corentin 提交于
      As sugested by Joe Perches, we could replace all
      if (netif_msg_type(priv)) dev_xxx(priv->devices, ...)
      by the simpler macro netif_xxx(priv, hw, priv->dev, ...)
      Signed-off-by: NCorentin Labbe <clabbe.montjoie@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b3e51069
    • L
      net: stmmac: replace hardcoded function name by __func__ · de9a2165
      LABBE Corentin 提交于
      Some printing have the function name hardcoded.
      It is better to use __func__ instead.
      Signed-off-by: NCorentin Labbe <clabbe.montjoie@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      de9a2165
    • L
      net: stmmac: replace all pr_xxx by their netdev_xxx counterpart · 38ddc59d
      LABBE Corentin 提交于
      The stmmac driver use lots of pr_xxx functions to print information.
      This is bad since we cannot know which device logs the information.
      (moreover if two stmmac device are present)
      
      Furthermore, it seems that it assumes wrongly that all logs will always
      be subsequent by using a dev_xxx then some indented pr_xxx like this:
      kernel: sun7i-dwmac 1c50000.ethernet: no reset control found
      kernel:  Ring mode enabled
      kernel:  No HW DMA feature register supported
      kernel:  Normal descriptors
      kernel:  TX Checksum insertion supported
      
      So this patch replace all pr_xxx by their netdev_xxx counterpart.
      Excepts for some printing where netdev "cause" unpretty output like:
      sun7i-dwmac 1c50000.ethernet (unnamed net_device) (uninitialized): no reset control found
      In those case, I keep dev_xxx.
      
      In the same time I remove some "stmmac:" print since
      this will be a duplicate with that dev_xxx displays.
      Signed-off-by: NCorentin Labbe <clabbe.montjoie@gmail.com>
      Acked-by: NGiuseppe Cavallaro <peppe.cavallaro@st.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      38ddc59d
    • E
      net/mlx5e: remove napi_hash_del() calls · d30d9ccb
      Eric Dumazet 提交于
      Calling napi_hash_del() after netif_napi_del() is pointless.
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Cc: Saeed Mahameed <saeedm@mellanox.com>
      Acked-by: NSaeed Mahameed <saeedm@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d30d9ccb
    • E
      net/mlx4_en: remove napi_hash_del() call · bb07fafa
      Eric Dumazet 提交于
      There is no need calling napi_hash_del()+synchronize_rcu() before
      calling netif_napi_del()
      
      netif_napi_del() does this already.
      
      Using napi_hash_del() in a driver is useful only when dealing with
      a batch of NAPI structures, so that a single synchronize_rcu() can
      be used. mlx4_en_deactivate_cq() is deactivating a single NAPI.
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Cc: Tariq Toukan <tariqt@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      bb07fafa
  4. 17 11月, 2016 9 次提交