First, f is bijective because, plugging x=1, we get f(f(y)+f(1))=2f(1)+x; x+2f(1) spans all real numbers (so f is surjective) and f(x)=f(y)⟺f(x)+f(1)=f(y)+f(1)⟺f(f(x)+f(1))=f(f(y)+f(1))⟺2f(1)+x=2f(1)+y⟺x=y (so f is injective).
Choose x=0 and y such that 2f(x)+xy=f(x)⟺y=−xf(x). By injectivity,
xf(−xf(x))+f(x)=x⟺f(−xf(x))+xf(x)=1(∗)
Now, set x=y=0: f(f(0))=2f(0). Let a=f(0), so that f(a)=2a. If a=0, setting y=0 we get f(f(x))=2f(x) and by surjectivity f(x)=2x for all x. This function doesn't work (by testing), so a can't be 0. So a=0 and plugging x=a in (∗), we obtain (recall that f(a)=2a):
f(−2)+2=1⟺f(−2)=−1
Now set y=0: f(f(x)−x)=2(f(x)−x). Now we find all real numbers k such that f(k)=2k. If there is only one possible value for k, we are almost done because f(x)−x=k⟺f(x)=x+k and by testing the function, f(x)=x+1.
Let m be such that f(m)=k (it exists because f is surjective). Plug x=m and y=0: recalling that f(0)=a,
f(mf(0)+f(m))=2f(m)⟺f(ma+k)=2k=f(k)
By injectivity,
ma+k=k⟺ma=0⟺m=0
because we already proved that a=0. So there is only one value for k, namely, k=f(0)=a. Then, we're done: the only function is f(x)=x+1.