1. 05 3月, 2019 2 次提交
  2. 04 3月, 2019 3 次提交
  3. 02 3月, 2019 3 次提交
    • A
      net: dsa: mv88e6xxx: Fix statistics on mv88e6161 · a6da21bb
      Andrew Lunn 提交于
      Despite what the datesheet says, the silicon implements the older way
      of snapshoting the statistics. Change the op.
      
      Reported-by: Chris.Healy@zii.aero
      Tested-by: Chris.Healy@zii.aero
      Fixes: 0ac64c39 ("net: dsa: mv88e6xxx: mv88e6161 uses mv88e6320 stats snapshot")
      Signed-off-by: NAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a6da21bb
    • Y
      drivers: net: Remove unnecessary semicolon · f819cd92
      YueHaibing 提交于
      drivers/net/dsa/mt7530.c:649:3-4: Unneeded semicolon
      drivers/net/ethernet/cisco/enic/enic_clsf.c:35:2-3: Unneeded semicolon
      drivers/net/ethernet/faraday/ftgmac100.c:1640:2-3: Unneeded semicolon
      drivers/net/ethernet/mediatek/mtk_eth_soc.c:229:2-3: Unneeded semicolon
      drivers/net/usb/sr9700.c:437:2-3: Unneeded semicolon
      
      Remove unneeded semicolon.
      
      Generated by: scripts/coccinelle/misc/semicolon.cocci
      Signed-off-by: NYueHaibing <yuehaibing@huawei.com>
      Acked-by: Sean Wang <sean.wang@mediatek.com> for mt7530 and mtk_eth_soc
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f819cd92
    • H
      net: dsa: mv88e6xxx: prevent interrupt storm caused by mv88e6390x_port_set_cmode · ed8fe202
      Heiner Kallweit 提交于
      When debugging another issue I faced an interrupt storm in this
      driver (88E6390, port 9 in SGMII mode), consisting of alternating
      link-up / link-down interrupts. Analysis showed that the driver
      wanted to set a cmode that was set already. But so far
      mv88e6390x_port_set_cmode() doesn't check this and powers down
      SERDES, what causes the link to break, and eventually results in
      the described interrupt storm.
      
      Fix this by checking whether the cmode actually changes. We want
      that the very first call to mv88e6390x_port_set_cmode() always
      configures the registers, therefore initialize port.cmode with
      a value that is different from any supported cmode value.
      We have to take care that we only init the ports cmode once
      chip->info->num_ports is set.
      
      v2:
      - add small helper and init the number of actual ports only
      
      Fixes: 364e9d77 ("net: dsa: mv88e6xxx: Power on/off SERDES on cmode change")
      Signed-off-by: NHeiner Kallweit <hkallweit1@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      ed8fe202
  4. 01 3月, 2019 2 次提交
  5. 26 2月, 2019 2 次提交
  6. 25 2月, 2019 9 次提交
  7. 24 2月, 2019 1 次提交
    • F
      net: dsa: mv88e6xxx: Fix -Wformat-security warnings · 3f8b8696
      Florian Fainelli 提交于
      We are not specifying an explicit format argument but instead passing a
      string litteral which causes these two warnings to show up:
      
      drivers/net/dsa/mv88e6xxx/chip.c: In function
      'mv88e6xxx_irq_poll_setup':
      drivers/net/dsa/mv88e6xxx/chip.c:483:2: warning: format not a string
      literal and no format arguments [-Wformat-security]
        chip->kworker = kthread_create_worker(0, dev_name(chip->dev));
        ^~~~
      drivers/net/dsa/mv88e6xxx/ptp.c: In function 'mv88e6xxx_ptp_setup':
      drivers/net/dsa/mv88e6xxx/ptp.c:403:4: warning: format not a string
      literal and no format arguments [-Wformat-security]
          dev_name(chip->dev));
          ^~~~~~~~
        LD [M]  drivers/net/dsa/mv88e6xxx/mv88e6xxx.o
      Signed-off-by: NFlorian Fainelli <f.fainelli@gmail.com>
      Reviewed-by: NAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      3f8b8696
  8. 22 2月, 2019 1 次提交
  9. 20 2月, 2019 1 次提交
  10. 18 2月, 2019 1 次提交
  11. 16 2月, 2019 4 次提交
  12. 14 2月, 2019 2 次提交
    • D
      net: dsa: bcm_sf2: potential array overflow in bcm_sf2_sw_suspend() · 8d6ea932
      Dan Carpenter 提交于
      The value of ->num_ports comes from bcm_sf2_sw_probe() and it is less
      than or equal to DSA_MAX_PORTS.  The ds->ports[] array is used inside
      the dsa_is_user_port() and dsa_is_cpu_port() functions.  The ds->ports[]
      array is allocated in dsa_switch_alloc() and it has ds->num_ports
      elements so this leads to a static checker warning about a potential out
      of bounds read.
      
      Fixes: 8cfa9498 ("net: dsa: bcm_sf2: add suspend/resume callbacks")
      Signed-off-by: NDan Carpenter <dan.carpenter@oracle.com>
      Reviewed-by: NVivien Didelot <vivien.didelot@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      8d6ea932
    • J
      dsa: mv88e6xxx: Ensure all pending interrupts are handled prior to exit · 7c0db24c
      John David Anglin 提交于
      The GPIO interrupt controller on the espressobin board only supports edge interrupts.
      If one enables the use of hardware interrupts in the device tree for the 88E6341, it is
      possible to miss an edge.  When this happens, the INTn pin on the Marvell switch is
      stuck low and no further interrupts occur.
      
      I found after adding debug statements to mv88e6xxx_g1_irq_thread_work() that there is
      a race in handling device interrupts (e.g. PHY link interrupts).  Some interrupts are
      directly cleared by reading the Global 1 status register.  However, the device interrupt
      flag, for example, is not cleared until all the unmasked SERDES and PHY ports are serviced.
      This is done by reading the relevant SERDES and PHY status register.
      
      The code only services interrupts whose status bit is set at the time of reading its status
      register.  If an interrupt event occurs after its status is read and before all interrupts
      are serviced, then this event will not be serviced and the INTn output pin will remain low.
      
      This is not a problem with polling or level interrupts since the handler will be called
      again to process the event.  However, it's a big problem when using level interrupts.
      
      The fix presented here is to add a loop around the code servicing switch interrupts.  If
      any pending interrupts remain after the current set has been handled, we loop and process
      the new set.  If there are no pending interrupts after servicing, we are sure that INTn has
      gone high and we will get an edge when a new event occurs.
      
      Tested on espressobin board.
      
      Fixes: dc30c35b ("net: dsa: mv88e6xxx: Implement interrupt support.")
      Signed-off-by: NJohn David Anglin <dave.anglin@bell.net>
      Tested-by: NAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7c0db24c
  13. 12 2月, 2019 1 次提交
  14. 10 2月, 2019 1 次提交
  15. 09 2月, 2019 4 次提交
  16. 08 2月, 2019 1 次提交
  17. 07 2月, 2019 2 次提交