diff --git a/scapy/layers/inet6.py b/scapy/layers/inet6.py
index c605825757db17b72ad6506ff13db40c964908bc..7888d27b8a05d66d8001273b96b6e843b51c5c51 100644
--- a/scapy/layers/inet6.py
+++ b/scapy/layers/inet6.py
@@ -3861,6 +3861,7 @@ conf.l2types.register(31, IPv6)
 
 bind_layers(Ether,     IPv6,     type = 0x86dd )
 bind_layers(CookedLinux, IPv6,   proto = 0x86dd )
+bind_layers(GRE,       IPv6,     proto = 0x86dd )
 bind_layers(Loopback,  IPv6,     type = 0x1c )
 bind_layers(IPerror6,  TCPerror, nh = socket.IPPROTO_TCP )
 bind_layers(IPerror6,  UDPerror, nh = socket.IPPROTO_UDP )
diff --git a/scapy/layers/l2.py b/scapy/layers/l2.py
index 1bda6318a995770f6f419dbb83d7ceb6f4d7c69b..0a0e6a18fa51a8017295b620d274213c39a216ac 100644
--- a/scapy/layers/l2.py
+++ b/scapy/layers/l2.py
@@ -1090,7 +1090,7 @@ bind_layers( CookedLinux,   EAPOL,         proto=34958)
 bind_layers( GRE,           LLC,           proto=122)
 bind_layers( GRE,           Dot1Q,         proto=33024)
 bind_layers( GRE,           Dot1AD,        type=0x88a8)
-bind_layers( GRE,           Ether,         proto=1)
+bind_layers( GRE,           Ether,         proto=0x6558)
 bind_layers( GRE,           ARP,           proto=2054)
 bind_layers( GRE,           EAPOL,         proto=34958)
 bind_layers( GRE,           GRErouting,    { "routing_present" : 1 } )