Who gives SPV nodes merkle path to do validation for small subset of transaction? From Mastering bitcoin:
Merkle trees are used extensively by SPV nodes. SPV nodes don’t have all transactions and do not download full blocks, just block headers. In order to verify that a transaction is included in a block, without having to download all the transactions in the block, they use an authentication path, or merkle path.

Who gives SPV nodes merkle path to do validation for small subset of transaction?
Please share detailed flow.
The thin client requests the Merkle branch from any full node that has the complete block available. It is requested by specifying the inventory type MSG_MERKLEBLOCK, usually in response to learning that the bloomfilter served to the same full node had some positive results. The response includes the block header, the corresponding transactions and the hashing partners necessary to connect the transactions to the Merkle root.

You can find more details in the Bitcoin Developer Guide on MerkleBlock.