Quellcode durchsuchen

hsr/prp: re-use definitions from lredev.h

Remove the duplicate defines of IEC62439 constants from the driver
and replace them with that defined in lredev.h. As a consequence
update the driver code that reference them to use the new values
or new data types based on that.

Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
Murali Karicheri vor 6 Jahren
Ursprung
Commit
d2c06109a6

+ 14 - 13
net/hsr-prp/hsr_prp_debugfs.c

@@ -94,30 +94,30 @@ hsr_prp_stats_show(struct seq_file *sfp, void *data)
 	rcu_read_unlock();
 
 	seq_puts(sfp, "LRE Stats entries\n");
-	seq_printf(sfp, "cnt_tx_a = %d\n", priv->stats.cnt_tx_a);
-	seq_printf(sfp, "cnt_tx_b = %d\n", priv->stats.cnt_tx_b);
+	seq_printf(sfp, "cnt_tx_a = %d\n", priv->lre_stats.cnt_tx_a);
+	seq_printf(sfp, "cnt_tx_b = %d\n", priv->lre_stats.cnt_tx_b);
 	/* actually lre_tx_c is whatever sent to the application interface. So
 	 * same as rx_packets
 	 */
-	seq_printf(sfp, "cnt_tx_c = %ld\n", master->dev->stats.rx_packets);
-	seq_printf(sfp, "cnt_tx_sup = %d\n", priv->stats.cnt_tx_sup);
+	seq_printf(sfp, "cnt_tx_c = %d\n", priv->lre_stats.cnt_tx_c);
+	seq_printf(sfp, "cnt_tx_sup = %d\n", priv->dbg_stats.cnt_tx_sup);
 	seq_printf(sfp, "cnt_rx_wrong_lan_a = %d\n",
-		   priv->stats.cnt_rx_wrong_lan_a);
+		   priv->lre_stats.cnt_errwronglan_a);
 	seq_printf(sfp, "cnt_rx_wrong_lan_b = %d\n",
-		   priv->stats.cnt_rx_wrong_lan_b);
-	seq_printf(sfp, "cnt_rx_a = %d\n", priv->stats.cnt_rx_a);
-	seq_printf(sfp, "cnt_rx_b = %d\n", priv->stats.cnt_rx_b);
+		   priv->lre_stats.cnt_errwronglan_b);
+	seq_printf(sfp, "cnt_rx_a = %d\n", priv->lre_stats.cnt_rx_a);
+	seq_printf(sfp, "cnt_rx_b = %d\n", priv->lre_stats.cnt_rx_b);
 	/* actually lre_rx_c is whatever received from the application
 	 * interface,  So same as tx_packets
 	 */
-	seq_printf(sfp, "cnt_rx_c = %ld\n", master->dev->stats.tx_packets);
-	seq_printf(sfp, "cnt_rx_errors_a = %d\n", priv->stats.cnt_rx_errors_a);
-	seq_printf(sfp, "cnt_rx_errors_b = %d\n", priv->stats.cnt_rx_errors_b);
+	seq_printf(sfp, "cnt_rx_c = %d\n", priv->lre_stats.cnt_rx_c);
+	seq_printf(sfp, "cnt_rx_errors_a = %d\n", priv->lre_stats.cnt_errors_a);
+	seq_printf(sfp, "cnt_rx_errors_b = %d\n", priv->lre_stats.cnt_errors_b);
 	if (priv->prot_version <= HSR_V1) {
 		seq_printf(sfp, "cnt_own_rx_a = %d\n",
-			   priv->stats.cnt_own_rx_a);
+			   priv->lre_stats.cnt_own_rx_a);
 		seq_printf(sfp, "cnt_own_rx_b = %d\n",
-			   priv->stats.cnt_own_rx_b);
+			   priv->lre_stats.cnt_own_rx_b);
 	}
 	seq_puts(sfp, "\n");
 	return 0;
@@ -142,6 +142,7 @@ static const struct file_operations hsr_prp_stats_fops = {
 	.llseek = seq_lseek,
 	.release = single_release,
 };
