]> git.proxmox.com Git - mirror_ubuntu-disco-kernel.git/commitdiff
net: qualcomm: rmnet: Remove duplicate setting of rmnet private info
authorSubash Abhinov Kasiviswanathan <subashab@codeaurora.org>
Thu, 12 Oct 2017 00:43:55 +0000 (18:43 -0600)
committerDavid S. Miller <davem@davemloft.net>
Thu, 12 Oct 2017 03:05:30 +0000 (20:05 -0700)
The end point is set twice in the local_ep as well as the mux_id and
the real_dev in the rmnet private structure. Remove the local_ep.
While these elements are equivalent, rmnet_endpoint will be
used only as part of the rmnet_port for muxed scenarios in VND mode.

Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c
drivers/net/ethernet/qualcomm/rmnet/rmnet_config.h
drivers/net/ethernet/qualcomm/rmnet/rmnet_handlers.c
drivers/net/ethernet/qualcomm/rmnet/rmnet_handlers.h
drivers/net/ethernet/qualcomm/rmnet/rmnet_vnd.c
drivers/net/ethernet/qualcomm/rmnet/rmnet_vnd.h

index 85fce9c4d2349f6f205fc870d04e8048f11e54b0..96058bbccf7164c20aff884a5e4273282f562835 100644 (file)
@@ -67,13 +67,8 @@ rmnet_get_endpoint(struct net_device *dev, int config_id)
        struct rmnet_endpoint *ep;
        struct rmnet_port *port;
 
-       if (!rmnet_is_real_dev_registered(dev)) {
-               ep = rmnet_vnd_get_endpoint(dev);
-       } else {
-               port = rmnet_get_port_rtnl(dev);
-
-               ep = &port->muxed_ep[config_id];
-       }
+       port = rmnet_get_port_rtnl(dev);
+       ep = &port->muxed_ep[config_id];
 
        return ep;
 }
