diff --git a/target/linux/generic/files/drivers/net/phy/swconfig.c b/target/linux/generic/files/drivers/net/phy/swconfig.c
index a87e25366bff9664e276704299e17d94796a8083..34f43bfd9b93ed504fed087af1dec5033761efd3 100644
--- a/target/linux/generic/files/drivers/net/phy/swconfig.c
+++ b/target/linux/generic/files/drivers/net/phy/swconfig.c
@@ -376,7 +376,7 @@ swconfig_dump_attr(struct swconfig_callback *cb, void *arg)
 	int id = cb->args[0];
 	void *hdr;
 
-	hdr = genlmsg_put(msg, info->snd_pid, info->snd_seq, &switch_fam,
+	hdr = genlmsg_put(msg, info->snd_portid, info->snd_seq, &switch_fam,
 			NLM_F_MULTI, SWITCH_CMD_NEW_ATTR);
 	if (IS_ERR(hdr))
 		return -1;
@@ -798,7 +798,7 @@ swconfig_get_attr(struct sk_buff *skb, struct genl_info *info)
 	if (!msg)
 		goto error;
 
-	hdr = genlmsg_put(msg, info->snd_pid, info->snd_seq, &switch_fam,
+	hdr = genlmsg_put(msg, info->snd_portid, info->snd_seq, &switch_fam,
 			0, cmd);
 	if (IS_ERR(hdr))
 		goto nla_put_failure;
@@ -883,7 +883,7 @@ static int swconfig_dump_switches(struct sk_buff *skb,
 	list_for_each_entry(dev, &swdevs, dev_list) {
 		if (++idx <= start)
 			continue;
-		if (swconfig_send_switch(skb, NETLINK_CB(cb->skb).pid,
+		if (swconfig_send_switch(skb, NETLINK_CB(cb->skb).portid,
 				cb->nlh->nlmsg_seq, NLM_F_MULTI,
 				dev) < 0)
 			break;
diff --git a/target/linux/generic/patches-3.3/a02-swconfig-revert-portid-snd_portid-usage.patch b/target/linux/generic/patches-3.3/a02-swconfig-revert-portid-snd_portid-usage.patch
new file mode 100644
index 0000000000000000000000000000000000000000..e465f90e7ea5f6ac1fe8f10c6b378c805962ad2e
--- /dev/null
+++ b/target/linux/generic/patches-3.3/a02-swconfig-revert-portid-snd_portid-usage.patch
@@ -0,0 +1,30 @@
+reverted:
+--- a/drivers/net/phy/swconfig.c
++++ b/drivers/net/phy/swconfig.c
+@@ -376,7 +376,7 @@ swconfig_dump_attr(struct swconfig_callb
+ 	int id = cb->args[0];
+ 	void *hdr;
+ 
+-	hdr = genlmsg_put(msg, info->snd_portid, info->snd_seq, &switch_fam,
++	hdr = genlmsg_put(msg, info->snd_pid, info->snd_seq, &switch_fam,
+ 			NLM_F_MULTI, SWITCH_CMD_NEW_ATTR);
+ 	if (IS_ERR(hdr))
+ 		return -1;
+@@ -798,7 +798,7 @@ swconfig_get_attr(struct sk_buff *skb, s
+ 	if (!msg)
+ 		goto error;
+ 
+-	hdr = genlmsg_put(msg, info->snd_portid, info->snd_seq, &switch_fam,
++	hdr = genlmsg_put(msg, info->snd_pid, info->snd_seq, &switch_fam,
+ 			0, cmd);
+ 	if (IS_ERR(hdr))
+ 		goto nla_put_failure;
+@@ -883,7 +883,7 @@ static int swconfig_dump_switches(struct
+ 	list_for_each_entry(dev, &swdevs, dev_list) {
+ 		if (++idx <= start)
+ 			continue;
+-		if (swconfig_send_switch(skb, NETLINK_CB(cb->skb).portid,
++		if (swconfig_send_switch(skb, NETLINK_CB(cb->skb).pid,
+ 				cb->nlh->nlmsg_seq, NLM_F_MULTI,
+ 				dev) < 0)
+ 			break;
diff --git a/target/linux/generic/patches-3.6/a02-swconfig-revert-portid-snd_portid-usage.patch b/target/linux/generic/patches-3.6/a02-swconfig-revert-portid-snd_portid-usage.patch
new file mode 100644
index 0000000000000000000000000000000000000000..e465f90e7ea5f6ac1fe8f10c6b378c805962ad2e
--- /dev/null
+++ b/target/linux/generic/patches-3.6/a02-swconfig-revert-portid-snd_portid-usage.patch
@@ -0,0 +1,30 @@
+reverted:
+--- a/drivers/net/phy/swconfig.c
++++ b/drivers/net/phy/swconfig.c
+@@ -376,7 +376,7 @@ swconfig_dump_attr(struct swconfig_callb
+ 	int id = cb->args[0];
+ 	void *hdr;
+ 
+-	hdr = genlmsg_put(msg, info->snd_portid, info->snd_seq, &switch_fam,
++	hdr = genlmsg_put(msg, info->snd_pid, info->snd_seq, &switch_fam,
+ 			NLM_F_MULTI, SWITCH_CMD_NEW_ATTR);
+ 	if (IS_ERR(hdr))
+ 		return -1;
+@@ -798,7 +798,7 @@ swconfig_get_attr(struct sk_buff *skb, s
+ 	if (!msg)
+ 		goto error;
+ 
+-	hdr = genlmsg_put(msg, info->snd_portid, info->snd_seq, &switch_fam,
++	hdr = genlmsg_put(msg, info->snd_pid, info->snd_seq, &switch_fam,
+ 			0, cmd);
+ 	if (IS_ERR(hdr))
+ 		goto nla_put_failure;
+@@ -883,7 +883,7 @@ static int swconfig_dump_switches(struct
+ 	list_for_each_entry(dev, &swdevs, dev_list) {
+ 		if (++idx <= start)
+ 			continue;
+-		if (swconfig_send_switch(skb, NETLINK_CB(cb->skb).portid,
++		if (swconfig_send_switch(skb, NETLINK_CB(cb->skb).pid,
+ 				cb->nlh->nlmsg_seq, NLM_F_MULTI,
+ 				dev) < 0)
+ 			break;