@@ -68,8 +68,7 @@ static inline enum net_verdict process_data(struct net_pkt *pkt)
6868{
6969 int ret ;
7070
71- /* Initial call will forward packets to SOCK_RAW packet sockets. */
72- ret = net_packet_socket_input (pkt , ETH_P_ALL );
71+ ret = net_packet_socket_input (pkt , ETH_P_ALL , SOCK_RAW );
7372 if (ret != NET_CONTINUE ) {
7473 return ret ;
7574 }
@@ -82,7 +81,7 @@ static inline enum net_verdict process_data(struct net_pkt *pkt)
8281 return NET_DROP ;
8382 }
8483
85- if (!net_pkt_is_loopback ( pkt ) && ! net_pkt_is_l2_processed (pkt )) {
84+ if (!net_pkt_is_l2_processed (pkt )) {
8685 ret = net_if_recv_data (net_pkt_iface (pkt ), pkt );
8786 net_pkt_set_l2_processed (pkt , true);
8887 if (ret != NET_CONTINUE ) {
@@ -102,10 +101,7 @@ static inline enum net_verdict process_data(struct net_pkt *pkt)
102101 net_pkt_cursor_init (pkt );
103102
104103 if (IS_ENABLED (CONFIG_NET_SOCKETS_PACKET_DGRAM )) {
105- /* Consecutive call will forward packets to SOCK_DGRAM packet sockets
106- * (after L2 removed header).
107- */
108- ret = net_packet_socket_input (pkt , net_pkt_ll_proto_type (pkt ));
104+ ret = net_packet_socket_input (pkt , net_pkt_ll_proto_type (pkt ), SOCK_DGRAM );
109105 if (ret != NET_CONTINUE ) {
110106 return ret ;
111107 }
@@ -410,6 +406,7 @@ int net_try_send_data(struct net_pkt *pkt, k_timeout_t timeout)
410406 */
411407 NET_DBG ("Loopback pkt %p back to us" , pkt );
412408 net_pkt_set_loopback (pkt , true);
409+ net_pkt_set_l2_processed (pkt , true);
413410 processing_data (pkt );
414411 ret = 0 ;
415412 goto err ;
@@ -482,6 +479,7 @@ static void net_rx(struct net_if *iface, struct net_pkt *pkt)
482479#ifdef CONFIG_NET_L2_DUMMY
483480 if (net_if_l2 (iface ) == & NET_L2_GET_NAME (DUMMY )) {
484481 net_pkt_set_loopback (pkt , true);
482+ net_pkt_set_l2_processed (pkt , true);
485483 }
486484#endif
487485 }
0 commit comments