diff options
author | Alexandros C. Couloumbis <alex@ozo.com> | 2010-03-11 12:25:50 +0000 |
---|---|---|
committer | Alexandros C. Couloumbis <alex@ozo.com> | 2010-03-11 12:25:50 +0000 |
commit | 72c480213013934d1ce989efefa7baf928938966 (patch) | |
tree | c11fd631e3247af63ba31df855de079df178c611 /target/linux/ar71xx/patches-2.6.34/122-dsa-add-qinq-tagging-format.patch | |
parent | 29fec42733aec697e4bd5edf0be9f4d803853ef1 (diff) | |
download | master-187ad058-72c480213013934d1ce989efefa7baf928938966.tar.gz master-187ad058-72c480213013934d1ce989efefa7baf928938966.tar.bz2 master-187ad058-72c480213013934d1ce989efefa7baf928938966.zip |
ar71xx: add 2.6.34 preliminary support (patches)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@20141 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/ar71xx/patches-2.6.34/122-dsa-add-qinq-tagging-format.patch')
-rw-r--r-- | target/linux/ar71xx/patches-2.6.34/122-dsa-add-qinq-tagging-format.patch | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/target/linux/ar71xx/patches-2.6.34/122-dsa-add-qinq-tagging-format.patch b/target/linux/ar71xx/patches-2.6.34/122-dsa-add-qinq-tagging-format.patch new file mode 100644 index 0000000000..dc03fd6eb4 --- /dev/null +++ b/target/linux/ar71xx/patches-2.6.34/122-dsa-add-qinq-tagging-format.patch @@ -0,0 +1,79 @@ +--- a/include/linux/if_ether.h ++++ b/include/linux/if_ether.h +@@ -81,6 +81,7 @@ + #define ETH_P_1588 0x88F7 /* IEEE 1588 Timesync */ + #define ETH_P_FCOE 0x8906 /* Fibre Channel over Ethernet */ + #define ETH_P_FIP 0x8914 /* FCoE Initialization Protocol */ ++#define ETH_P_QINQ 0x9100 /* QinQ VLAN Stacking Protocol */ + #define ETH_P_EDSA 0xDADA /* Ethertype DSA [ NOT AN OFFICIALLY REGISTERED ID ] */ + + /* +--- a/net/dsa/dsa_priv.h ++++ b/net/dsa/dsa_priv.h +@@ -174,6 +174,9 @@ netdev_tx_t dsa_xmit(struct sk_buff *skb + /* tag_edsa.c */ + netdev_tx_t edsa_xmit(struct sk_buff *skb, struct net_device *dev); + ++/* tag_qinq.c */ ++netdev_tx_t qinq_xmit(struct sk_buff *skb, struct net_device *dev); ++ + /* tag_trailer.c */ + netdev_tx_t trailer_xmit(struct sk_buff *skb, struct net_device *dev); + +--- a/net/dsa/Kconfig ++++ b/net/dsa/Kconfig +@@ -23,6 +23,10 @@ config NET_DSA_TAG_TRAILER + bool + default n + ++config NET_DSA_TAG_QINQ ++ bool ++ default y ++ + + # switch drivers + config NET_DSA_MV88E6XXX +--- a/net/dsa/Makefile ++++ b/net/dsa/Makefile +@@ -1,6 +1,7 @@ + # tagging formats + obj-$(CONFIG_NET_DSA_TAG_DSA) += tag_dsa.o + obj-$(CONFIG_NET_DSA_TAG_EDSA) += tag_edsa.o ++obj-$(CONFIG_NET_DSA_TAG_QINQ) += tag_qinq.o + obj-$(CONFIG_NET_DSA_TAG_TRAILER) += tag_trailer.o + + # switch drivers +--- a/net/dsa/slave.c ++++ b/net/dsa/slave.c +@@ -321,6 +321,19 @@ static const struct net_device_ops edsa_ + .ndo_do_ioctl = dsa_slave_ioctl, + }; + #endif ++#ifdef CONFIG_NET_DSA_TAG_QINQ ++static const struct net_device_ops qinq_netdev_ops = { ++ .ndo_init = dsa_slave_init, ++ .ndo_open = dsa_slave_open, ++ .ndo_stop = dsa_slave_close, ++ .ndo_start_xmit = qinq_xmit, ++ .ndo_change_rx_flags = dsa_slave_change_rx_flags, ++ .ndo_set_rx_mode = dsa_slave_set_rx_mode, ++ .ndo_set_multicast_list = dsa_slave_set_rx_mode, ++ .ndo_set_mac_address = dsa_slave_set_mac_address, ++ .ndo_do_ioctl = dsa_slave_ioctl, ++}; ++#endif + #ifdef CONFIG_NET_DSA_TAG_TRAILER + static const struct net_device_ops trailer_netdev_ops = { + .ndo_init = dsa_slave_init, +@@ -366,6 +379,11 @@ dsa_slave_create(struct dsa_switch *ds, + slave_dev->netdev_ops = &edsa_netdev_ops; + break; + #endif ++#ifdef CONFIG_NET_DSA_TAG_QINQ ++ case htons(ETH_P_QINQ): ++ slave_dev->netdev_ops = &qinq_netdev_ops; ++ break; ++#endif + #ifdef CONFIG_NET_DSA_TAG_TRAILER + case htons(ETH_P_TRAILER): + slave_dev->netdev_ops = &trailer_netdev_ops; |