Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 05e3fb2a authored by Conner Huff's avatar Conner Huff Committed by Subash Abhinov Kasiviswanathan
Browse files

rmnet: advanced flow packet steering



Provides initial hook framework to develop a
smart flow steering solution. Hook function
added in rmnet data path to allow for offloaded
hash computation.

CRs-Fixed: 2277154
Change-Id: I61bcc321fa2b612308ce54c28953c1df956a0fe5
Acked-by: default avatarRaul Martinez <mraul@qti.qualcomm.com>
Signed-off-by: default avatarSubash Abhinov Kasiviswanathan <subashab@codeaurora.org>
Signed-off-by: default avatarConner Huff <chuff@codeaurora.org>
parent 853d7314
Loading
Loading
Loading
Loading
+13 −2
Original line number Diff line number Diff line
@@ -61,12 +61,19 @@ static void rmnet_set_skb_proto(struct sk_buff *skb)
	}
}

/* Shs hook handler */

int (*rmnet_shs_skb_entry)(struct sk_buff *skb,
			   struct rmnet_port *port) __rcu __read_mostly;
EXPORT_SYMBOL(rmnet_shs_skb_entry);

/* Generic handler */

static void
rmnet_deliver_skb(struct sk_buff *skb)
rmnet_deliver_skb(struct sk_buff *skb, struct rmnet_port *port)
{
	struct rmnet_priv *priv = netdev_priv(skb->dev);
	int (*rmnet_shs_stamp)(struct sk_buff *skb, struct rmnet_port *port);

	skb_reset_transport_header(skb);
	skb_reset_network_header(skb);
@@ -75,6 +82,10 @@ rmnet_deliver_skb(struct sk_buff *skb)
	skb->pkt_type = PACKET_HOST;
	skb_set_mac_header(skb, 0);

	rmnet_shs_stamp = rcu_dereference(rmnet_shs_skb_entry);
	if (rmnet_shs_stamp)
		rmnet_shs_stamp(skb, port);

	if (!rmnet_check_skb_can_gro(skb))
		gro_cells_receive(&priv->gro_cells, skb);
	else
@@ -126,7 +137,7 @@ __rmnet_map_ingress_handler(struct sk_buff *skb,
	}

	skb_trim(skb, len);
	rmnet_deliver_skb(skb);
	rmnet_deliver_skb(skb, port);
	return;

free_skb:
+1 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@
/* Constants */
#define RMNET_EGRESS_FORMAT_AGGREGATION         BIT(31)
#define RMNET_INGRESS_FORMAT_DL_MARKER          BIT(30)
#define RMNET_INGRESS_FORMAT_RPS_STAMP          BIG(29)

/* Replace skb->dev to a virtual rmnet device and pass up the stack */
#define RMNET_EPMODE_VND (1)