@@ -183,7 +178,6 @@ static int rmnet_newlink(struct net *src_net, struct net_device *dev,
        port->rmnet_mode = mode;
 
        rmnet_set_endpoint_config(real_dev, mux_id, dev);
-       rmnet_set_endpoint_config(dev, mux_id, real_dev);
        return 0;
 
 err2:
index 03d473f394766dc362d69d351e27c981425edcf7..c5f5c6d957c0156980d5e58dd0e2b90ec5eeaf67 100644 (file)
@@ -20,9 +20,6 @@
 
 #define RMNET_MAX_LOGICAL_EP 255
 
-/* Information about the next device to deliver the packet to.
- * Exact usage of this parameter depends on the rmnet_mode.
- */
 struct rmnet_endpoint {
        u8 mux_id;
        struct net_device *egress_dev;
@@ -44,7 +41,6 @@ struct rmnet_port {
 extern struct rtnl_link_ops rmnet_link_ops;
 
 struct rmnet_priv {
-       struct rmnet_endpoint local_ep;
        u8 mux_id;
        struct net_device *real_dev;
 };
index 86e37cc3b52c1f155188bc8886244a898695c676..e0802d32d6a5036673c358b55f82c0d47a8b9b26 100644 (file)
@@ -116,8 +116,7 @@ rmnet_map_ingress_handler(struct sk_buff *skb,
 }
 
 static int rmnet_map_egress_handler(struct sk_buff *skb,
-                                   struct rmnet_port *port,
-                                   struct rmnet_endpoint *ep,
+                                   struct rmnet_port *port, u8 mux_id,
                                    struct net_device *orig_dev)
 {
        int required_headroom, additional_header_len;
@@ -136,10 +135,10 @@ static int rmnet_map_egress_handler(struct sk_buff *skb,
                return RMNET_MAP_CONSUMED;
 
        if (port->egress_data_format & RMNET_EGRESS_FORMAT_MUXING) {
-               if (ep->mux_id == 0xff)
+               if (mux_id == 0xff)
                        map_header->mux_id = 0;
                else
-                       map_header->mux_id = ep->mux_id;
+                       map_header->mux_id = mux_id;
        }
 
        skb->protocol = htons(ETH_P_MAP);
@@ -176,14 +175,17 @@ rx_handler_result_t rmnet_rx_handler(struct sk_buff **pskb)
  * for egress device configured in logical endpoint. Packet is then transmitted
  * on the egress device.
  */
-void rmnet_egress_handler(struct sk_buff *skb,
-                         struct rmnet_endpoint *ep)
+void rmnet_egress_handler(struct sk_buff *skb)
 {
        struct net_device *orig_dev;
        struct rmnet_port *port;
+       struct rmnet_priv *priv;
+       u8 mux_id;
 
        orig_dev = skb->dev;
-       skb->dev = ep->egress_dev;
+       priv = netdev_priv(orig_dev);
+       skb->dev = priv->real_dev;
+       mux_id = priv->mux_id;
 
        port = rmnet_get_port(skb->dev);
        if (!port) {
@@ -192,7 +194,7 @@ void rmnet_egress_handler(struct sk_buff *skb,
        }
 
        if (port->egress_data_format & RMNET_EGRESS_FORMAT_MAP) {
-               switch (rmnet_map_egress_handler(skb, port, ep, orig_dev)) {
+               switch (rmnet_map_egress_handler(skb, port, mux_id, orig_dev)) {
                case RMNET_MAP_CONSUMED:
                        return;
 
index f2638cf5693c523e3bd1199a8217009349b6c9e2..3537e4ceedb379d3b90dc13f0fe8ff81c4707b6b 100644 (file)
@@ -18,8 +18,7 @@
 
 #include "rmnet_config.h"
 
-void rmnet_egress_handler(struct sk_buff *skb,
-                         struct rmnet_endpoint *ep);
+void rmnet_egress_handler(struct sk_buff *skb);
 
 rx_handler_result_t rmnet_rx_handler(struct sk_buff **pskb);
 
index 7f90d5587653b04181abc45d1e52ed02bc462b72..4ca59a4389b8beaf312acd068ef132a2a43cfde4 100644 (file)
@@ -45,8 +45,8 @@ static netdev_tx_t rmnet_vnd_start_xmit(struct sk_buff *skb,
        struct rmnet_priv *priv;
 
        priv = netdev_priv(dev);
-       if (priv->local_ep.egress_dev) {
-               rmnet_egress_handler(skb, &priv->local_ep);
+       if (priv->real_dev) {
+               rmnet_egress_handler(skb);
        } else {
                dev->stats.tx_dropped++;
                kfree_skb(skb);
@@ -143,21 +143,6 @@ u8 rmnet_vnd_get_mux(struct net_device *rmnet_dev)
        return priv->mux_id;
 }
 
-/* Gets the logical endpoint configuration for a RmNet virtual network device
- * node. Caller should confirm that devices is a RmNet VND before calling.
- */
-struct rmnet_endpoint *rmnet_vnd_get_endpoint(struct net_device *rmnet_dev)
-{
-       struct rmnet_priv *priv;
-
-       if (!rmnet_dev)
-               return NULL;
-
-       priv = netdev_priv(rmnet_dev);
-
-       return &priv->local_ep;
-}
-
 int rmnet_vnd_do_flow_control(struct net_device *rmnet_dev, int enable)
 {
        netdev_dbg(rmnet_dev, "Setting VND TX queue state to %d\n", enable);
index 8a4042f0f6bfa79e9849faca794ec8b73506b720..cae134d357748e198542b74de86a56acaf033b1f 100644 (file)
@@ -17,7 +17,6 @@
 #define _RMNET_VND_H_
 
 int rmnet_vnd_do_flow_control(struct net_device *dev, int enable);
-struct rmnet_endpoint *rmnet_vnd_get_endpoint(struct net_device *dev);
 int rmnet_vnd_newlink(u8 id, struct net_device *rmnet_dev,
                      struct rmnet_port *port,
                      struct net_device *real_dev);