13 Nov, 2020

8 commits

  • Allow variant function "prepare_command" to return error
    code. This is useful for vendors to halt or retry command
    execution if needed.

    Signed-off-by: Stanley Chu

    Bug: 172874931
    Change-Id: Ibe327ab39b83644a1c5a29d821f01c08eb7ea6f1
    Signed-off-by: Stanley Chu

    Stanley Chu
     
  • We have lba and length for unmap commands.

    Bug: 70910891
    Bug: 172970877
    Link: https://lore.kernel.org/linux-scsi/20201112165950.518952-1-jaegeuk@kernel.org/T/#u
    Signed-off-by: Leo Liou
    Change-Id: I8426785f41fa9d7771aa0c095cf43eb0d7f40253

    Leo Liou
     
  • …cm/fs/fscrypt/fscrypt") into android-mainline

    Steps on the way to 5.10-rc4

    Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
    Change-Id: I8554ba37704bee02192ff6117d4909fde568fca2

    Greg Kroah-Hartman
     
  • Pull networking fixes from Jakub Kicinski:
    "Current release - regressions:

    - arm64: dts: fsl-ls1028a-kontron-sl28: specify in-band mode for
    ENETC

    Current release - bugs in new features:

    - mptcp: provide rmem[0] limit offset to fix oops

    Previous release - regressions:

    - IPv6: Set SIT tunnel hard_header_len to zero to fix path MTU
    calculations

    - lan743x: correctly handle chips with internal PHY

    - bpf: Don't rely on GCC __attribute__((optimize)) to disable GCSE

    - mlx5e: Fix VXLAN port table synchronization after function reload

    Previous release - always broken:

    - bpf: Zero-fill re-used per-cpu map element

    - fix out-of-order UDP packets when forwarding with UDP GSO fraglists
    turned on:
    - fix UDP header access on Fast/frag0 UDP GRO
    - fix IP header access and skb lookup on Fast/frag0 UDP GRO

    - ethtool: netlink: add missing netdev_features_change() call

    - net: Update window_clamp if SOCK_RCVBUF is set

    - igc: Fix returning wrong statistics

    - ch_ktls: fix multiple leaks and corner cases in Chelsio TLS offload

    - tunnels: Fix off-by-one in lower MTU bounds for ICMP/ICMPv6 replies

    - r8169: disable hw csum for short packets on all chip versions

    - vrf: Fix fast path output packet handling with async Netfilter
    rules"

    * tag 'net-5.10-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (65 commits)
    lan743x: fix use of uninitialized variable
    net: udp: fix IP header access and skb lookup on Fast/frag0 UDP GRO
    net: udp: fix UDP header access on Fast/frag0 UDP GRO
    devlink: Avoid overwriting port attributes of registered port
    vrf: Fix fast path output packet handling with async Netfilter rules
    cosa: Add missing kfree in error path of cosa_write
    net: switch to the kernel.org patchwork instance
    ch_ktls: stop the txq if reaches threshold
    ch_ktls: tcb update fails sometimes
    ch_ktls/cxgb4: handle partial tag alone SKBs
    ch_ktls: don't free skb before sending FIN
    ch_ktls: packet handling prior to start marker
    ch_ktls: Correction in middle record handling
    ch_ktls: missing handling of header alone
    ch_ktls: Correction in trimmed_len calculation
    cxgb4/ch_ktls: creating skbs causes panic
    ch_ktls: Update cheksum information
    ch_ktls: Correction in finding correct length
    cxgb4/ch_ktls: decrypted bit is not enough
    net/x25: Fix null-ptr-deref in x25_connect
    ...

    Linus Torvalds
     
  • Pull ACPI fixes from Rafael Wysocki:
    "These are mostly docmentation fixes and janitorial changes plus some
    new device IDs and a new quirk.

    Specifics:

    - Fix documentation regarding GPIO properties (Andy Shevchenko)

    - Fix spelling mistakes in ACPI documentation (Flavio Suligoi)

    - Fix white space inconsistencies in ACPI code (Maximilian Luz)

    - Fix string formatting in the ACPI Generic Event Device (GED) driver
    (Nick Desaulniers)

    - Add Intel Alder Lake device IDs to the ACPI drivers used by the
    Dynamic Platform and Thermal Framework (Srinivas Pandruvada)

    - Add lid-related DMI quirk for Medion Akoya E2228T to the ACPI
    button driver (Hans de Goede)"

    * tag 'acpi-5.10-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
    ACPI: DPTF: Support Alder Lake
    Documentation: ACPI: fix spelling mistakes
    ACPI: button: Add DMI quirk for Medion Akoya E2228T
    ACPI: GED: fix -Wformat
    ACPI: Fix whitespace inconsistencies
    ACPI: scan: Fix acpi_dma_configure_id() kerneldoc name
    Documentation: firmware-guide: gpio-properties: Clarify initial output state
    Documentation: firmware-guide: gpio-properties: active_low only for GpioIo()
    Documentation: firmware-guide: gpio-properties: Fix factual mistakes

    Linus Torvalds
     
  • Pull power management fixes from Rafael Wysocki:
    "Make the intel_pstate driver behave as expected when it operates in
    the passive mode with HWP enabled and the 'powersave' governor on top
    of it"

    * tag 'pm-5.10-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
    cpufreq: intel_pstate: Take CPUFREQ_GOV_STRICT_TARGET into account
    cpufreq: Add strict_target to struct cpufreq_policy
    cpufreq: Introduce CPUFREQ_GOV_STRICT_TARGET
    cpufreq: Introduce governor flags

    Linus Torvalds
     
  • When no devicetree is present, the driver will use an
    uninitialized variable.

    Fix by initializing this variable.

    Fixes: 902a66e08cea ("lan743x: correctly handle chips with internal PHY")
    Reported-by: kernel test robot
    Signed-off-by: Sven Van Asbroeck
    Link: https://lore.kernel.org/r/20201112152513.1941-1-TheSven73@gmail.com
    Signed-off-by: Jakub Kicinski

    Sven Van Asbroeck
     
  • Tony Nguyen says:

    ====================
    Intel Wired LAN Driver Updates 2020-11-10

    This series contains updates to i40e and igc drivers and the MAINTAINERS
    file.

    Slawomir fixes updating VF MAC addresses to fix various issues related
    to reporting and setting of these addresses for i40e.

    Dan Carpenter fixes a possible used before being initialized issue for
    i40e.

    Vinicius fixes reporting of netdev stats for igc.

    Tony updates repositories for Intel Ethernet Drivers.

    * '40GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue:
    MAINTAINERS: Update repositories for Intel Ethernet Drivers
    igc: Fix returning wrong statistics
    i40e, xsk: uninitialized variable in i40e_clean_rx_irq_zc()
    i40e: Fix MAC address setting for a VF via Host/VM
    ====================

    Link: https://lore.kernel.org/r/20201111001955.533210-1-anthony.l.nguyen@intel.com
    Signed-off-by: Jakub Kicinski

    Jakub Kicinski
     