+
 /* hsr_prp_debugfs_init - create hsr-prp node_table file for dumping
  * the node table and lre stats
  *

+ 1 - 0
net/hsr-prp/hsr_prp_device.c

@@ -368,6 +368,7 @@ static int hsr_prp_dev_xmit(struct sk_buff *skb, struct net_device *dev)
 	master = hsr_prp_get_port(priv, HSR_PRP_PT_MASTER);
 	skb->dev = master->dev;
 	hsr_prp_forward_skb(skb, master);
+	INC_CNT_RX_C(priv);
 
 	return NETDEV_TX_OK;
 }

+ 9 - 7
net/hsr-prp/hsr_prp_forward.c

@@ -153,7 +153,7 @@ static void prp_check_lan_id(struct sk_buff *skb, struct hsr_prp_port *port)
 	struct prp_rct *trailor = skb_get_PRP_rct(skb);
 
 	if (!trailor) {
-		INC_CNT_RX_ERROR(port->type, port->priv);
+		INC_CNT_RX_ERROR_AB(port->type, port->priv);
 		return;
 	}
 
@@ -161,10 +161,10 @@ static void prp_check_lan_id(struct sk_buff *skb, struct hsr_prp_port *port)
 
 	if (port->type == HSR_PRP_PT_SLAVE_A) {
 		if (lan_id & 1)
-			INC_CNT_RX_WRONG_LAN(port->type, port->priv);
+			INC_CNT_RX_WRONG_LAN_AB(port->type, port->priv);
 	} else {
 		if (!(lan_id & 1))
-			INC_CNT_RX_WRONG_LAN(port->type, port->priv);
+			INC_CNT_RX_WRONG_LAN_AB(port->type, port->priv);
 	}
 }
 
@@ -337,6 +337,7 @@ static struct sk_buff *frame_get_tagged_skb(struct hsr_prp_frame_info *frame,
 static void deliver_master(struct sk_buff *skb, struct hsr_prp_node *node_src,
 			   struct hsr_prp_port *port)
 {
+	struct hsr_prp_priv *priv = port->priv;
 	struct net_device *dev = port->dev;
 	bool was_multicast_frame;
 	int res;
@@ -357,6 +358,7 @@ static void deliver_master(struct sk_buff *skb, struct hsr_prp_node *node_src,
 		dev->stats.rx_bytes += skb->len;
 		if (was_multicast_frame)
 			dev->stats.multicast++;
+		INC_CNT_TX_C(priv);
 	}
 }
 
@@ -372,7 +374,7 @@ static int slave_xmit(struct sk_buff *skb, struct hsr_prp_port *port,
 		 */
 		ether_addr_copy(eth_hdr(skb)->h_source, port->dev->dev_addr);
 	}
-	INC_CNT_TX(port->type, port->priv);
+	INC_CNT_TX_AB(port->type, port->priv);
 	return dev_queue_xmit(skb);
 }
 
@@ -455,8 +457,8 @@ static void hsr_prp_forward_do(struct hsr_prp_frame_info *frame)
 		if (!skb) {
 			if (frame->port_rcv->type == HSR_PRP_PT_SLAVE_A ||
 			    frame->port_rcv->type ==  HSR_PRP_PT_SLAVE_B)
-				INC_CNT_RX_ERROR(frame->port_rcv->type,
-						 port->priv);
+				INC_CNT_RX_ERROR_AB(frame->port_rcv->type,
+						    port->priv);
 			else {
 				struct net_device *master_dev =
 				hsr_prp_get_port(port->priv,
@@ -635,7 +637,7 @@ void hsr_prp_forward_skb(struct sk_buff *skb, struct hsr_prp_port *port)
 	return;
 
 out_drop:
-	INC_CNT_RX_ERROR(port->type, port->priv);
+	INC_CNT_RX_ERROR_AB(port->type, port->priv);
 	port->dev->stats.tx_dropped++;
 	kfree_skb(skb);
 }

+ 21 - 24
net/hsr-prp/hsr_prp_main.h

@@ -184,17 +184,7 @@ static inline void set_prp_LSDU_size(struct prp_rct *rct, u16 LSDU_size)
 			(LSDU_size & 0x0FFF));
 }
 
