Find out what is bound before doing anything:
lspci -nnk | grep -A 3 -i ethernet
That prints the device, its numeric identifier, and the kernel module in use. Note the identifier — it is what you search with, and it is far more reliable than the marketing name on the box.
Then, in order of preference:
1. A newer kernel. Support for these controllers has improved steadily, and the single most effective fix is a kernel newer than the one your distribution shipped. Several distributions offer a newer kernel as a supported option, and this is far better than any manual driver because it keeps updating.
2. The vendor's out-of-tree driver, built and installed, with the in-kernel one blacklisted so it does not claim the device first. This works and it is a module you must rebuild on every kernel update unless you install it through the mechanism that does that automatically.
3. A cheap add-in card on a different chipset. Genuinely the right answer for some people — it costs less than an evening.