Okay, so your firmware is 3160-17.ucode, which is a newer version than what is offered on the link I sent before.
You could try and use the older firmware version (3160-14).
Therefore you download it from the linked version in the intel page: https://wireless.wiki.kernel.org/_media/en/users/drivers/iwlwifi-3160-ucode-25.30.14.0.tgz
You unpack the downloaded archive and copy the file, for example (you of course need to adjust the path to the downloaded file):
sudo cp /home/[your_username]/Downloads/iwlwifi-3160-ucode-25.30.14.0/iwlwifi-3160-14.ucode /lib/firmware
then you need to move the firmware file that is in use out of /lib/firmware e.g.
sudo mv /lib/firmware/iwlwifi-3160-17.ucode.xz /home/[your_username]/
Then you reboot.
After the reboot running dmesg | grep iwl
should return soething like that:
dmesg | grep iwl
[ 15.071867] iwlwifi 0000:03:00.0: Detected crf-id 0x0, cnv-id 0x0 wfpm id 0x0
[ 15.072022] iwlwifi 0000:03:00.0: PCI dev 24fb/2110, rev=0x220, rfid=0xd55555d5
[ 15.074094] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-3168-29.ucode failed with error -2
[ 15.074160] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-3168-28.ucode failed with error -2
[ 15.074519] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-3168-27.ucode failed with error -2
[ 15.074580] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-3168-26.ucode failed with error -2
[ 15.074631] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-3168-25.ucode failed with error -2
[ 15.074673] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-3168-24.ucode failed with error -2
[ 15.074718] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-3168-23.ucode failed with error -2
[ 15.095935] iwlwifi 0000:03:00.0: loaded firmware version 22.361476.0 3168-22.ucode op_mode iwlmvm
[ 16.534259] iwlwifi 0000:03:00.0: Detected Intel(R) Dual Band Wireless AC 3168, REV=0x220
[ 16.612690] iwlwifi 0000:03:00.0: base HW address: 30:e3:7a:34:7b:5a, OTP minor version: 0x0
[ 16.650859] ieee80211 phy0: Selected rate control algorithm 'iwl-mvm-rs'
[ 17.385240] iwlwifi 0000:03:00.0 wlp3s0: renamed from wlan0
[ 20.851480] iwlwifi 0000:03:00.0: Registered PHC clock: iwlwifi-PTP, with index: 0
This example is for my own system, but as you can see iwlwifi will start checking for the firmware version that it expects and then go version by version down until it finds the one that is available in /lib/firmware
So, in your case it should load 3160-14.ucode (in my example it’s 3168-22 instead of 3168-29)
With the older firmware in place you can check if the freezing problem is still persistent in order to rule out whether it’s a firmware problem or not.
If you run into problems with your wifi with the older firmware you can move the initial iwlwifi-3160-17.ucode.xz from your /home/-folder or wherever you put it back to /lib/firmware and reboot.
Btw. you don’t have this freezing problem when you are connected via ethernet, right?