1. 02 7月, 2012 4 次提交
  2. 01 7月, 2012 6 次提交
    • G
      phy: add the EEE support and the way to access to the MMD registers. · a59a4d19
      Giuseppe CAVALLARO 提交于
      This patch adds the support for the Energy-Efficient Ethernet (EEE)
      to the Physical Abstraction Layer.
      To support the EEE we have to access to the MMD registers 3.20 and
      7.60/61. So two new functions have been added to read/write the MMD
      registers (clause 45).
      
      An Ethernet driver (I tested the stmmac) can invoke the phy_init_eee to properly
      check if the EEE is supported by the PHYs and it can also set the clock
      stop enable bit in the 3.0 register.
      The phy_get_eee_err can be used for reporting the number of time where
      the PHY failed to complete its normal wake sequence.
      
      In the end, this patch also adds the EEE ethtool support implementing:
       o phy_ethtool_set_eee
       o phy_ethtool_get_eee
      
      v1: initial patch
      v2: fixed some errors especially on naming convention
      v3: renamed again the mmd read/write functions thank to Ben's feedback
      v4: moved file to phy.c and added the ethtool support.
      v5: fixed phy_adv_to_eee, phy_eee_to_supported, phy_eee_to_adv return
          values according to ethtool API (thanks to Ben's feedback).
          Renamed some macros to avoid too long names.
      v6: fixed kernel-doc comments to be properly parsed.
          Fixed the phy_init_eee function: we need to check which link mode
          was autonegotiated and then the corresponding bits in 7.60 and 7.61
          registers.
      v7: reviewed the way to get the negotiated settings.
      v8: fixed a problem in the phy_init_eee return value erroneously added
          when included the phy_read_status call.
      v9: do not remove the MDIO_AN_EEE_ADV_100TX and MDIO_AN_EEE_ADV_1000T
          and fixed the eee_{cap,lp,adv} declaration as "int" instead of u16.
      Signed-off-by: NGiuseppe Cavallaro <peppe.cavallaro@st.com>
      Reviewed-by: NBen Hutchings <bhutchings@solarflare.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a59a4d19
    • G
      stmmac: add the Energy Efficient Ethernet support · d765955d
      Giuseppe CAVALLARO 提交于
      This patch adds the Energy Efficient Ethernet support to the stmmac.
      
      Please see the driver's documentation for further details about this support
      in the driver.
      
      Thanks also goes to Rayagond Kokatanur for his first implementation.
      
      Note:
       to clearly manage and expose the lpi interrupt status and eee ethtool
       stats I've had to do some modifications to the driver's design and I
       found really useful to move other parts of the code (e.g. mmc irq stat)
       in the main directly. So this means that some core has been reworked
       to introduce the EEE.
      
      v1: initial patch
      v2: fixed some sparse issues (typos)
      v3: erroneously sent the v2 renamed as v3
      v4:
      	o Fixed the return value of the stmmac_eee_init as suggested by D.Miller
      	o Totally reviewed the ethtool support for EEE
      	o Added a new internal parameter to tune the SW timer for TX LPI.
      v5: do not change any eee setting in case of the stmmac_ethtool_op_set_eee fails
          (it has to return -EOPNOTSUPP in that case).
      Signed-off-by: NGiuseppe Cavallaro <peppe.cavallaro@st.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d765955d
    • G
      stmmac: update the driver Documentation and add EEE · 0ec2ccd0
      Giuseppe CAVALLARO 提交于
      This patch updates the stmmac's documentation adding
      some missing files in the section used to describe the
      internal driver's structure.
      
      Also the patch adds a new section to describe the EEE support.
      Signed-off-by: NGiuseppe Cavallaro <peppe.cavallaro@st.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0ec2ccd0
    • G
      stmmac: do not use strict_strtoul but kstrtoint · ea2ab871
      Giuseppe CAVALLARO 提交于
      This patch replaces the obsolete strict_strtoul with kstrtoint.
      
      v2: also removed casting on kstrtoul.
      v3: use kstrtoint instead of kstrtoul due to all vars are integer.
          thanks to E. Dumazet.
      Signed-off-by: NGiuseppe Cavallaro <peppe.cavallaro@st.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      ea2ab871
    • D
    • D
      netfilter: use kfree_skb() not kfree() · f7eadafb
      Dan Carpenter 提交于
      This was should be a kfree_skb() here to free the sk_buff pointer.
      Signed-off-by: NDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f7eadafb
  3. 30 6月, 2012 10 次提交
  4. 29 6月, 2012 20 次提交
    • D
      ipv4: Elide fib_validate_source() completely when possible. · 7a9bc9b8
      David S. Miller 提交于
      If rpfilter is off (or the SKB has an IPSEC path) and there are not
      tclassid users, we don't have to do anything at all when
      fib_validate_source() is invoked besides setting the itag to zero.
      
      We monitor tclassid uses with a counter (modified only under RTNL and
      marked __read_mostly) and we protect the fib_validate_source() real
      work with a test against this counter and whether rpfilter is to be
      done.
      
      Having a way to know whether we need no tclassid processing or not
      also opens the door for future optimized rpfilter algorithms that do
      not perform full FIB lookups.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7a9bc9b8
    • E
      net: l2tp_eth: provide tx_dropped counter · b8c84307
      Eric Dumazet 提交于
      Change l2tp_xmit_skb() to return NET_XMIT_DROP in case skb is dropped.
      
      Use kfree_skb() instead dev_kfree_skb() for drop_monitor pleasure.
      
      Support tx_dropped counter for l2tp_eth
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Cc: James Chapman <jchapman@katalix.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b8c84307
    • M
      netxen_nic: restrict force firmware dump when dump is disabled. · a777c892
      Manish chopra 提交于
      o Set the ethtool_dump flag (=ETH_FW_DUMP_DISABLE) when dump is disabled.
      o update driver version to 4.0.80
      Signed-off-by: NManish chopra <manish.chopra@qlogic.com>
      Signed-off-by: NRajesh Borundia <rajesh.borundia@qlogic.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a777c892
    • V
      ipv6_tunnel: Allow receiving packets on the fallback tunnel if they pass sanity checks · d0087b29
      Ville Nuorvala 提交于
      At Facebook, we do Layer-3 DSR via IP-in-IP tunneling. Our load balancers wrap
      an extra IP header on incoming packets so they can be routed to the backend.
      In the v4 tunnel driver, when these packets fall on the default tunl0 device,
      the behavior is to decapsulate them and drop them back on the stack. So our
      setup is that tunl0 has the VIP and eth0 has (obviously) the backend's real
      address.
      
      In IPv6 we do the same thing, but the v6 tunnel driver didn't have this same
      behavior - if you didn't have an explicit tunnel setup, it would drop the
      packet.
      
      This patch brings that v4 feature to the v6 driver.
      
      The same IPv6 address checks are performed as with any normal tunnel,
      but as the fallback tunnel endpoint addresses are unspecified, the checks
      must be performed on a per-packet basis, rather than at tunnel
      configuration time.
      
      [Patch description modified by phil@ipom.com]
      Signed-off-by: NVille Nuorvala <ville.nuorvala@gmail.com>
      Tested-by: NPhil Dibowitz <phil@ipom.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d0087b29
    • A
      xen/netback: only non-freed SKB is queued into tx_queue · 1e0b6eac
      Annie Li 提交于
      After SKB is queued into tx_queue, it will be freed if request_gop is NULL.
      However, no dequeue action is called in this situation, it is likely that
      tx_queue constains freed SKB. This patch should fix this issue, and it is
      based on 3.5.0-rc4+.
      
      This issue is found through code inspection, no bug is seen with it currently.
      I run netperf test for several hours, and no network regression was found.
      Signed-off-by: NAnnie Li <annie.li@oracle.com>
      Acked-by: NIan Campbell <ian.campbell@citrix.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      1e0b6eac
    • S
      caif-hsi: Fix merge issues. · 7fa8ad6d
      Sjur Brændeland 提交于
      Fix the failing merge in net-next by reverting the last
      net-next merge for caif_hsi.c and then merge in the commit:
      "caif-hsi: Bugfix - Piggyback'ed embedded CAIF frame lost"
      from the net repository.
      
      The commit:"caif-hsi: Add missing return in error path" from
      net repository was dropped, as it changed code previously removed in the
      net-next repository.
      Signed-off-by: NSjur Brændeland <sjur.brandeland@stericsson.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7fa8ad6d
    • D
      ipv4: Remove extraneous assignment of dst->tclassid. · 3085a4b7
      David S. Miller 提交于
      We already set it several lines above.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      3085a4b7
    • D
      ipv4: Adjust in_dev handling in fib_validate_source() · 9e56e380
      David S. Miller 提交于
      Checking for in_dev being NULL is pointless.
      
      In fact, all of our callers have in_dev precomputed already,
      so just pass it in and remove the NULL checking.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9e56e380
    • D
      ipv4: Fix bugs in fib_compute_spec_dst(). · a207a4b2
      David S. Miller 提交于
      Based upon feedback from Julian Anastasov.
      
      1) Use route flags to determine multicast/broadcast, not the
         packet flags.
      
      2) Leave saddr unspecified in flow key.
      
      3) Adjust how we invoke inet_select_addr().  Pass ip_hdr(skb)->saddr as
         second arg, and if it was zeronet use link scope.
      
      4) Use loopback as input interface in flow key.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a207a4b2
    • T
      net: Use NLMSG_DEFAULT_SIZE in combination with nlmsg_new() · 58050fce
      Thomas Graf 提交于
      Using NLMSG_GOODSIZE results in multiple pages being used as
      nlmsg_new() will automatically add the size of the netlink
      header to the payload thus exceeding the page limit.
      
      NLMSG_DEFAULT_SIZE takes this into account.
      Signed-off-by: NThomas Graf <tgraf@suug.ch>
      Cc: Jiri Pirko <jpirko@redhat.com>
      Cc: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
      Cc: Sergey Lapin <slapin@ossfans.org>
      Cc: Johannes Berg <johannes@sipsolutions.net>
      Cc: Lauro Ramos Venancio <lauro.venancio@openbossa.org>
      Cc: Aloisio Almeida Jr <aloisio.almeida@openbossa.org>
      Cc: Samuel Ortiz <sameo@linux.intel.com>
      Reviewed-by: NJiri Pirko <jpirko@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      58050fce
    • N
      tcp: plug dst leak in tcp_v6_conn_request() · 9f10d3f6
      Neal Cardwell 提交于
      The code in tcp_v6_conn_request() was implicitly assuming that
      tcp_v6_send_synack() would take care of dst_release(), much as
      tcp_v4_send_synack() already does. This resulted in
      tcp_v6_conn_request() leaking a dst if sysctl_tw_recycle is enabled.
      
      This commit restructures tcp_v6_send_synack() so that it accepts a dst
      pointer and takes care of releasing the dst that is passed in, to plug
      the leak and avoid future surprises by bringing the IPv6 behavior in
      line with the IPv4 side.
      Signed-off-by: NNeal Cardwell <ncardwell@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9f10d3f6
    • N
      tcp: use inet6_csk_route_req() in tcp_v6_send_synack() · 9494218f
      Neal Cardwell 提交于
      With the recent change (earlier in this patch series) to set
      flowi6_oif to treq->iif in inet6_csk_route_req(), the dst lookup in
      these two functions is now identical, so tcp_v6_send_synack() can now
      just call inet6_csk_route_req(), to reduce code duplication and keep
      things closer to the IPv4 side, which is structured this way.
      Signed-off-by: NNeal Cardwell <ncardwell@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9494218f
    • N
      tcp: pass fl6 to inet6_csk_route_req() · 3840a06e
      Neal Cardwell 提交于
      This commit changes inet_csk_route_req() so that it uses a pointer to
      a struct flowi6, rather than allocating its own on the stack. This
      brings its behavior in line with its IPv4 cousin,
      inet_csk_route_req(), and allows a follow-on patch to fix a dst leak.
      Signed-off-by: NNeal Cardwell <ncardwell@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      3840a06e
    • N
      tcp: fix inet6_csk_route_req() for link-local addresses · 9247869e
      Neal Cardwell 提交于
      Fix inet6_csk_route_req() to use as the flowi6_oif the treq->iif,
      which is correctly fixed up in tcp_v6_conn_request() to handle the
      case of link-local addresses. This brings it in line with the
      tcp_v6_send_synack() code, which is already correctly using the
      treq->iif in this way.
      Signed-off-by: NNeal Cardwell <ncardwell@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9247869e
    • D
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · b26d344c
      David S. Miller 提交于
      Conflicts:
      	drivers/net/caif/caif_hsi.c
      	drivers/net/usb/qmi_wwan.c
      
      The qmi_wwan merge was trivial.
      
      The caif_hsi.c, on the other hand, was not.  It's a conflict between
      1c385f1f ("caif-hsi: Replace platform
      device with ops structure.") in the net-next tree and commit
      39abbaef ("caif-hsi: Postpone init of
      HIS until open()") in the net tree.
      
      I did my best with that one and will ask Sjur to check it out.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b26d344c
    • D
      davinci_cpdma: include linux/module.h · 76fbc247
      Daniel Mack 提交于
      This fixes a number of warnings such as:
      
        CC      drivers/net/ethernet/ti/davinci_cpdma.o
      drivers/net/ethernet/ti/davinci_cpdma.c:279:1: warning: data definition
      has no type or storage class
      drivers/net/ethernet/ti/davinci_cpdma.c:279:1: warning: type defaults to
      ‘int’ in declaration of ‘EXPORT_SYMBOL_GPL’
      drivers/net/ethernet/ti/davinci_cpdma.c:279:1: warning: parameter names
      (without types) in function declaration
      Signed-off-by: NDaniel Mack <zonque@gmail.com>
      Cc: Vaibhav Hiremath <hvaibhav@ti.com>
      Cc: David S. Miller <davem@davemloft.net>
      Cc: Christian Riesch <christian.riesch@omicron.at>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      76fbc247
    • D
      Merge branch 'for-davem' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless · ca33c00f
      David S. Miller 提交于
      John Linville says:
      
      ====================
      Amitkumar Karwar gives us two mwifiex fixes: one fixes some skb
      manipulations when handling some event messages; and another that
      does some similar fixing on an error path.
      
      Avinash Patil gives us a fix for for a memory leak in mwifiex.
      
      Dan Rosenberg offers an NFC NCI fix to enforce some message length
      limits to prevent buffer overflows.
      
      Eliad Peller provides a mac80211 fix to prevent some frames from
      being built with an invalid BSSID.
      
      Eric Dumazet sends an NFC fix to prevent a BUG caused by a NULL
      pointer dereference.
      
      Felix Fietkau has an ath9k fix for a regression causing
      LEAP-authenticated connection failures.
      
      Johannes Berg provides an iwlwifi fix that eliminates some log SPAM
      after an authentication/association timeout.  He also provides a
      mac80211 fix to prevent incorrectly addressing certain action frames
      (and in so doing, to comply with the 802.11 specs).
      
      Larry Finger provides a few USB IDs for the rtl8192cu driver --
      should be harmless.
      
      Panayiotis Karabassis provices a one-liner to fix kernel bug 42903
      (a system freeze).
      
      Randy Dunlap provides a one-line Kconfig change to prevent build
      failures with some configurations.
      
      Stone Piao provides an mwifiex sequence numbering fix and a fix
      to prevent mwifiex from attempting to include eapol frames in an
      aggregation frame.
      
      Finally, Tom Hughes provides an ath9k fix for a NULL pointer
      dereference.
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      ca33c00f
    • C
      gianfar: Fix RXICr/TXICr programming for multi-queue mode · 9740e001
      Claudiu Manoil 提交于
      The correct behavior is to program the interrupt coalescing regs
      (RXICr/TXICr) in accordance with the Rx/Tx Q's "rx/txcoalescing"
      flag. That is, if the coalescing flag is 0 for a given Rx/Tx queue
      then the corresponding coalescing register should be cleared.
      This behavior is correctly implemented for the single-queue mode
      (SQ_SG_MODE), but not for the multi-queue mode (MQ_MG_MODE).
      This fixes the later case.
      Signed-off-by: NClaudiu Manoil <claudiu.manoil@freescale.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9740e001
    • V
      net: Downgrade CAP_SYS_MODULE deprecated message from error to warning. · 7cecb523
      Vinson Lee 提交于
      Make logging level consistent with other deprecation messages in net
      subsystem.
      Signed-off-by: NVinson Lee <vlee@twitter.com>
      Cc: David Mackey <tdmackey@twitter.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7cecb523
    • B
      net: qmi_wwan: fix Oops while disconnecting · d9b87068
      Bjørn Mork 提交于
      usbnet_disconnect() will set intfdata to NULL before calling
      the minidriver unbind function.  The cdc_wdm subdriver cannot
      know that it is disconnecting until the qmi_wwan unbind
      function has called its disconnect function.  This means that
      we must be able to support the cdc_wdm subdriver operating
      normally while usbnet_disconnect() is running, and in
      particular that intfdata may be NULL.
      
      The only place this matters is in qmi_wwan_cdc_wdm_manage_power
      which is called from cdc_wdm.  Simply testing for NULL
      intfdata there is sufficient to allow it to continue working
      at all times.
      
      Fixes this Oops where a cdc-wdm device was closed while the
      USB device was disconnecting, causing wdm_release to call
      qmi_wwan_cdc_wdm_manage_power after intfdata was set to
      NULL by usbnet_disconnect:
      
      [41819.087460] BUG: unable to handle kernel NULL pointer dereference at 00000080
      [41819.087815] IP: [<f8640458>] qmi_wwan_manage_power+0x68/0x90 [qmi_wwan]
      [41819.088028] *pdpt = 000000000314f001 *pde = 0000000000000000
      [41819.088028] Oops: 0002 [#1] SMP
      [41819.088028] Modules linked in: qmi_wwan option usb_wwan usbserial usbnet
      cdc_wdm nls_iso8859_1 nls_cp437 vfat fat usb_storage bnep rfcomm bluetooth
      parport_pc ppdev binfmt_misc iptable_nat nf_nat nf_conntrack_ipv4
      nf_conntrack nf_defrag_ipv4 iptable_mangle iptable_filter ip_tables
      x_tables dm_crypt uvcvideo snd_hda_codec_realtek snd_hda_intel
      videobuf2_core snd_hda_codec joydev videodev videobuf2_vmalloc
      hid_multitouch snd_hwdep arc4 videobuf2_memops snd_pcm snd_seq_midi
      snd_rawmidi snd_seq_midi_event ath9k mac80211 snd_seq ath9k_common ath9k_hw
      ath snd_timer snd_seq_device sparse_keymap dm_multipath scsi_dh coretemp
      mac_hid snd soundcore cfg80211 snd_page_alloc psmouse serio_raw microcode
      lp parport dm_mirror dm_region_hash dm_log usbhid hid i915 drm_kms_helper
      drm r8169 i2c_algo_bit wmi video [last unloaded: qmi_wwan]
      [41819.088028]
      [41819.088028] Pid: 23292, comm: qmicli Not tainted 3.4.0-5-generic #11-Ubuntu GIGABYTE T1005/T1005
      [41819.088028] EIP: 0060:[<f8640458>] EFLAGS: 00010246 CPU: 1
      [41819.088028] EIP is at qmi_wwan_manage_power+0x68/0x90 [qmi_wwan]
      [41819.088028] EAX: 00000000 EBX: 00000000 ECX: 000000c3 EDX: 00000000
      [41819.088028] ESI: c3b27658 EDI: 00000000 EBP: c298bea4 ESP: c298be98
      [41819.088028]  DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
      [41819.088028] CR0: 8005003b CR2: 00000080 CR3: 3605e000 CR4: 000007f0
      [41819.088028] DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000
      [41819.088028] DR6: ffff0ff0 DR7: 00000400
      [41819.088028] Process qmicli (pid: 23292, ti=c298a000 task=f343b280 task.ti=c298a000)
      [41819.088028] Stack:
      [41819.088028]  00000000 c3b27658 e2a80d00 c298beb0 f864051a c3b27600 c298bec0 f9027099
      [41819.088028]  c2fd6000 00000008 c298bef0 c1147f96 00000001 00000000 00000000 f4e54790
      [41819.088028]  ecf43a00 ecf43a00 c2fd6008 c2fd6000 ebbd7600 ffffffb9 c298bf08 c1144474
      [41819.088028] Call Trace:
      [41819.088028]  [<f864051a>] qmi_wwan_cdc_wdm_manage_power+0x1a/0x20 [qmi_wwan]
      [41819.088028]  [<f9027099>] wdm_release+0x69/0x70 [cdc_wdm]
      [41819.088028]  [<c1147f96>] fput+0xe6/0x210
      [41819.088028]  [<c1144474>] filp_close+0x54/0x80
      [41819.088028]  [<c1046a65>] put_files_struct+0x75/0xc0
      [41819.088028]  [<c1046b56>] exit_files+0x46/0x60
      [41819.088028]  [<c1046f81>] do_exit+0x141/0x780
      [41819.088028]  [<c107248f>] ? wake_up_state+0xf/0x20
      [41819.088028]  [<c1053f48>] ? signal_wake_up+0x28/0x40
      [41819.088028]  [<c1054f3b>] ? zap_other_threads+0x6b/0x80
      [41819.088028]  [<c1047864>] do_group_exit+0x34/0xa0
      [41819.088028]  [<c10478e8>] sys_exit_group+0x18/0x20
      [41819.088028]  [<c15bb7df>] sysenter_do_call+0x12/0x28
      [41819.088028] Code: 04 83 e7 01 c1 e7 03 0f b6 42 18 83 e0 f7 09 f8 88 42
      18 8b 43 04 e8 48 9a dd c8 89 f0 8b 5d f4 8b 75 f8 8b 7d fc 89 ec 5d c3 90
      <f0> ff 88 80 00 00 00 0f 94 c0 84 c0 75 b7 31 f6 8b 5d f4 89 f0
      [41819.088028] EIP: [<f8640458>] qmi_wwan_manage_power+0x68/0x90 [qmi_wwan] SS:ESP 0068:c298be98
      [41819.088028] CR2: 0000000000000080
      [41819.149492] ---[ end trace 0944479ff8257f55 ]---
      Reported-by: NMarius Bjørnstad Kotsbak <marius.kotsbak@gmail.com>
      Cc: <stable@vger.kernel.org> # v3.4
      Signed-off-by: NBjørn Mork <bjorn@mork.no>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d9b87068