30 Sep, 2016

26 commits

  • This is to suppress the checkpatch.pl warning "Comparison to NULL
    could be written". No functional changes here.

    Signed-off-by: Jia He
    Signed-off-by: David S. Miller

    Jia He
     
  • The parameter items(is always ICMP6_MIB_MAX) is useless for __snmp6_fill_statsdev

    Signed-off-by: Jia He
    Signed-off-by: David S. Miller

    Jia He
     
  • This is to use the generic interfaces snmp_get_cpu_field{,64}_batch to
    aggregate the data by going through all the items of each cpu sequentially.

    Signed-off-by: Jia He
    Signed-off-by: David S. Miller

    Jia He
     
  • This is to use the generic interfaces snmp_get_cpu_field{,64}_batch to
    aggregate the data by going through all the items of each cpu sequentially.

    Signed-off-by: Jia He
    Signed-off-by: David S. Miller

    Jia He
     
  • This is to use the generic interfaces snmp_get_cpu_field{,64}_batch to
    aggregate the data by going through all the items of each cpu sequentially.

    Signed-off-by: Jia He
    Signed-off-by: David S. Miller

    Jia He
     
  • This is to use the generic interfaces snmp_get_cpu_field{,64}_batch to
    aggregate the data by going through all the items of each cpu sequentially.
    Then snmp_seq_show is split into 2 parts to avoid build warning "the frame
    size" larger than 1024.

    Signed-off-by: Jia He
    Signed-off-by: David S. Miller

    Jia He
     
  • This is to introduce the generic interfaces for snmp_get_cpu_field{,64}.
    It exchanges the two for-loops for collecting the percpu statistics data.
    This can aggregate the data by going through all the items of each cpu
    sequentially.

    Signed-off-by: Jia He
    Suggested-by: Marcelo Ricardo Leitner
    Signed-off-by: David S. Miller

    Jia He
     
  • …git/dhowells/linux-fs

    David Howells says:

    ====================
    rxrpc: Fixes and adjustments

    This set of patches contains some fixes and adjustments:

    (1) Connections for exclusive calls are being reused because the check to
    work out whether to set RXRPC_CONN_DONT_REUSE is checking where the
    parameters will be copied to (but haven't yet).

    (2) Make Tx loss-injection go through the normal return, so the state gets
    set correctly for what the code thinks it has done.

    Note lost Tx packets in the tx_data trace rather than the skb
    tracepoint.

    (3) Activate channels according to the current state from within the
    channel_lock to avoid someone changing it on us.

    (4) Reduce the local endpoint's services list to a single pointer as we
    don't allow service AF_RXRPC sockets to share UDP ports with other
    AF_RXRPC sockets, so there can't be more than one element in the list.

    (5) Request more ACKs in slow-start mode to help monitor the state driving
    the window configuration.

    (6) Display the serial number of the packet being ACK'd rather than the
    ACK packet's own serial number in the congestion trace as this can be
    related to other entries in the trace.
    ====================

    Signed-off-by: David S. Miller <davem@davemloft.net>

    David S. Miller
     
  • …ub/scm/linux/kernel/git/kvalo/wireless-drivers-next

    Kalle Valo says:

    wireless-drivers-next patches for 4.9

    Major changes:

    iwlwifi

    * work for new hardware support continues
    * dynamic queue allocation stabilization
    * improvements in the MSIx code
    * multiqueue support work continues
    * new firmware version support (API 26)
    * add 8275 series support
    * add 9560 series support
    * add support for MU-MIMO sniffer
    * add support for RRM by scan
    * add support for "reverse" rx packet injection faking hw descriptors
    * migrate to devm memory allocation handling
    * Remove support for older firmwares (API older than -17 and -22)

    wl12xx

    * support booting the same rootfs with both wl12xx and wl18xx

    hostap

    * mark the driver as obsolete

    ath9k

    * disable RNG by default
    ====================

    Signed-off-by: David S. Miller <davem@davemloft.net>

    David S. Miller
     
  • Vivien Didelot says:

    ====================
    net: dsa: mv88e6xxx: Global (1) cosmetics

    The Global (1) internal SMI device of Marvell switches is a set of
    registers providing support to different units for MAC addresses (ATU),
    VLANs (VTU), PHY polling (PPU), etc.

    Chips (like 88E6060) may use a different address for it, or have
    subtleties in the units (e.g. different number of databases, changing
    how registers must be accessed), making it hard to maintain properly.

    This patchset is a first step to polish the Global (1) support, with no
    functional changes though. Here's basically what it does:

    - add helpers to access Global1 registers (same for Global2)
    - remove a few family checks (VTU/STU FID registers)
    - s/mv88e6xxx_vtu_stu_entry/mv88e6xxx_vtu_entry/
    - add a per-chip mv88e6xxx_ops structure of function pointers:

    struct mv88e6xxx_ops {
    int (*get_eeprom)(struct mv88e6xxx_chip *chip,
    struct ethtool_eeprom *eeprom, u8 *data);
    int (*set_eeprom)(struct mv88e6xxx_chip *chip,
    struct ethtool_eeprom *eeprom, u8 *data);

    int (*set_switch_mac)(struct mv88e6xxx_chip *chip, u8 *addr);

    int (*phy_read)(struct mv88e6xxx_chip *chip, int addr, int reg,
    u16 *val);
    int (*phy_write)(struct mv88e6xxx_chip *chip, int addr, int reg,
    u16 val);
    };

    Future patchsets will add ATU/VTU ops, software reset, etc.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • Remove EEPROM flags in favor of new {get,set}_eeprom chip-wide
    functions in the mv88e6xxx_ops structure.

    Signed-off-by: Vivien Didelot
    Signed-off-by: David S. Miller

    Vivien Didelot
     
  • Add a set_switch_mac chip-wide function to mv88e6xxx_ops and remove
    MV88E6XXX_FLAG_G2_SWITCH_MAC flags.

    Signed-off-by: Vivien Didelot
    Signed-off-by: David S. Miller

    Vivien Didelot
     
  • Introduce a mv88e6xxx_ops structure to describe supported chip-wide
    functions and assign the correct variant to the chip models.

    For the moment, add only PHY access routines. This allows to get rid of
    the PHY ops structures and the usage of PHY flags.

    Signed-off-by: Vivien Didelot
    Signed-off-by: David S. Miller

    Vivien Didelot
     
  • The mv88e6xxx_ops is used to describe how to access the chip registers.
    It can be through SMI (via an MDIO bus), or via another interface such
    as crafted remote management frames.

    The correct BUS operations structure is chosen at runtime, depending on
    the chip address and connectivity.

    We will need the mv88e6xxx_ops name for future chip-wide operation
    structure, thus rename mv88e6xxx_ops to more explicit mv88e6xxx_bus_ops.

    Signed-off-by: Vivien Didelot
    Signed-off-by: David S. Miller

    Vivien Didelot
     
  • The STU (if the switch has one) is abstracted and accessed through the
    VTU operations and data registers.

    Thus rename the mv88e6xxx_vtu_stu_entry struct to mv88e6xxx_vtu_entry.

    Signed-off-by: Vivien Didelot
    Signed-off-by: David S. Miller

    Vivien Didelot
     
  • Add an mv88e6xxx_num_ports helper instead of digging in the chip info
    structure.

    Signed-off-by: Vivien Didelot
    Signed-off-by: David S. Miller

    Vivien Didelot
     
  • The mv88e6xxx_num_databases will be used by shared code, so move it
    inline to the header file.

    Signed-off-by: Vivien Didelot
    Signed-off-by: David S. Miller

    Vivien Didelot
     
  • Add flags to describe the presence of Global 1 ATU FID register (0x01)
    and VTU FID register (0x02), instead of checking families.

    Signed-off-by: Vivien Didelot
    Signed-off-by: David S. Miller

    Vivien Didelot
     
  • Similarly to the ports, phys, and Global SMI devices, abstract the SMI
    device address of the Global 2 registers in a few g2 static helpers.

    Signed-off-by: Vivien Didelot
    Signed-off-by: David S. Miller

    Vivien Didelot
     
  • The Global (1) internal SMI device is an extended set of registers
    containing ATU, PPU, VTU, STU, etc.

    It is present on every switches, usually at SMI address 0x1B. But old
    models such as 88E6060 access it at address 0xF, thus using REG_GLOBAL
    is erroneous.

    Add a global1_addr info member used by mv88e6xxx_g1_{read,write} and
    mv88e6xxx_g1_wait helpers in a new global1.c file.

    This patch finally removes _mv88e6xxx_reg_{read,write}, in favor on the
    appropriate helpers. No functional changes here.

    Signed-off-by: Vivien Didelot
    Signed-off-by: David S. Miller

    Vivien Didelot
     
  • Note the serial number of the packet being ACK'd in the congestion
    management trace rather than the serial number of the ACK packet. Whilst
    the serial number of the ACK packet is useful for matching ACK packet in
    the output of wireshark, the serial number that the ACK is in response to
    is of more use in working out how different trace lines relate.

    Signed-off-by: David Howells

    David Howells
     
  • Set the request-ACK on more DATA packets whilst we're in slow start mode so
    that we get sufficient ACKs back to supply information to configure the
    window.

    Signed-off-by: David Howells

    David Howells
     
  • Reduce the rxrpc_local::services list to just a pointer as we don't permit
    multiple service endpoints to bind to a single transport endpoints (this is
    excluded by rxrpc_lookup_local()).

    The reason we don't allow this is that if you send a request to an AFS
    filesystem service, it will try to talk back to your cache manager on the
    port you sent from (this is how file change notifications are handled). To
    prevent someone from stealing your CM callbacks, we don't let AF_RXRPC
    sockets share a UDP socket if at least one of them has a service bound.

    Signed-off-by: David Howells

    David Howells
     
  • In rxrpc_activate_channels(), the connection cache state is checked outside
    of the lock, which means it can change whilst we're waking calls up,
    thereby changing whether or not we're allowed to wake calls up.

    Fix this by moving the check inside the locked region. The check to see if
    all the channels are currently busy can stay outside of the locked region.

    Whilst we're at it:

    (1) Split the locked section out into its own function so that we can call
    it from other places in a later patch.

    (2) Determine the mask of channels dependent on the state as we're going
    to add another state in a later patch that will restrict the number of
    simultaneous calls to 1 on a connection.

    Signed-off-by: David Howells

    David Howells
     
  • In rxrpc_send_data_packet() make the loss-injection path return through the
    same code as the transmission path so that the RTT determination is
    initiated and any future timer shuffling will be done, despite the packet
    having been binned.

    Whilst we're at it:

    (1) Add to the tx_data tracepoint an indication of whether or not we're
    retransmitting a data packet.

    (2) When we're deciding whether or not to request an ACK, rather than
    checking if we're in fast-retransmit mode check instead if we're
    retransmitting.

    (3) Don't invoke the lose_skb tracepoint when losing a Tx packet as we're
    not altering the sk_buff refcount nor are we just seeing it after
    getting it off the Tx list.

    (4) The rxrpc_skb_tx_lost note is then no longer used so remove it.

    (5) rxrpc_lose_skb() no longer needs to deal with rxrpc_skb_tx_lost.

    Signed-off-by: David Howells

    David Howells
     
  • Exclusive connections are currently reusable (which they shouldn't be)
    because rxrpc_alloc_client_connection() checks the exclusive flag in the
    rxrpc_connection struct before it's initialised from the function
    parameters. This means that the DONT_REUSE flag doesn't get set.

    Fix this by checking the function parameters for the exclusive flag.

    Signed-off-by: David Howells

    David Howells
     

29 Sep, 2016

6 commits

  • Timur Tabi says:

    ====================
    Add basic ACPI support to the Qualcomm Technologies EMAC driver

    This patch series adds support to the EMAC driver for extracting addresses,
    interrupts, and some _DSDs (properties) from ACPI. The first two patches
    clean up the code, and the third patch adds ACPI-specific functionality.

    The first patch fixes a bug with handling the platform_device for the
    internal PHY. This phy is treated as a separate device in both DT and
    ACPI, but since the platform is not released automatically when the
    driver unloads, managed functions like devm_ioremap_resource cannot be
    used.

    The second patch replaces of_get_mac_address with its platform-independent
    equivalent device_get_mac_address.

    The third patch parses the ACPI tables to obtain the platform_device for
    the primary EMAC node ("QCOM8070") and the internal phy node ("QCOM8071").
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • Add support for reading addresses, interrupts, and _DSD properties
    from ACPI tables, just like with device tree. The HID for the
    EMAC device itself is QCOM8070. The internal PHY is represented
    by a child node with a HID of QCOM8071.

    The EMAC also has some complex clock initialization requirements
    that are not represented by this patch. This will be addressed
    in a future patch.

    Signed-off-by: Timur Tabi
    Signed-off-by: David S. Miller

    Timur Tabi
     
  • Replace the DT-specific of_get_mac_address() function with
    device_get_mac_address, which works on both DT and ACPI platforms. This
    change makes it easier to add ACPI support.

    Signed-off-by: Timur Tabi
    Signed-off-by: David S. Miller

    Timur Tabi
     
  • The platform_device returned by of_find_device_by_node() is not
    automatically released when the driver unprobes. Therefore,
    managed calls like devm_ioremap_resource() should not be used.
    Instead, we manually allocate the resources and then free them
    on driver release.

    Signed-off-by: Timur Tabi
    Signed-off-by: David S. Miller

    Timur Tabi
     
  • Suppose you have a map array value that is something like this

    struct foo {
    unsigned iter;
    int array[SOME_CONSTANT];
    };

    You can easily insert this into an array, but you cannot modify the contents of
    foo->array[] after the fact. This is because we have no way to verify we won't
    go off the end of the array at verification time. This patch provides a start
    for this work. We accomplish this by keeping track of a minimum and maximum
    value a register could be while we're checking the code. Then at the time we
    try to do an access into a MAP_VALUE we verify that the maximum offset into that
    region is a valid access into that memory region. So in practice, code such as
    this

    unsigned index = 0;

    if (foo->iter >= SOME_CONSTANT)
    foo->iter = index;
    else
    index = foo->iter++;
    foo->array[index] = bar;

    would be allowed, as we can verify that index will always be between 0 and
    SOME_CONSTANT-1. If you wish to use signed values you'll have to have an extra
    check to make sure the index isn't less than 0, or do something like index %=
    SOME_CONSTANT.

    Signed-off-by: Josef Bacik
    Acked-by: Alexei Starovoitov
    Signed-off-by: David S. Miller

    Josef Bacik
     
  • Since commit 900f65d361d3 ("tcp: move duplicate code from
    tcp_v4_init_sock()/tcp_v6_init_sock()") we no longer need
    to export sk_stream_write_space()

    From: Eric Dumazet
    Cc: Neal Cardwell

    Signed-off-by: David S. Miller

    Eric Dumazet
     

28 Sep, 2016

8 commits

  • ath.git patches for 4.9. Major changes:

    ath9k

    * disable RNG by default

    Kalle Valo
     
  • The current code changes txhash (flowlables) on every retransmitted
    SYN/ACK, but only after the 2nd retransmitted SYN and only after
    tcp_retries1 RTO retransmits.

    With this patch:
    1) txhash is changed with every SYN retransmits
    2) txhash is changed with every RTO.

    The result is that we can start re-routing around failed (or very
    congested paths) as soon as possible. Otherwise application health
    checks may fail and the connection may be terminated before we start
    to change txhash.

    v4: Removed sysctl, txhash is changed for all RTOs
    v3: Removed text saying default value of sysctl is 0 (it is 100)
    v2: Added sysctl documentation and cleaned code

    Tested with packetdrill tests

    Signed-off-by: Lawrence Brakmo
    Signed-off-by: David S. Miller

    Lawrence Brakmo
     
  • This is old code for old hardware and it is not really accurate to claim
    this to be maintained anymore. Change the status to "Obsolete" to make
    it clearer that minor cleanup and other unnecessary changes from
    automated tools is not necessarily beneficial and has larger risk of
    breaking something without being quickly noticed due to lack of testing.

    In addition, remove the old mailing list that does not work anymore and
    point the web-page to a more accurate URL.

    Signed-off-by: Jouni Malinen
    Signed-off-by: Kalle Valo

    Jouni Malinen
     
  • When building with W=1, we got one warning as belows:
    drivers/net/wireless/ath/ath6kl/wmi.c:3509:6: warning: variable ‘ret’
    set but not used [-Wunused-but-set-variable]

    At the end of ath6kl_wmi_set_pvb_cmd, it is returned by 0 regardless of
    return value of ath6kl_wmi_cmd_send.
    This patch fixes return value from 0 to ret that has result of
    ath6kl_wmi_cmd_send execution.

    Signed-off-by: Chaehyun Lim
    Signed-off-by: Kalle Valo

    Chaehyun Lim
     
  • ath9k RNG will dominates all the noise sources from the real HW
    RNG, disable it by default. But we strongly recommand to enable
    it if the system without HW RNG, especially on embedded systems.

    Signed-off-by: Miaoqing Pan
    Acked-by: Stephan Mueller
    Acked-by: Stephan Mueller
    Reviewed-by: Jason Cooper
    Signed-off-by: Kalle Valo

    Miaoqing Pan
     
  • Firmware is running watchdog timer for tracking copy engine ring index
    and write index. Whenever both indices are stuck at same location for
    given duration, watchdog will be trigger to assert target. While
    updating copy engine destination ring write index, driver ensures that
    write index will not be same as read index by finding delta between these
    two indices (CE_RING_DELTA).

    HTT target to host copy engine (CE5) is special case where ring buffers
    will be reused and delta check is not applied while updating write index.
    In rare scenario, whenever CE5 ring is full, both indices will be referring
    same location and this is causing CE ring stuck issue as explained
    above. This issue is originally reported on IPQ4019 during long hour stress
    testing and during veriwave max clients testsuites. The same issue is
    also observed in other chips as well. Fix this by ensuring that write
    index is one less than read index which means that full ring is
    available for receiving data.

    Cc: stable@vger.kernel.org
    Tested-by: Tamizh chelvam
    Signed-off-by: Rajkumar Manoharan
    Signed-off-by: Kalle Valo

    Rajkumar Manoharan
     
  • Ignore processing further in SWBA event scheduled for a vif, if mac80211
    has marked the particular vif for stop beaconing and brought the vdev
    down in 'ath10k_control_beaconing'. This should potentially avoid ath10k
    warning/error messages while running continuous wifi down/up with max
    number of vaps configured. Found this change during code walk through
    and going through other beacon configuration related functions in ath10k

    Signed-off-by: Mohammed Shafi Shajakhan
    Signed-off-by: Kalle Valo

    Mohammed Shafi Shajakhan
     
  • Fix to return a negative error code from the error handling case
    instead of 0, as done elsewhere in function ath10k_ahb_probe() or
    ath10k_ahb_resource_init().

    Signed-off-by: Wei Yongjun
    Signed-off-by: Kalle Valo

    Wei Yongjun