1. 23 9月, 2016 29 次提交
    • D
      rxrpc: Don't call the tx_ack tracepoint if don't generate an ACK · b86e218e
      David Howells 提交于
      rxrpc_send_call_packet() is invoking the tx_ack tracepoint before it checks
      whether there's an ACK to transmit (another thread may jump in and transmit
      it).
      
      Fix this by only invoking the tracepoint if we get a valid ACK to transmit.
      
      Further, only allocate a serial number if we're going to actually transmit
      something.
      Signed-off-by: NDavid Howells <dhowells@redhat.com>
      b86e218e
    • D
      rxrpc: Pass the last Tx packet marker in the annotation buffer · 70790dbe
      David Howells 提交于
      When the last packet of data to be transmitted on a call is queued, tx_top
      is set and then the RXRPC_CALL_TX_LAST flag is set.  Unfortunately, this
      leaves a race in the ACK processing side of things because the flag affects
      the interpretation of tx_top and also allows us to start receiving reply
      data before we've finished transmitting.
      
      To fix this, make the following changes:
      
       (1) rxrpc_queue_packet() now sets a marker in the annotation buffer
           instead of setting the RXRPC_CALL_TX_LAST flag.
      
       (2) rxrpc_rotate_tx_window() detects the marker and sets the flag in the
           same context as the routines that use it.
      
       (3) rxrpc_end_tx_phase() is simplified to just shift the call state.
           The Tx window must have been rotated before calling to discard the
           last packet.
      
       (4) rxrpc_receiving_reply() is added to handle the arrival of the first
           DATA packet of a reply to a client call (which is an implicit ACK of
           the Tx phase).
      
       (5) The last part of rxrpc_input_ack() is reordered to perform Tx
           rotation, then soft-ACK application and then to end the phase if we've
           rotated the last packet.  In the event of a terminal ACK, the soft-ACK
           application will be skipped as nAcks should be 0.
      
       (6) rxrpc_input_ackall() now has to rotate as well as ending the phase.
      
      In addition:
      
       (7) Alter the transmit tracepoint to log the rotation of the last packet.
      
       (8) Remove the no-longer relevant queue_reqack tracepoint note.  The
           ACK-REQUESTED packet header flag is now set as needed when we actually
           transmit the packet and may vary by retransmission.
      Signed-off-by: NDavid Howells <dhowells@redhat.com>
      70790dbe
    • D
      rxrpc: Fix call timer · 01a88f7f
      David Howells 提交于
      Fix the call timer in the following ways:
      
       (1) If call->resend_at or call->ack_at are before or equal to the current
           time, then ignore that timeout.
      
       (2) If call->expire_at is before or equal to the current time, then don't
           set the timer at all (possibly we should queue the call).
      
       (3) Don't skip modifying the timer if timer_pending() is true.  This
           indicates that the timer is working, not that it has expired and is
           running/waiting to run its expiry handler.
      
      Also call rxrpc_set_timer() to start the call timer going rather than
      calling add_timer().
      Signed-off-by: NDavid Howells <dhowells@redhat.com>
      01a88f7f
    • D
      rxrpc: Fix accidental cancellation of scheduled resend by ACK parser · be8aa338
      David Howells 提交于
      When rxrpc_input_soft_acks() is parsing the soft-ACKs from an ACK packet,
      it updates the Tx packet annotations in the annotation buffer.  If a
      soft-ACK is an ACK, then we overwrite unack'd, nak'd or to-be-retransmitted
      states and that is fine; but if the soft-ACK is an NACK, we overwrite the
      to-be-retransmitted with a nak - which isn't.
      
      Instead, we need to let any scheduled retransmission stand if the packet
      was NAK'd.
      
      Note that we don't reissue a resend if the annotation is in the
      to-be-retransmitted state because someone else must've scheduled the
      resend already.
      Signed-off-by: NDavid Howells <dhowells@redhat.com>
      be8aa338
    • D
      rxrpc: Need to start the resend timer on initial transmission · dfc3da44
      David Howells 提交于
      When a DATA packet has its initial transmission, we may need to start or
      adjust the resend timer.  Without this we end up relying on being sent a
      NACK to initiate the resend.
      Signed-off-by: NDavid Howells <dhowells@redhat.com>
      dfc3da44
    • D
      rxrpc: Use before_eq() and friends to compare serial numbers · 98dafac5
      David Howells 提交于
      before_eq() and friends should be used to compare serial numbers (when not
      checking for (non)equality) rather than casting to int, subtracting and
      checking the result.
      Signed-off-by: NDavid Howells <dhowells@redhat.com>
      98dafac5
    • D
      rxrpc: Should be using ktime_add_ms() not ktime_add_ns() · 90bd684d
      David Howells 提交于
      ktime_add_ms() should be used to add the resend time (in ms) rather than
      ktime_add_ns().
      Signed-off-by: NDavid Howells <dhowells@redhat.com>
      90bd684d
    • D
      rxrpc: Make sure sendmsg() is woken on call completion · c0d058c2
      David Howells 提交于
      Make sure that sendmsg() gets woken up if the call it is waiting for
      completes abnormally.
      Signed-off-by: NDavid Howells <dhowells@redhat.com>
      c0d058c2
    • D
      rxrpc: Don't send an ACK at the end of service call response transmission · 9aff212b
      David Howells 提交于
      Don't send an IDLE ACK at the end of the transmission of the response to a
      service call.  The service end resends DATA packets until the client sends an
      ACK that hard-acks all the send data.  At that point, the call is complete.
      Signed-off-by: NDavid Howells <dhowells@redhat.com>
      9aff212b
    • D
      rxrpc: Preset timestamp on Tx sk_buffs · b24d2891
      David Howells 提交于
      Set the timestamp on sk_buffs holding packets to be transmitted before
      queueing them because the moment the packet is on the queue it can be seen
      by the retransmission algorithm - which may see a completely random
      timestamp.
      
      If the retransmission algorithm sees such a timestamp, it may retransmit
      the packet and, in future, tell the congestion management algorithm that
      the retransmit timer expired.
      Signed-off-by: NDavid Howells <dhowells@redhat.com>
      b24d2891
    • C
      cxgb4: fix signed wrap around when decrementing index idx · e12934d9
      Colin Ian King 提交于
      Change predecrement compare to post decrement compare to avoid an
      unsigned integer wrap-around comparison when decrementing idx in
      the while loop.
      
      For example, when idx is zero, the current situation will
      predecrement idx in the while loop, wrapping idx to the maximum
      signed integer and cause out of bounds reads on rxq_info->msix_tbl[idx].
      Signed-off-by: NColin Ian King <colin.king@canonical.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      e12934d9
    • D
      Merge branch 'mlx5-sriov-vlan-push-pop' · c7b9e633
      David S. Miller 提交于
      Saeed Mahameed says:
      
      ====================
      Mellanox 100G SRIOV offloads vlan push/pop
      
      From Or Gerlitz:
      
      This series further enhances the SRIOV TC offloads of mlx5 to handle
      the TC vlan push and pop actions. This serves a common use-case in
      virtualization systems where the virtual switch add (push) vlan tags
      to packets sent from VMs and removes (pop) vlan tags before the packet
      is received by the VM. We use the new E-Switch switchdev mode and the
      TC vlan action to achieve that also in SW defined SRIOV environments by
      offloading TC rules that contain this action along with forwarding
      (TC mirred/redirect action) the packet.
      
      In the first patch we add some helpers to access the TC vlan action info
      by offloading drivers. The next five patches don't add any new functionality,
      they do some refactoring and cleanups in the current code to be used next.
      
      The seventh patch deals with supporting vlans by the mlx5 e-switch in switchdev
      mode. The eighth patch does the vlan action offload from TC and the last patch
      adds matching for vlans as typically required by TC flows that involve vlan
      pop action.
      
      The series was applied on top of commit 524605e5 "cxgb4: Convert to use simple_open()"
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c7b9e633
    • O
      net/mlx5e: Add TC vlan match parsing · 095b6cfd
      Or Gerlitz 提交于
      Enhance the parsing of offloaded TC rules matches to handle vlans.
      Signed-off-by: NOr Gerlitz <ogerlitz@mellanox.com>
      Signed-off-by: NSaeed Mahameed <saeedm@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      095b6cfd
    • O
      net/mlx5e: Add TC vlan action for SRIOV offloads · 8b32580d
      Or Gerlitz 提交于
      Parse TC vlan actions and set the required elements to allow offloading.
      Signed-off-by: NOr Gerlitz <ogerlitz@mellanox.com>
      Signed-off-by: NSaeed Mahameed <saeedm@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      8b32580d
    • O
      net/mlx5: E-Switch, Support VLAN actions in the offloads mode · f5f82476
      Or Gerlitz 提交于
      Many virtualization systems use a policy under which a vlan tag is
      pushed to packets sent by guests, and popped before the packet is
      forwarded to the VM.
      
      The current generation of the mlx5 HW doesn't fully support that on
      a per flow level. As such, we are addressing the above common use
      case with the SRIOV e-Switch abilities to push vlan into packets
      sent by VFs and pop vlan from packets forwarded to VFs.
      
      The HW can match on the correct vlan being present in packets
      forwarded to VFs (eSwitch steering is done before stripping
      the tag), so this part is offloaded as is.
      
      A common practice for vlans is to avoid both push vlan and pop vlan
      for inter-host VM/VM (east-west) communication because in this case,
      push on egress cancels out with pop on ingress.
      
      For supporting that, we use a global eswitch vlan pop policy, hence
      allowing guest A to communicate with both remote VM B and local VM C.
      This works since the HW pops the vlan only if it exists (e.g for
      C --> A packets but not for B --> A packets).
      
      On the slow path, when a VF vport has an offloaded flow which involves
      pushing vlans, wheres another flow is not currently offloaded, the
      packets from the 2nd flow seen by the VF representor on the host have
      vlan. The VF rep driver removes such vlan before calling into the host
      networking stack.
      Signed-off-by: NOr Gerlitz <ogerlitz@mellanox.com>
      Signed-off-by: NSaeed Mahameed <saeedm@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f5f82476
    • O
      net/mlx5e: Refactor retrival of skb from rx completion element (cqe) · 8515c581
      Or Gerlitz 提交于
      Factor the relevant code into a static inline helper (skb_from_cqe)
      doing that.
      
      Move the call to napi_gro_receive to be carried out just
      after mlx5e_complete_rx_cqe returns.
      
      Both changes are to be used for the VF representor as well
      in the next commit.
      
      This patch doesn't change any functionality.
      Signed-off-by: NOr Gerlitz <ogerlitz@mellanox.com>
      Signed-off-by: NSaeed Mahameed <saeedm@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      8515c581
    • O
      net/mlx5: Put elements related to offloaded TC rule in one struct · 776b12b6
      Or Gerlitz 提交于
      Put the representors related to the source and dest vports and the
      action in struct mlx5_esw_flow_attr which is used while setting the FDB rule.
      
      This patch doesn't change any functionality.
      Signed-off-by: NOr Gerlitz <ogerlitz@mellanox.com>
      Signed-off-by: NSaeed Mahameed <saeedm@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      776b12b6
    • O
      net/mlx5: E-Switch, Allow fine tuning of eswitch vport push/pop vlan · e33dfe31
      Or Gerlitz 提交于
      The HW can be programmed to push vlan, pop vlan or both.
      
      A factorization step towards using the push/pop capabilties in the
      eswitch offloads mode. This patch doesn't add new functionality.
      Signed-off-by: NOr Gerlitz <ogerlitz@mellanox.com>
      Signed-off-by: NSaeed Mahameed <saeedm@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      e33dfe31
    • O
      net/mlx5: E-Switch, Set vport representor fields explicitly on registration · bac9b6aa
      Or Gerlitz 提交于
      The structure we use for the eswitch vport representor (mlx5_eswitch_rep)
      has some fields which are set from upper layers in the driver when they
      register the rep. Use explicit setting on registration time for them and
      avoid global memcpy. This patch doesn't add new functionality.
      Signed-off-by: NOr Gerlitz <ogerlitz@mellanox.com>
      Signed-off-by: NSaeed Mahameed <saeedm@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      bac9b6aa
    • O
      net/mlx5: E-Switch, Set the vport when registering the uplink rep · 9deb2241
      Or Gerlitz 提交于
      Set the vport value in the PF entry to be that of the uplink so
      we can use it blindly over the tc / eswitch offload code without
      translating it each time we deal with the uplink representor.
      Signed-off-by: NOr Gerlitz <ogerlitz@mellanox.com>
      Signed-off-by: NSaeed Mahameed <saeedm@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9deb2241
    • O
      net_sched: act_vlan: add helper inlines to access tcf_vlan info · 53e89941
      Or Gerlitz 提交于
      Needed e.g for offloading drivers to pick the relevant attributes.
      Signed-off-by: NOr Gerlitz <ogerlitz@mellanox.com>
      Signed-off-by: NSaeed Mahameed <saeedm@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      53e89941
    • E
      net_sched: sch_fq: account for schedule/timers drifts · fefa569a
      Eric Dumazet 提交于
      It looks like the following patch can make FQ very precise, even in VM
      or stressed hosts. It matters at high pacing rates.
      
      We take into account the difference between the time that was programmed
      when last packet was sent, and current time (a drift of tens of usecs is
      often observed)
      
      Add an EWMA of the unthrottle latency to help diagnostics.
      
      This latency is the difference between current time and oldest packet in
      delayed RB-tree. This accounts for the high resolution timer latency,
      but can be different under stress, as fq_check_throttled() can be
      opportunistically be called from a dequeue() called after an enqueue()
      for a different flow.
      
      Tested:
      // Start a 10Gbit flow
      $ netperf --google-pacing-rate 1250000000 -H lpaa24 -l 10000 -- -K bbr &
      
      Before patch :
      $ sar -n DEV 10 5 | grep eth0 | grep Average
      Average:         eth0  17106.04 756876.84   1102.75 1119049.02      0.00      0.00      0.52
      
      After patch :
      $ sar -n DEV 10 5 | grep eth0 | grep Average
      Average:         eth0  17867.00 800245.90   1151.77 1183172.12      0.00      0.00      0.52
      
      A new iproute2 tc can output the 'unthrottle latency' :
      
      $ tc -s qd sh dev eth0 | grep latency
        0 gc, 0 highprio, 32490767 throttled, 2382 ns latency
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      fefa569a
    • B
      sfc: check async completer is !NULL before calling · 429baa6f
      Bert Kenward 提交于
      Add a NULL check before calling asynchronous MCDI completion functions
      during device removal.
      
      Fixes: 7014d7f6 ("sfc: allow asynchronous MCDI without completion function")
      Signed-off-by: NBert Kenward <bkenward@solarflare.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      429baa6f
    • D
      Merge branch 'sctp-fix-gap-ack-blocks' · 88e4f759
      David S. Miller 提交于
      Marcelo Ricardo Leitner says:
      
      ====================
      sctp: fix the handling of SACK Gap Ack blocks
      
      sctp_acked() is using 32bit arithmetics on 16bits vars, via TSN_lte()
      macros, which is weird and confusing.
      
      Once the offset to ctsn is calculated, all wrapping is already handled
      and thus to verify the Gap Ack blocks we can just use pure
      less/big-or-equal than checks.
      
      Also, rename gap variable to tsn_offset, so it's more meaningful, as
      it doesn't point to any gap at all.
      
      Even so, I don't think this discrepancy resulted in any practical bug.
      
      This patch is a preparation for the next one, which will introduce
      typecheck() for TSN_lte() macros and would cause a compile error here.
      Suggested-by: NDavid Laight <David.Laight@ACULAB.COM>
      Reported-by: NDavid Laight <David.Laight@ACULAB.COM>
      Signed-off-by: NMarcelo Ricardo Leitner <marcelo.leitner@gmail.com>
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      88e4f759
    • M
      sctp: improve how SSN, TSN and ASCONF serial are compared · 182691d0
      Marcelo Ricardo Leitner 提交于
      Make it similar to time_before() macros:
      - easier to understand
      - make use of typecheck() to avoid working on unexpected variable types
        (made the issue on previous patch visible)
      - for _[lg]te versions, slighly faster, as the compiler used to generate
        a sequence of cmp/je/cmp/js instructions and now it's sub/test/jle
        (for _lte):
      
      Before, for sctp_outq_sack:
      	if (primary->cacc.changeover_active) {
          1f01:	80 b9 84 02 00 00 00 	cmpb   $0x0,0x284(%rcx)
          1f08:	74 6e                	je     1f78 <sctp_outq_sack+0xe8>
      		u8 clear_cycling = 0;
      
      		if (TSN_lte(primary->cacc.next_tsn_at_change, sack_ctsn)) {
          1f0a:	8b 81 80 02 00 00    	mov    0x280(%rcx),%eax
      	return ((s) - (t)) & TSN_SIGN_BIT;
      }
      
      static inline int TSN_lte(__u32 s, __u32 t)
      {
      	return ((s) == (t)) || (((s) - (t)) & TSN_SIGN_BIT);
          1f10:	8b 7d bc             	mov    -0x44(%rbp),%edi
          1f13:	39 c7                	cmp    %eax,%edi
          1f15:	74 25                	je     1f3c <sctp_outq_sack+0xac>
          1f17:	39 f8                	cmp    %edi,%eax
          1f19:	78 21                	js     1f3c <sctp_outq_sack+0xac>
      			primary->cacc.changeover_active = 0;
      
      After:
      	if (primary->cacc.changeover_active) {
          1ee7:	80 b9 84 02 00 00 00 	cmpb   $0x0,0x284(%rcx)
          1eee:	74 73                	je     1f63 <sctp_outq_sack+0xf3>
      		u8 clear_cycling = 0;
      
      		if (TSN_lte(primary->cacc.next_tsn_at_change, sack_ctsn)) {
          1ef0:	8b 81 80 02 00 00    	mov    0x280(%rcx),%eax
          1ef6:	2b 45 b4             	sub    -0x4c(%rbp),%eax
          1ef9:	85 c0                	test   %eax,%eax
          1efb:	7e 26                	jle    1f23 <sctp_outq_sack+0xb3>
      			primary->cacc.changeover_active = 0;
      
      *_lt() generated pretty much the same code.
      Tested with gcc (GCC) 6.1.1 20160621.
      
      This patch also removes SSN_lte as it is not used and cleanups some
      comments.
      Signed-off-by: NMarcelo Ricardo Leitner <marcelo.leitner@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      182691d0
    • M
      sctp: fix the handling of SACK Gap Ack blocks · a3007446
      Marcelo Ricardo Leitner 提交于
      sctp_acked() is using 32bit arithmetics on 16bits vars, via TSN_lte()
      macros, which is weird and confusing.
      
      Once the offset to ctsn is calculated, all wrapping is already handled
      and thus to verify the Gap Ack blocks we can just use pure
      less/big-or-equal than checks.
      
      Also, rename gap variable to tsn_offset, so it's more meaningful, as
      it doesn't point to any gap at all.
      
      Even so, I don't think this discrepancy resulted in any practical bug.
      
      This patch is a preparation for the next one, which will introduce
      typecheck() for TSN_lte() macros and would cause a compile error here.
      Suggested-by: NDavid Laight <David.Laight@ACULAB.COM>
      Reported-by: NDavid Laight <David.Laight@ACULAB.COM>
      Signed-off-by: NMarcelo Ricardo Leitner <marcelo.leitner@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a3007446
    • W
      net_sched: check NULL on error path in route4_change() · 21641c2e
      WANG Cong 提交于
      On error path in route4_change(), 'f' could be NULL,
      so we should check NULL before calling tcf_exts_destroy().
      
      Fixes: b9a24bb7 ("net_sched: properly handle failure case of tcf_exts_init()")
      Reported-by: Nkbuild test robot <fengguang.wu@intel.com>
      Cc: Jamal Hadi Salim <jhs@mojatatu.com>
      Signed-off-by: NCong Wang <xiyou.wangcong@gmail.com>
      Acked-by: NJamal Hadi Salim <jhs@mojatatu.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      21641c2e
    • D
      d6989d4b
    • L
      Merge tag 'media/v4.8-7' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media · b1f2beb8
      Linus Torvalds 提交于
      Pull media fixes from Mauro Carvalho Chehab:
      
       - several fixes for new drivers added for Kernel 4.8 addition (cec
         core, pulse8 cec driver and Mediatek vcodec)
      
       - a regression fix for cx23885 and saa7134 drivers
      
       - an important fix for rcar-fcp, making rcar_fcp_enable() return 0 on
         success
      
      * tag 'media/v4.8-7' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (25 commits)
        [media] cx23885/saa7134: assign q->dev to the PCI device
        [media] rcar-fcp: Make sure rcar_fcp_enable() returns 0 on success
        [media] cec: fix ioctl return code when not registered
        [media] cec: don't Feature Abort broadcast msgs when unregistered
        [media] vcodec:mediatek: Refine VP8 encoder driver
        [media] vcodec:mediatek: Refine H264 encoder driver
        [media] vcodec:mediatek: change H264 profile default to profile high
        [media] vcodec:mediatek: Add timestamp and timecode copy for V4L2 Encoder
        [media] vcodec:mediatek: Fix visible_height larger than coded_height issue in s_fmt_out
        [media] vcodec:mediatek: Fix fops_vcodec_release flow for V4L2 Encoder
        [media] vcodec:mediatek:code refine for v4l2 Encoder driver
        [media] cec-funcs.h: add missing vendor-specific messages
        [media] cec-edid: check for IEEE identifier
        [media] pulse8-cec: fix error handling
        [media] pulse8-cec: set correct Signal Free Time
        [media] mtk-vcodec: add HAS_DMA dependency
        [media] cec: ignore messages when log_addr_mask == 0
        [media] cec: add item to TODO
        [media] cec: set unclaimed addresses to CEC_LOG_ADDR_INVALID
        [media] cec: add CEC_LOG_ADDRS_FL_ALLOW_UNREG_FALLBACK flag
        ...
      b1f2beb8
  2. 22 9月, 2016 11 次提交
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · f887c21e
      Linus Torvalds 提交于
      Pull networking fixes from David Miller:
       "Mostly small bits scattered all over the place, which is usually how
        things go this late in the -rc series.
      
         1) Proper driver init device resets in bnx2, from Baoquan He.
      
         2) Fix accounting overflow in __tcp_retransmit_skb(),
            sk_forward_alloc, and ip_idents_reserve, from Eric Dumazet.
      
         3) Fix crash in bna driver ethtool stats handling, from Ivan Vecera.
      
         4) Missing check of skb_linearize() return value in mac80211, from
            Johannes Berg.
      
         5) Endianness fix in nf_table_trace dumps, from Liping Zhang.
      
         6) SSN comparison fix in SCTP, from Marcelo Ricardo Leitner.
      
         7) Update DSA and b44 MAINTAINERS entries.
      
         8) Make input path of vti6 driver work again, from Nicolas Dichtel.
      
         9) Off-by-one in mlx4, from Sebastian Ott.
      
        10) Fix fallback route lookup handling in ipv6, from Vincent Bernat.
      
        11) Fix stack corruption on probe in qed driver, from Yuval Mintz.
      
        12) PHY init fixes in r8152 from Hayes Wang.
      
        13) Missing SKB free in irda_accept error path, from Phil Turnbull"
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (61 commits)
        tcp: properly account Fast Open SYN-ACK retrans
        tcp: fix under-accounting retransmit SNMP counters
        MAINTAINERS: Update b44 maintainer.
        net: get rid of an signed integer overflow in ip_idents_reserve()
        net/mlx4_core: Fix to clean devlink resources
        net: can: ifi: Configure transmitter delay
        vti6: fix input path
        ipmr, ip6mr: return lastuse relative to now
        r8152: disable ALDPS and EEE before setting PHY
        r8152: remove r8153_enable_eee
        r8152: move PHY settings to hw_phy_cfg
        r8152: move enabling PHY
        r8152: move some functions
        cxgb4/cxgb4vf: Allocate more queues for 25G and 100G adapter
        qed: Fix stack corruption on probe
        MAINTAINERS: Add an entry for the core network DSA code
        net: ipv6: fallback to full lookup if table lookup is unsuitable
        net/mlx5: E-Switch, Handle mode change failures
        net/mlx5: E-Switch, Fix error flow in the SRIOV e-switch init code
        net/mlx5: Fix flow counter bulk command out mailbox allocation
        ...
      f887c21e
    • J
      xen-netback: switch to threaded irq for control ring · 0364a882
      Juergen Gross 提交于
      Instead of open coding it use the threaded irq mechanism in
      xen-netback.
      Signed-off-by: NJuergen Gross <jgross@suse.com>
      Acked-by: NWei Liu <wei.liu2@citrix.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0364a882
    • S
      net: ethernet: mediatek: get out of potential invalid pointer access · f6f7d9c0
      Sean Wang 提交于
      Potential dangerous invalid pointer might be accessed if
      the error happens when couple phy_device to net_device so
      cleanup the error path.
      Signed-off-by: NSean Wang <sean.wang@mediatek.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f6f7d9c0
    • S
      net: ethernet: mediatek: use [get|set]_link_ksettings · 3e60b748
      Sean Wang 提交于
      1) use new api [get|set]_link_ksettings instead
      of [get|set]_settings old ones.
      
      2) dev->phydev is sure being ready before calling
      these callbacks, so removing all the sanity check
      if it is existing.
      Signed-off-by: NSean Wang <sean.wang@mediatek.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      3e60b748
    • S
      net: ethernet: mediatek: remove superfluous local variable for phy address · a2b2a19f
      Sean Wang 提交于
      remove the unused variable for parsing PHY address
      and the related logic for sanity test which would
      be all already handled done when of_mdiobus_register
      was called
      Reported-by: NNelson Chang <nelson.chang@mediatek.com>
      Signed-off-by: NSean Wang <sean.wang@mediatek.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a2b2a19f
    • S
      net: ethernet: mediatek: use phydev from struct net_device · 2364c5c5
      Sean Wang 提交于
      reuse phydev already in struct net_device instead of creating
      another new one in private structure.
      Signed-off-by: NSean Wang <sean.wang@mediatek.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      2364c5c5
    • D
      Merge branch 'mediatek-trgmii' · 4fa01af4
      David S. Miller 提交于
      Sean Wang says:
      
      ====================
      mediatek: add support for RGMII on GMAC0 through TRGMII hardware module
      
      By default, GMAC0 is connected to built-in switch called
      MT7530 through the proprietary interface called Turbo RGMII
      (TRGMII). TRGMII also supports well for RGMII as generic external
      PHY uses but requires some slight changes to the setup of TRGMII
      and doesn't have well support on current driver.
      
      So this patchset
      1) provides the slight changes of the setup for RGMII can work
         through TRGMII
      2) adds additional setting "trgmii" as PHY_INTERFACE_MODE_TRGMII
         about phy-mode on device tree to make GMAC0 distinguish which
         mode it runs
      3) changes dynamically source clock, TX/RX delay and interface
         mode on TRGMII for adapting various link
      
      Changes since v1:
      - fixed the style of comment which doesn't have a space at
         the beginning and end of comment lines
      - add support for phy-mode "trgmii" as PHY_INTERFACE_MODE_TRGMII
         into linux/phy.h
      - enhance the Documentation about device tree binding for trgmii
        which is applicable only for GMAC0 which uses fixed-link
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      4fa01af4
    • S
      net: ethernet: mediatek: add the dts property to set if TRGMII supported on GMAC0 · b8853965
      Sean Wang 提交于
      Add the dts property for the capability if TRGMII supported on GAMC0
      Signed-off-by: NSean Wang <sean.wang@mediatek.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b8853965
    • S
      net: ethernet: mediatek: add support for GMAC0 connecting with external PHY through TRGMII · f430dea7
      Sean Wang 提交于
      Changing dynamically source clock, TX/RX delay and interface mode
      used by TRGMII hardware module inside PHY capability polling routine
      for adapting to the various speed of RGMII used by external PHY for
      GMAC0.
      Signed-off-by: NSean Wang <sean.wang@mediatek.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f430dea7
    • S
      net: ethernet: mediatek: add extension of phy-mode for TRGMII · 572de608
      Sean Wang 提交于
      adds PHY-mode "trgmii" as an extension for the operation
      mode of the PHY interface for PHY_INTERFACE_MODE_TRGMII.
      and adds a variable trgmii inside mtk_mac as the indication
      to make the difference between the MAC connected to internal
      switch or connected to external PHY by the given configuration
      on the board and then to perform the corresponding setup on
      TRGMII hardware module.
      Signed-off-by: NSean Wang <sean.wang@mediatek.com>
      Cc: Florian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      572de608
    • D
      Merge tag 'rxrpc-rewrite-20160922-v2' of... · 60cd6e63
      David S. Miller 提交于
      Merge tag 'rxrpc-rewrite-20160922-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs
      
      David Howells says:
      
      ====================
      rxrpc: Preparation for slow-start algorithm [ver #2]
      
      Here are some patches that prepare for improvements in ACK generation and
      for the implementation of the slow-start part of the protocol:
      
       (1) Stop storing the protocol header in the Tx socket buffers, but rather
           generate it on the fly.  This potentially saves a little space and
           makes it easier to alter the header just before transmission (the
           flags may get altered and the serial number has to be changed).
      
       (2) Mask off the Tx buffer annotations and add a flag to record which ones
           have already been resent.
      
       (3) Track RTT on a per-peer basis for use in future changes.  Tracepoints
           are added to log this.
      
       (4) Send PING ACKs in response to incoming calls to elicit a PING-RESPONSE
           ACK from which RTT data can be calculated.  The response also carries
           other useful information.
      
       (5) Expedite PING-RESPONSE ACK generation from sendmsg.  If we're actively
           using sendmsg, this allows us, under some circumstances, to avoid
           having to rely on the background work item to run to generate this
           ACK.
      
           This requires ktime_sub_ms() to be added.
      
       (6) Set the REQUEST-ACK flag on some DATA packets to elicit ACK-REQUESTED
           ACKs from which RTT data can be calculated.
      
       (7) Limit the use of pings and ACK requests for RTT determination.
      
      Changes:
      
       (V2) Don't use the C division operator for 64-bit division.  One instance
            should use do_div() and the other should be using nsecs_to_jiffies().
      
            The last two patches got transposed, leading to an undefined symbol
            in one of them.
      Reported-by: Nkbuild test robot <lkp@intel.com>
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      60cd6e63