-struct hsr_prp_lre_if_stats {
-	u32	cnt_tx_a;
-	u32	cnt_tx_b;
-	u32	cnt_rx_wrong_lan_a;
-	u32	cnt_rx_wrong_lan_b;
-	u32	cnt_rx_a;
-	u32	cnt_rx_b;
-	u32	cnt_rx_errors_a;
-	u32	cnt_rx_errors_b;
-	u32	cnt_own_rx_a; /* For HSR only */
-	u32	cnt_own_rx_b; /* For HSR only */
+struct hsr_prp_debug_stats {
 	u32	cnt_tx_sup;
 };
 
@@ -216,7 +206,8 @@ struct hsr_prp_priv {
 	struct timer_list	prune_timer;
 	unsigned int		rx_offloaded : 1;   /* lre handle in hw */
 	unsigned int		l2_fwd_offloaded : 1; /* L2 forward in hw */
-	struct	hsr_prp_lre_if_stats stats;	/* lre interface stats */
+	struct	hsr_prp_debug_stats dbg_stats;	/* debug stats */
+	struct	lre_stats lre_stats;	/* lre interface stats */
 	int announce_count;
 	u16 sequence_nr;
 	u16 sup_sequence_nr;	/* For HSRv1 separate seq_nr for supervision */
@@ -301,18 +292,24 @@ static inline bool prp_check_lsdu_size(struct sk_buff *skb,
 int hsr_prp_register_notifier(u8 proto);
 void hsr_prp_unregister_notifier(u8 proto);
 
-#define INC_CNT_TX(type, priv) (((type) == HSR_PRP_PT_SLAVE_A) ? \
-		priv->stats.cnt_tx_a++ : priv->stats.cnt_tx_b++)
-#define INC_CNT_RX_WRONG_LAN(type, priv) (((type) == HSR_PRP_PT_SLAVE_A) ? \
-		priv->stats.cnt_rx_wrong_lan_a++ : \
-		priv->stats.cnt_rx_wrong_lan_b++)
-#define INC_CNT_RX(type, priv) (((type) == HSR_PRP_PT_SLAVE_A) ? \
-		priv->stats.cnt_rx_a++ : priv->stats.cnt_rx_b++)
-#define INC_CNT_RX_ERROR(type, priv) (((type) == HSR_PRP_PT_SLAVE_A) ? \
-		priv->stats.cnt_rx_errors_a++ : priv->stats.cnt_rx_errors_b++)
-#define INC_CNT_OWN_RX(type, priv) (((type) == HSR_PRP_PT_SLAVE_A) ? \
-		priv->stats.cnt_own_rx_a++ : priv->stats.cnt_own_rx_b++)
-#define INC_CNT_TX_SUP(priv) ((priv)->stats.cnt_tx_sup++)
+#define INC_CNT_TX_AB(type, priv) (((type) == HSR_PRP_PT_SLAVE_A) ? \
+		(priv)->lre_stats.cnt_tx_a++ : \
+		(priv)->lre_stats.cnt_tx_b++)
+#define INC_CNT_TX_C(priv) ((priv)->lre_stats.cnt_tx_c++)
+#define INC_CNT_RX_WRONG_LAN_AB(type, priv) (((type) == HSR_PRP_PT_SLAVE_A) ? \
+		(priv)->lre_stats.cnt_errwronglan_a++ : \
+		(priv)->lre_stats.cnt_errwronglan_b++)
+#define INC_CNT_RX_AB(type, priv) (((type) == HSR_PRP_PT_SLAVE_A) ? \
+		(priv)->lre_stats.cnt_rx_a++ : \
+		(priv)->lre_stats.cnt_rx_b++)
+#define INC_CNT_RX_C(priv) ((priv)->lre_stats.cnt_rx_c++)
+#define INC_CNT_RX_ERROR_AB(type, priv) (((type) == HSR_PRP_PT_SLAVE_A) ? \
+		(priv)->lre_stats.cnt_errors_a++ : \
+		(priv)->lre_stats.cnt_errors_b++)
+#define INC_CNT_OWN_RX_AB(type, priv) (((type) == HSR_PRP_PT_SLAVE_A) ? \
+		(priv)->lre_stats.cnt_own_rx_a++ : \
+		(priv)->lre_stats.cnt_own_rx_b++)
+#define INC_CNT_TX_SUP(priv) ((priv)->dbg_stats.cnt_tx_sup++)
 
 #if IS_ENABLED(CONFIG_DEBUG_FS)
 int hsr_prp_debugfs_init(struct hsr_prp_priv *priv, struct net_device *ndev);

+ 4 - 4
net/hsr-prp/hsr_prp_slave.c

@@ -32,7 +32,7 @@ static rx_handler_result_t handle_frame(struct sk_buff **pskb)
 
 	if (hsr_prp_addr_is_self(priv, eth_hdr(skb)->h_source)) {
 		/* Directly kill frames sent by ourselves */
-		INC_CNT_OWN_RX(port->type, priv);
+		INC_CNT_OWN_RX_AB(port->type, priv);
 		kfree_skb(skb);
 		goto finish_consume;
 	}
@@ -62,12 +62,12 @@ static rx_handler_result_t handle_frame(struct sk_buff **pskb)
 
 		/* do one more check and bail out */
 		if (skb_mac_header(skb) != skb->data) {
-			INC_CNT_RX_ERROR(port->type, priv);
+			INC_CNT_RX_ERROR_AB(port->type, priv);
 			goto finish_consume;
 		}
 	}
 
-	INC_CNT_RX(port->type, priv);
+	INC_CNT_RX_AB(port->type, priv);
 	hsr_prp_forward_skb(skb, port);
 
 finish_consume:
@@ -75,7 +75,7 @@ finish_consume:
 	return RX_HANDLER_CONSUMED;
 
 finish_pass:
-	INC_CNT_RX_ERROR(port->type, priv);
+	INC_CNT_RX_ERROR_AB(port->type, priv);
 	rcu_read_unlock(); /* hsr->node_db, hsr->ports */
 	return RX_HANDLER_PASS;
 }