1. 05 Dec, 2011 5 commits
    • françois romieu's avatar
      r8169: fix Rx index race between FIFO overflow recovery and NAPI handler. · c7c2c39b
      françois romieu authored
      Since 92fc43b4, rtl8169_tx_timeout ends up
      resetting Rx and Tx indexes and thus racing with the NAPI handler via
      -> rtl8169_hw_reset
         -> rtl_hw_reset
            -> rtl8169_init_ring_indexes
      
      What about returning to the original state ?
      
      rtl_hw_reset is only used by rtl8169_hw_reset and rtl8169_init_one.
      
      The latter does not need rtl8169_init_ring_indexes because the indexes
      still contain their original values from the newly allocated network
      device private data area (i.e. 0).
      
      rtl8169_hw_reset is used by:
      1. rtl8169_down
         Helper for rtl8169_close. rtl8169_open explicitely inits the indexes
         anyway.
      2. rtl8169_pcierr_interrupt
         Indexes are set by rtl8169_reinit_task.
      3. rtl8169_interrupt
         rtl8169_hw_reset is needed when the device goes down. See 1.
      4. rtl_shutdown
         System shutdown handler. Indexes are irrelevant.
      5. rtl8169_reset_task
         Indexes must be set before rtl_hw_start is called.
      6. rtl8169_tx_timeout
         Indexes should not be set. This is the job of rtl8169_reset_task anyway.
      
      The removal of rtl8169_hw_reset in rtl8169_tx_timeout and its move in
      rtl8169_reset_task do not change the analysis.
      Signed-off-by: default avatarFrancois Romieu <romieu@fr.zoreil.com>
      Cc: hayeswang <hayeswang@realtek.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c7c2c39b
    • françois romieu's avatar
      r8169: Rx FIFO overflow fixes. · 811fd301
      françois romieu authored
      Realtek has specified that the post 8168c gigabit chips and the post
      8105e fast ethernet chips recover automatically from a Rx FIFO overflow.
      The driver does not need to clear the RxFIFOOver bit of IntrStatus and
      it should rather avoid messing it.
      
      The implementation deserves some explanation:
      1. events outside of the intr_event bit mask are now ignored. It enforces
         a no-processing policy for the events that either should not be there
         or should be ignored.
      
      2. RxFIFOOver was already ignored in rtl_cfg_infos[RTL_CFG_1] for the
         whole 8168 line of chips with two exceptions:
         - RTL_GIGA_MAC_VER_22 since b5ba6d12
           ("use RxFIFO overflow workaround for 8168c chipset.").
           This one should now be correctly handled.
         - RTL_GIGA_MAC_VER_11 (8168b) which requires a different Rx FIFO
           overflow processing.
      
         Though it does not conform to Realtek suggestion above, the updated
         driver includes no change for RTL_GIGA_MAC_VER_12 and RTL_GIGA_MAC_VER_17.
         Both are 8168b. RTL_GIGA_MAC_VER_12 is common and a bit old so I'd rather
         wait for experimental evidence that the change suggested by Realtek really
         helps or does not hurt in unexpected ways.
      
         Removed case statements in rtl8169_interrupt are only 8168 relevant.
      
      3. RxFIFOOver is masked for post 8105e 810x chips, namely the sole 8105e
         (RTL_GIGA_MAC_VER_30) itself.
      Signed-off-by: default avatarFrancois Romieu <romieu@fr.zoreil.com>
      Cc: hayeswang <hayeswang@realtek.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      811fd301
    • David S. Miller's avatar
    • David S. Miller's avatar
      ipv4: Fix peer validation on cached lookup. · de398fb8
      David S. Miller authored
      If ipv4_valdiate_peer() fails during a cached entry lookup,
      we'll NULL derer since the loop iterator assumes rth is not
      NULL.
      
      Letting this be handled as a failure is just bogus, so just make it
      not fail.  If we have trouble getting a non-NULL neighbour for the
      redirected gateway, just restore the original gateway and continue.
      
      The very next use of this cached route will try again.
      Reported-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      de398fb8
    • John W. Linville's avatar
      Merge branch 'master' of... · cbec0627
      John W. Linville authored
      Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless into for-davem
      cbec0627
  2. 03 Dec, 2011 1 commit
  3. 02 Dec, 2011 7 commits
    • Wey-Yi Guy's avatar
      iwlwifi: change the default behavior of watchdog timer · 9995ffe5
      Wey-Yi Guy authored
      The current default watchdog timer is enabled, but we are seeing issues on
      legacy devices. So change the default setting of watchdog timer to per
      device based. But user still can use the "wd_disable" module parameter
      to overwrite the system setting
      
      Cc: stable@vger.kernel.org #3.0+
      Signed-off-by: default avatarWey-Yi Guy <wey-yi.w.guy@intel.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      9995ffe5
    • Wey-Yi Guy's avatar
      iwlwifi: do not re-configure HT40 after associated · 34a5b4b6
      Wey-Yi Guy authored
      The ht40 setting should not change after association unless channel switch
      
      This fix a problem we are seeing which cause uCode assert because driver
      sending invalid information and make uCode confuse
      
      Here is the firmware assert message:
      kernel: iwlagn 0000:03:00.0: Microcode SW error detected.  Restarting 0x82000000.
      kernel: iwlagn 0000:03:00.0: Loaded firmware version: 17.168.5.3 build 42301
      kernel: iwlagn 0000:03:00.0: Start IWL Error Log Dump:
      kernel: iwlagn 0000:03:00.0: Status: 0x000512E4, count: 6
      kernel: iwlagn 0000:03:00.0: 0x00002078 | ADVANCED_SYSASSERT
      kernel: iwlagn 0000:03:00.0: 0x00009514 | uPc
      kernel: iwlagn 0000:03:00.0: 0x00009496 | branchlink1
      kernel: iwlagn 0000:03:00.0: 0x00009496 | branchlink2
      kernel: iwlagn 0000:03:00.0: 0x0000D1F2 | interruptlink1
      kernel: iwlagn 0000:03:00.0: 0x00000000 | interruptlink2
      kernel: iwlagn 0000:03:00.0: 0x01008035 | data1
      kernel: iwlagn 0000:03:00.0: 0x0000C90F | data2
      kernel: iwlagn 0000:03:00.0: 0x000005A7 | line
      kernel: iwlagn 0000:03:00.0: 0x5080B520 | beacon time
      kernel: iwlagn 0000:03:00.0: 0xCC515AE0 | tsf low
      kernel: iwlagn 0000:03:00.0: 0x00000003 | tsf hi
      kernel: iwlagn 0000:03:00.0: 0x00000000 | time gp1
      kernel: iwlagn 0000:03:00.0: 0x29703BF0 | time gp2
      kernel: iwlagn 0000:03:00.0: 0x00000000 | time gp3
      kernel: iwlagn 0000:03:00.0: 0x000111A8 | uCode version
      kernel: iwlagn 0000:03:00.0: 0x000000B0 | hw version
      kernel: iwlagn 0000:03:00.0: 0x00480303 | board version
      kernel: iwlagn 0000:03:00.0: 0x09E8004E | hcmd
      kernel: iwlagn 0000:03:00.0: CSR values:
      kernel: iwlagn 0000:03:00.0: (2nd byte of CSR_INT_COALESCING is CSR_INT_PERIODIC_REG)
      kernel: iwlagn 0000:03:00.0:        CSR_HW_IF_CONFIG_REG: 0X00480303
      kernel: iwlagn 0000:03:00.0:          CSR_INT_COALESCING: 0X0000ff40
      kernel: iwlagn 0000:03:00.0:                     CSR_INT: 0X00000000
      kernel: iwlagn 0000:03:00.0:                CSR_INT_MASK: 0X00000000
      kernel: iwlagn 0000:03:00.0:           CSR_FH_INT_STATUS: 0X00000000
      kernel: iwlagn 0000:03:00.0:                 CSR_GPIO_IN: 0X00000030
      kernel: iwlagn 0000:03:00.0:                   CSR_RESET: 0X00000000
      kernel: iwlagn 0000:03:00.0:                CSR_GP_CNTRL: 0X080403c5
      kernel: iwlagn 0000:03:00.0:                  CSR_HW_REV: 0X000000b0
      kernel: iwlagn 0000:03:00.0:              CSR_EEPROM_REG: 0X07d60ffd
      kernel: iwlagn 0000:03:00.0:               CSR_EEPROM_GP: 0X90000001
      kernel: iwlagn 0000:03:00.0:              CSR_OTP_GP_REG: 0X00030001
      kernel: iwlagn 0000:03:00.0:                 CSR_GIO_REG: 0X00080044
      kernel: iwlagn 0000:03:00.0:            CSR_GP_UCODE_REG: 0X000093bb
      kernel: iwlagn 0000:03:00.0:           CSR_GP_DRIVER_REG: 0X00000000
      kernel: iwlagn 0000:03:00.0:           CSR_UCODE_DRV_GP1: 0X00000000
      kernel: iwlagn 0000:03:00.0:           CSR_UCODE_DRV_GP2: 0X00000000
      kernel: iwlagn 0000:03:00.0:                 CSR_LED_REG: 0X00000078
      kernel: iwlagn 0000:03:00.0:        CSR_DRAM_INT_TBL_REG: 0X88214dd2
      kernel: iwlagn 0000:03:00.0:        CSR_GIO_CHICKEN_BITS: 0X27800200
      kernel: iwlagn 0000:03:00.0:             CSR_ANA_PLL_CFG: 0X00000000
      kernel: iwlagn 0000:03:00.0:           CSR_HW_REV_WA_REG: 0X0001001a
      kernel: iwlagn 0000:03:00.0:        CSR_DBG_HPET_MEM_REG: 0Xffff0010
      kernel: iwlagn 0000:03:00.0: FH register values:
      kernel: iwlagn 0000:03:00.0:         FH_RSCSR_CHNL0_STTS_WPTR_REG: 0X21316d00
      kernel: iwlagn 0000:03:00.0:        FH_RSCSR_CHNL0_RBDCB_BASE_REG: 0X021479c0
      kernel: iwlagn 0000:03:00.0:                  FH_RSCSR_CHNL0_WPTR: 0X00000060
      kernel: iwlagn 0000:03:00.0:         FH_MEM_RCSR_CHNL0_CONFIG_REG: 0X80819104
      kernel: iwlagn 0000:03:00.0:          FH_MEM_RSSR_SHARED_CTRL_REG: 0X000000fc
      kernel: iwlagn 0000:03:00.0:            FH_MEM_RSSR_RX_STATUS_REG: 0X07030000
      kernel: iwlagn 0000:03:00.0:    FH_MEM_RSSR_RX_ENABLE_ERR_IRQ2DRV: 0X00000000
      kernel: iwlagn 0000:03:00.0:                FH_TSSR_TX_STATUS_REG: 0X07ff0001
      kernel: iwlagn 0000:03:00.0:                 FH_TSSR_TX_ERROR_REG: 0X00000000
      kernel: iwlagn 0000:03:00.0: Start IWL Event Log Dump: display last 20 entries
      kernel: ------------[ cut here ]------------
      WARNING: at net/mac80211/util.c:1208 ieee80211_reconfig+0x1f1/0x407()
      kernel: Hardware name: 4290W4H
      kernel: Pid: 1896, comm: kworker/0:0 Not tainted 3.1.0 #2
      kernel: Call Trace:
      kernel:  [<ffffffff81036558>] ? warn_slowpath_common+0x73/0x87
      kernel:  [<ffffffff813b8966>] ? ieee80211_reconfig+0x1f1/0x407
      kernel:  [<ffffffff8139e8dc>] ? ieee80211_recalc_smps_work+0x32/0x32
      kernel:  [<ffffffff8139e95a>] ? ieee80211_restart_work+0x7e/0x87
      kernel:  [<ffffffff810472fa>] ? process_one_work+0x1c8/0x2e3
      kernel:  [<ffffffff810480c9>] ? worker_thread+0x17a/0x23a
      kernel:  [<ffffffff81047f4f>] ? manage_workers.clone.18+0x15b/0x15b
      kernel:  [<ffffffff81047f4f>] ? manage_workers.clone.18+0x15b/0x15b
      kernel:  [<ffffffff8104ba97>] ? kthread+0x7a/0x82
      kernel:  [<ffffffff813d21b4>] ? kernel_thread_helper+0x4/0x10
      kernel:  [<ffffffff8104ba1d>] ? kthread_flush_work_fn+0x11/0x11
      kernel:  [<ffffffff813d21b0>] ? gs_change+0xb/0xb
      
      Cc: <stable@kernel.org> 3.1+
      Reported-by: default avatarUdo Steinberg <udo@hypervisor.org>
      Signed-off-by: default avatarWey-Yi Guy <wey-yi.w.guy@intel.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      34a5b4b6
    • Johannes Berg's avatar
      iwlagn: fix HW crypto for TX-only keys · 274b89ca
      Johannes Berg authored
      Group keys in IBSS or AP mode are not programmed
      into the device since we give the key to it with
      every TX packet. However, we do need mac80211 to
      create the MMIC & PN in all cases. Move the code
      around to set the key flags all the time. We set
      them even when the key is removed again but that
      is obviously harmless.
      
      Cc: stable@vger.kernel.org
      Reported-by: default avatarReinette Chatre <reinette.chatre@intel.com>
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: default avatarWey-Yi Guy <wey-yi.w.guy@intel.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      274b89ca
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · 5983fe2b
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (73 commits)
        netfilter: Remove ADVANCED dependency from NF_CONNTRACK_NETBIOS_NS
        ipv4: flush route cache after change accept_local
        sch_red: fix red_change
        Revert "udp: remove redundant variable"
        bridge: master device stuck in no-carrier state forever when in user-stp mode
        ipv4: Perform peer validation on cached route lookup.
        net/core: fix rollback handler in register_netdevice_notifier
        sch_red: fix red_calc_qavg_from_idle_time
        bonding: only use primary address for ARP
        ipv4: fix lockdep splat in rt_cache_seq_show
        sch_teql: fix lockdep splat
        net: fec: Select the FEC driver by default for i.MX SoCs
        isdn: avoid copying too long drvid
        isdn: make sure strings are null terminated
        netlabel: Fix build problems when IPv6 is not enabled
        sctp: better integer overflow check in sctp_auth_create_key()
        sctp: integer overflow in sctp_auth_create_key()
        ipv6: Set mcast_hops to IPV6_DEFAULT_MCASTHOPS when -1 was given.
        net: Fix corruption in /proc/*/net/dev_mcast
        mac80211: fix race between the AGG SM and the Tx data path
        ...
      5983fe2b
    • David S. Miller's avatar
      netfilter: Remove ADVANCED dependency from NF_CONNTRACK_NETBIOS_NS · 3ced1be5
      David S. Miller authored
      firewalld in Fedora 16 needs this.
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3ced1be5
    • Peter Pan(潘卫平)'s avatar
      ipv4: flush route cache after change accept_local · d01ff0a0
      Peter Pan(潘卫平) authored
      After reset ipv4_devconf->data[IPV4_DEVCONF_ACCEPT_LOCAL] to 0,
      we should flush route cache, or it will continue receive packets with local
      source address, which should be dropped.
      Signed-off-by: default avatarWeiping Pan <panweiping3@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d01ff0a0
    • Eric Dumazet's avatar
      sch_red: fix red_change · 1ee5fa1e
      Eric Dumazet authored
      Le mercredi 30 novembre 2011 à 14:36 -0800, Stephen Hemminger a écrit :
      
      > (Almost) nobody uses RED because they can't figure it out.
      > According to Wikipedia, VJ says that:
      >  "there are not one, but two bugs in classic RED."
      
      RED is useful for high throughput routers, I doubt many linux machines
      act as such devices.
      
      I was considering adding Adaptative RED (Sally Floyd, Ramakrishna
      Gummadi, Scott Shender), August 2001
      
      In this version, maxp is dynamic (from 1% to 50%), and user only have to
      setup min_th (target average queue size)
      (max_th and wq (burst in linux RED) are automatically setup)
      
      By the way it seems we have a small bug in red_change()
      
      if (skb_queue_empty(&sch->q))
      	red_end_of_idle_period(&q->parms);
      
      First, if queue is empty, we should call
      red_start_of_idle_period(&q->parms);
      
      Second, since we dont use anymore sch->q, but q->qdisc, the test is
      meaningless.
      
      Oh well...
      
      [PATCH] sch_red: fix red_change()
      
      Now RED is classful, we must check q->qdisc->q.qlen, and if queue is empty,
      we start an idle period, not end it.
      Signed-off-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1ee5fa1e
  4. 01 Dec, 2011 17 commits
  5. 30 Nov, 2011 10 commits