Preheat oven to 350°F and grease two 9-inch round cake pans, lining bottoms with parchment.
Whisk flour, baking powder, and salt together in a bowl.
Beat butter and sugar until very light and fluffy, about 4 minutes, then add eggs one at a time, then vanilla.
Alternate adding flour mixture and milk, beginning and ending with flour, mixing just until combined.
Divide batter evenly between pans and bake 28-32 minutes until a toothpick comes out clean.
Cool completely, then beat all frosting ingredients until smooth and fluffy.
Place one cake layer on a stand, spread frosting, top with second layer, and frost top and sides.