12 Nov, 2020

19 commits

  • VRF devices use an optimized direct path on output if a default qdisc
    is involved, calling Netfilter hooks directly. This path, however, does
    not consider Netfilter rules completing asynchronously, such as with
    NFQUEUE. The Netfilter okfn() is called for asynchronously accepted
    packets, but the VRF never passes that packet down the stack to send
    it out over the slave device. Using the slower redirect path for this
    seems not feasible, as we do not know beforehand if a Netfilter hook
    has asynchronously completing rules.

    Fix the use of asynchronously completing Netfilter rules in OUTPUT and
    POSTROUTING by using a special completion function that additionally
    calls dst_output() to pass the packet down the stack. Also, slightly
    adjust the use of nf_reset_ct() so that is called in the asynchronous
    case, too.

    Fixes: dcdd43c41e60 ("net: vrf: performance improvements for IPv4")
    Fixes: a9ec54d1b0cd ("net: vrf: performance improvements for IPv6")
    Signed-off-by: Martin Willi
    Link: https://lore.kernel.org/r/20201106073030.3974927-1-martin@strongswan.org
    Signed-off-by: Jakub Kicinski

    Martin Willi
     
  • * acpi-scan:
    ACPI: scan: Fix acpi_dma_configure_id() kerneldoc name

    * acpi-misc:
    ACPI: GED: fix -Wformat
    ACPI: Fix whitespace inconsistencies

    * acpi-button:
    ACPI: button: Add DMI quirk for Medion Akoya E2228T

    * acpi-dptf:
    ACPI: DPTF: Support Alder Lake

    Rafael J. Wysocki
     
  • …l.org/pub/scm/linux/kernel/git/konrad/swiotlb") into android-mainline

    Steps on the way to 5.10-rc4

    Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
    Change-Id: I74d7b93742dce6256e2d4fe636d7b0ad93d90467

    Greg Kroah-Hartman
     
  • …kernel/git/viro/vfs") into android-mainline

    Steps on the way to 5.10-rc4

    Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
    Change-Id: I9e0fa89c0f6f306fe802ae95c8d01d9ba558e111

    Greg Kroah-Hartman
     
  • Add vendor hook for affinity settings to GIC v3 irqchip
    driver.

    Bug: 172637074
    Change-Id: I65ec8bedcb88c680ba1d6fcd2ffc5944c5a8a89c
    Signed-off-by: Neeraj Upadhyay
    Signed-off-by: Prasad Sodagudi

    Neeraj Upadhyay
     
  • If memory allocation for 'kbuf' succeed, cosa_write() doesn't have a
    corresponding kfree() in exception handling. Thus add kfree() for this
    function implementation.

    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: Hulk Robot
    Signed-off-by: Wang Hai
    Acked-by: Jan "Yenya" Kasprzak
    Link: https://lore.kernel.org/r/20201110144614.43194-1-wanghai38@huawei.com
    Signed-off-by: Jakub Kicinski

    Wang Hai
     
  • Stop the queue and ask for the credits if queue reaches to
    threashold.

    Fixes: 5a4b9fe7fece ("cxgb4/chcr: complete record tx handling")
    Signed-off-by: Rohit Maheshwari
    Signed-off-by: Jakub Kicinski

    Rohit Maheshwari
     
  • context id and port id should be filled while sending tcb update.

    Fixes: 5a4b9fe7fece ("cxgb4/chcr: complete record tx handling")
    Signed-off-by: Rohit Maheshwari
    Signed-off-by: Jakub Kicinski

    Rohit Maheshwari
     
  • If TCP congestion caused a very small packets which only has some
    part fo the TAG, and that too is not till the end. HW can't handle
    such case, so falling back to sw crypto in such cases.

    v1->v2:
    - Marked chcr_ktls_sw_fallback() static.

    Fixes: dc05f3df8fac ("chcr: Handle first or middle part of record")
    Signed-off-by: Rohit Maheshwari
    Signed-off-by: Jakub Kicinski

    Rohit Maheshwari
     
  • If its a last packet and fin is set. Make sure FIN is informed
    to HW before skb gets freed.

    Fixes: 429765a149f1 ("chcr: handle partial end part of a record")
    Signed-off-by: Rohit Maheshwari
    Signed-off-by: Jakub Kicinski

    Rohit Maheshwari
     
  • There could be a case where ACK for tls exchanges prior to start
    marker is missed out, and by the time tls is offloaded. This pkt
    should not be discarded and handled carefully. It could be
    plaintext alone or plaintext + finish as well.

    Fixes: 5a4b9fe7fece ("cxgb4/chcr: complete record tx handling")
    Signed-off-by: Rohit Maheshwari
    Signed-off-by: Jakub Kicinski

    Rohit Maheshwari
     
  • If a record starts in middle, reset TCB UNA so that we could
    avoid sending out extra packet which is needed to make it 16
    byte aligned to start AES CTR.
    Check also considers prev_seq, which should be what is
    actually sent, not the skb data length.
    Avoid updating partial TAG to HW at any point of time, that's
    why we need to check if remaining part is smaller than TAG
    size, then reset TX_MAX to be TAG starting sequence number.

    Fixes: 5a4b9fe7fece ("cxgb4/chcr: complete record tx handling")
    Signed-off-by: Rohit Maheshwari
    Signed-off-by: Jakub Kicinski

    Rohit Maheshwari
     
  • If an skb has only header part which doesn't start from
    beginning, is not being handled properly.

    Fixes: dc05f3df8fac ("chcr: Handle first or middle part of record")
    Signed-off-by: Rohit Maheshwari
    Signed-off-by: Jakub Kicinski

    Rohit Maheshwari
     
  • trimmed length calculation goes wrong if skb has only tag part
    to send. It should be zero if there is no data bytes apart from
    TAG.

    Fixes: dc05f3df8fac ("chcr: Handle first or middle part of record")
    Signed-off-by: Rohit Maheshwari
    Signed-off-by: Jakub Kicinski

    Rohit Maheshwari
     
  • Creating SKB per tls record and freeing the original one causes
    panic. There will be race if connection reset is requested. By
    freeing original skb, refcnt will be decremented and that means,
    there is no pending record to send, and so tls_dev_del will be
    requested in control path while SKB of related connection is in
    queue.
    Better approach is to use same SKB to send one record (partial
    data) at a time. We still have to create a new SKB when partial
    last part of a record is requested.
    This fix introduces new API cxgb4_write_partial_sgl() to send
    partial part of skb. Present cxgb4_write_sgl can only provide
    feasibility to start from an offset which limits to header only
    and it can write sgls for the whole skb len. But this new API
    will help in both. It can start from any offset and can end
    writing in middle of the skb.

    v4->v5:
    - Removed extra changes.

    Fixes: 429765a149f1 ("chcr: handle partial end part of a record")
    Signed-off-by: Rohit Maheshwari
    Signed-off-by: Jakub Kicinski

    Rohit Maheshwari
     
  • Checksum update was missing in the WR.

    Fixes: 429765a149f1 ("chcr: handle partial end part of a record")
    Signed-off-by: Rohit Maheshwari
    Signed-off-by: Jakub Kicinski

    Rohit Maheshwari
     
  • There is a possibility of linear skbs coming in. Correcting
    the length extraction logic.

    v2->v3:
    - Separated un-related changes from this patch.

    Fixes: 5a4b9fe7fece ("cxgb4/chcr: complete record tx handling")
    Signed-off-by: Rohit Maheshwari
    Signed-off-by: Jakub Kicinski

    Rohit Maheshwari
     
  • If skb has retransmit data starting before start marker, e.g. ccs,
    decrypted bit won't be set for that, and if it has some data to
    encrypt, then it must be given to crypto ULD. So in place of
    decrypted, check if socket is tls offloaded. Also, unless skb has
    some data to encrypt, no need to give it for tls offload handling.

    v2->v3:
    - Removed ifdef.

    Fixes: 5a4b9fe7fece ("cxgb4/chcr: complete record tx handling")
    Signed-off-by: Rohit Maheshwari
    Signed-off-by: Jakub Kicinski

    Rohit Maheshwari
     
  • …ernel/git/konrad/swiotlb

    Pull swiotlb fixes from Konrad Rzeszutek Wilk:
    "Two tiny fixes for issues that make drivers under Xen unhappy under
    certain conditions"

    * 'stable/for-linus-5.10-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/swiotlb:
    swiotlb: remove the tbl_dma_addr argument to swiotlb_tbl_map_single
    swiotlb: fix "x86: Don't panic if can not alloc buffer for swiotlb"

    Linus Torvalds
     

