ソースを参照

net: qualcomm: rmnet: Process packets over ethernet

Add support to send and receive packets over ethernet.
An example of usage is testing the data path on UML. This can be
achieved by setting up two UML instances in multicast mode and
associating rmnet over the UML ethernet device.

Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Subash Abhinov Kasiviswanathan 8 年 前
コミット
74692caf1b
1 ファイル変更10 行追加0 行削除
  1. 10 0
      drivers/net/ethernet/qualcomm/rmnet/rmnet_handlers.c

+ 10 - 0
drivers/net/ethernet/qualcomm/rmnet/rmnet_handlers.c

@@ -15,6 +15,7 @@
 
 
 #include <linux/netdevice.h>
 #include <linux/netdevice.h>
 #include <linux/netdev_features.h>
 #include <linux/netdev_features.h>
+#include <linux/if_arp.h>
 #include "rmnet_private.h"
 #include "rmnet_private.h"
 #include "rmnet_config.h"
 #include "rmnet_config.h"
 #include "rmnet_vnd.h"
 #include "rmnet_vnd.h"
@@ -104,6 +105,15 @@ rmnet_map_ingress_handler(struct sk_buff *skb,
 {
 {
 	struct sk_buff *skbn;
 	struct sk_buff *skbn;
 
 
+	if (skb->dev->type == ARPHRD_ETHER) {
+		if (pskb_expand_head(skb, ETH_HLEN, 0, GFP_KERNEL)) {
+			kfree_skb(skb);
+			return;
+		}
+
+		skb_push(skb, ETH_HLEN);
+	}
+
 	if (port->ingress_data_format & RMNET_INGRESS_FORMAT_DEAGGREGATION) {
 	if (port->ingress_data_format & RMNET_INGRESS_FORMAT_DEAGGREGATION) {
 		while ((skbn = rmnet_map_deaggregate(skb)) != NULL)
 		while ((skbn = rmnet_map_deaggregate(skb)) != NULL)
 			__rmnet_map_ingress_handler(skbn, port);
 			__rmnet_map_ingress_handler(skbn, port);