11 Nov, 2020

13 commits

  • In the net core, the struct net_device_ops -> ndo_set_rx_mode()
    callback is called with the dev->addr_list_lock spinlock held.

    However, this driver's ndo_set_rx_mode callback eventually calls
    lan743x_dp_write(), which acquires a mutex. Mutex acquisition
    may sleep, and this is not allowed when holding a spinlock.

    Fix by removing the dp_lock mutex entirely. Its purpose is to
    prevent concurrent accesses to the data port. No concurrent
    accesses are possible, because the dev->addr_list_lock
    spinlock in the core only lets through one thread at a time.

    Fixes: 23f0703c125b ("lan743x: Add main source files for new lan743x driver")
    Signed-off-by: Sven Van Asbroeck
    Link: https://lore.kernel.org/r/20201109203828.5115-1-TheSven73@gmail.com
    Signed-off-by: Jakub Kicinski

    Sven Van Asbroeck
     
  • When mv88e6xxx_fid_map return error, we lost free the table.

    Fix it.

    Fixes: bfb255428966 ("net: dsa: mv88e6xxx: Add devlink regions")
    Reported-by: Hulk Robot
    Signed-off-by: zhangxiaoxu
    Reviewed-by: Andrew Lunn
    Link: https://lore.kernel.org/r/20201109144416.1540867-1-zhangxiaoxu5@huawei.com
    Signed-off-by: Jakub Kicinski

    zhangxiaoxu
     
  • The RTL8401-internal PHY identifies as RTL8201CP, and the init
    sequence in r8169, copied from vendor driver r8168, uses paged
    operations. Therefore set the same paged operation callbacks as
    for the other Realtek PHY's.

    Fixes: cdafdc29ef75 ("r8169: sync support for RTL8401 with vendor driver")
    Signed-off-by: Heiner Kallweit
    Link: https://lore.kernel.org/r/69882f7a-ca2f-e0c7-ae83-c9b6937282cd@gmail.com
    Signed-off-by: Jakub Kicinski

    Heiner Kallweit
     
  • Commit 6f197fb63850 ("lan743x: Added fixed link and RGMII support")
    assumes that chips with an internal PHY will never have a devicetree
    entry. This is incorrect: even for these chips, a devicetree entry
    can be useful e.g. to pass the mac address from bootloader to chip:

    &pcie {
    status = "okay";

    host@0 {
    reg = ;

    #address-cells = ;
    #size-cells = ;

    lan7430: ethernet@0 {
    /* LAN7430 with internal PHY */
    compatible = "microchip,lan743x";
    status = "okay";
    reg = ;
    /* filled in by bootloader */
    local-mac-address = [00 00 00 00 00 00];
    };
    };
    };

    If a devicetree entry is present, the driver will not attach the chip
    to its internal phy, and the chip will be non-operational.

    Fix by tweaking the phy connection algorithm:
    - first try to connect to a phy specified in the devicetree
    (could be 'real' phy, or just a 'fixed-link')
    - if that doesn't succeed, try to connect to an internal phy, even
    if the chip has a devnode

    Tested on a LAN7430 with internal PHY. I cannot test a device using
    fixed-link, as I do not have access to one.

    Fixes: 6f197fb63850 ("lan743x: Added fixed link and RGMII support")
    Tested-by: Sven Van Asbroeck # lan7430
    Reviewed-by: Andrew Lunn
    Signed-off-by: Sven Van Asbroeck
    Link: https://lore.kernel.org/r/20201108171224.23829-1-TheSven73@gmail.com
    Signed-off-by: Jakub Kicinski

    Sven Van Asbroeck
     
  • 'igc_update_stats()' was not updating 'netdev->stats', so the returned
    statistics, for example, requested by:

    $ ip -s link show dev enp3s0

    were not being updated and were always zero.

    Fix by returning a set of statistics that are actually being
    updated (adapter->stats64).

    Fixes: c9a11c23ceb6 ("igc: Add netdev")
    Signed-off-by: Vinicius Costa Gomes
    Tested-by: Aaron Brown
    Signed-off-by: Tony Nguyen

    Vinicius Costa Gomes
     
  • The "failure" variable is used without being initialized. It should be
    set to false.

    Fixes: 8cbf74149903 ("i40e, xsk: move buffer allocation out of the Rx processing loop")
    Signed-off-by: Dan Carpenter
    Acked-by: Björn Töpel
    Tested-by: George Kuruvinakunnel
    Signed-off-by: Tony Nguyen

    Dan Carpenter
     
  • Fix MAC setting flow for the PF driver.

    Update the unicast VF's MAC address in VF structure if it is
    a new setting in i40e_vc_add_mac_addr_msg.

    When unicast MAC address gets deleted, record that and
    set the new unicast MAC address that is already waiting in the filter
    list. This logic is based on the order of messages arriving to
    the PF driver.

    Without this change the MAC address setting was interpreted
    incorrectly in the following use cases:
    1) Print incorrect VF MAC or zero MAC
    ip link show dev $pf
    2) Don't preserve MAC between driver reload
    rmmod iavf; modprobe iavf
    3) Update VF MAC when macvlan was set
    ip link add link $vf address $mac $vf.1 type macvlan
    4) Failed to update mac address when VF was trusted
    ip link set dev $vf address $mac

    This includes all other configurations including above commands.

    Fixes: f657a6e1313b ("i40e: Fix VF driver MAC address configuration")
    Signed-off-by: Slawomir Laba
    Tested-by: Konrad Jankowski
    Signed-off-by: Tony Nguyen

    Slawomir Laba
     
  • UFSHCD_QUIRK_BROKEN_CRYPTO_CAPS really means
    "override the blk_keyslot_manager", which (at least for now) handles
    both the crypto capabilities and the actual keyslot management.
    So give it a better name: UFSHCD_QUIRK_CUSTOM_KEYSLOT_MANAGER.

    Also, fix ufshcd_init_crypto() to call hba->ksm.ksm_ll_ops.keyslot_evict
    instead of using the standard key eviction procedure. This is needed
    when the blk_keyslot_manager is overridden with one that has
    num_slots > 0 and uses a nonstandard key eviction procedure.

    This patch, ANDROID-scsi-ufs-add-UFSHCD_QUIRK_BROKEN_CRYPTO_CAPS.patch,
    and ANDROID-scsi-ufs-allow-for-there-to-be-no-keyslots.patch should all
    be folded into one patch.

    Bug: 162257402
    Bug: 166139333
    Change-Id: I7081bdd111f638eb28366aacbd9f9c3a093495ee
    Signed-off-by: Eric Biggers

    Eric Biggers
     
  • Create a vendor hook for jiffies updates by the
    tick_do_timer_cpu.

    Bug: 148928265
    Change-Id: Ia442e20d446b8ce4f2b3f2be76655e72919c76eb
    Signed-off-by: Amir Vajid

    Amir Vajid
     
  • Enable writable clock debugfs files which are required for debugging and
    testing. This doesn't introduce security or safety issues for Android
    since debugfs itself is already considered unsafe and mounting it isn't
    allowed on user devices.

    Bug: 172264964
    Change-Id: I68bd54cfe3765e2b3cbb208383c6117e662054b7
    Signed-off-by: Mike Tipton

    Mike Tipton
     
  • Add vendor hook for skipping console flush in cpu hotplug.

    Bug: 165340180
    Change-Id: I167e1595bbb50e57371bfabfde638624761d5f8a
    Signed-off-by: Prasad Sodagudi

    Prasad Sodagudi
     
  • Pull turbostat updates from Len Brown:
    "Update update to version 20.09.30, one kernel side fix"

    * 'turbostat' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux:
    tools/power turbostat: update version number
    powercap: restrict energy meter to root access
    tools/power turbostat: harden against cpu hotplug
    tools/power turbostat: adjust for temperature offset
    tools/power turbostat: Build with _FILE_OFFSET_BITS=64
    tools/power turbostat: Support AMD Family 19h
    tools/power turbostat: Remove empty columns for Jacobsville
    tools/power turbostat: Add a new GFXAMHz column that exposes gt_act_freq_mhz.
    tools/power x86_energy_perf_policy: Input/output error in a VM
    tools/power turbostat: Skip pc8, pc9, pc10 columns, if they are disabled
    tools/power turbostat: Support additional CPU model numbers
    tools/power turbostat: Fix output formatting for ACPI CST enumeration
    tools/power turbostat: Replace HTTP links with HTTPS ones: TURBOSTAT UTILITY
    tools/power turbostat: Use sched_getcpu() instead of hardcoded cpu 0
    tools/power turbostat: Enable accumulate RAPL display
    tools/power turbostat: Introduce functions to accumulate RAPL consumption
    tools/power turbostat: Make the energy variable to be 64 bit
    tools/power turbostat: Always print idle in the system configuration header
    tools/power turbostat: Print /dev/cpu_dma_latency

    Linus Torvalds
     
  • Add Alder Lake ACPI IDs for DPTF devices.

    Signed-off-by: Srinivas Pandruvada
    Signed-off-by: Rafael J. Wysocki

    Srinivas Pandruvada