@@ -58,13 +58,13 @@ enum sja1105_ptp_clk_mode {
5858#define ptp_data_to_sja1105 (d ) \
5959 container_of((d), struct sja1105_private, ptp_data)
6060
61- /* Must be called only with priv->tagger_data. state bit
61+ /* Must be called only with the tagger_data-> state bit
6262 * SJA1105_HWTS_RX_EN cleared
6363 */
6464static int sja1105_change_rxtstamping (struct sja1105_private * priv ,
65+ struct sja1105_tagger_data * tagger_data ,
6566 bool on )
6667{
67- struct sja1105_tagger_data * tagger_data = & priv -> tagger_data ;
6868 struct sja1105_ptp_data * ptp_data = & priv -> ptp_data ;
6969 struct sja1105_general_params_entry * general_params ;
7070 struct sja1105_table * table ;
@@ -75,9 +75,9 @@ static int sja1105_change_rxtstamping(struct sja1105_private *priv,
7575 general_params -> send_meta0 = on ;
7676
7777 /* Initialize the meta state machine to a known state */
78- if (priv -> tagger_data . stampable_skb ) {
79- kfree_skb (priv -> tagger_data . stampable_skb );
80- priv -> tagger_data . stampable_skb = NULL ;
78+ if (tagger_data -> stampable_skb ) {
79+ kfree_skb (tagger_data -> stampable_skb );
80+ tagger_data -> stampable_skb = NULL ;
8181 }
8282 ptp_cancel_worker_sync (ptp_data -> clock );
8383 skb_queue_purge (& tagger_data -> skb_txtstamp_queue );
@@ -88,6 +88,7 @@ static int sja1105_change_rxtstamping(struct sja1105_private *priv,
8888
8989int sja1105_hwtstamp_set (struct dsa_switch * ds , int port , struct ifreq * ifr )
9090{
91+ struct sja1105_tagger_data * tagger_data = sja1105_tagger_data (ds );
9192 struct sja1105_private * priv = ds -> priv ;
9293 struct hwtstamp_config config ;
9394 bool rx_on ;
@@ -116,17 +117,17 @@ int sja1105_hwtstamp_set(struct dsa_switch *ds, int port, struct ifreq *ifr)
116117 break ;
117118 }
118119
119- if (rx_on != test_bit (SJA1105_HWTS_RX_EN , & priv -> tagger_data . state )) {
120- clear_bit (SJA1105_HWTS_RX_EN , & priv -> tagger_data . state );
120+ if (rx_on != test_bit (SJA1105_HWTS_RX_EN , & tagger_data -> state )) {
121+ clear_bit (SJA1105_HWTS_RX_EN , & tagger_data -> state );
121122
122- rc = sja1105_change_rxtstamping (priv , rx_on );
123+ rc = sja1105_change_rxtstamping (priv , tagger_data , rx_on );
123124 if (rc < 0 ) {
124125 dev_err (ds -> dev ,
125126 "Failed to change RX timestamping: %d\n" , rc );
126127 return rc ;
127128 }
128129 if (rx_on )
129- set_bit (SJA1105_HWTS_RX_EN , & priv -> tagger_data . state );
130+ set_bit (SJA1105_HWTS_RX_EN , & tagger_data -> state );
130131 }
131132
132133 if (copy_to_user (ifr -> ifr_data , & config , sizeof (config )))
@@ -136,6 +137,7 @@ int sja1105_hwtstamp_set(struct dsa_switch *ds, int port, struct ifreq *ifr)
136137
137138int sja1105_hwtstamp_get (struct dsa_switch * ds , int port , struct ifreq * ifr )
138139{
140+ struct sja1105_tagger_data * tagger_data = sja1105_tagger_data (ds );
139141 struct sja1105_private * priv = ds -> priv ;
140142 struct hwtstamp_config config ;
141143
@@ -144,7 +146,7 @@ int sja1105_hwtstamp_get(struct dsa_switch *ds, int port, struct ifreq *ifr)
144146 config .tx_type = HWTSTAMP_TX_ON ;
145147 else
146148 config .tx_type = HWTSTAMP_TX_OFF ;
147- if (test_bit (SJA1105_HWTS_RX_EN , & priv -> tagger_data . state ))
149+ if (test_bit (SJA1105_HWTS_RX_EN , & tagger_data -> state ))
148150 config .rx_filter = HWTSTAMP_FILTER_PTP_V2_L2_EVENT ;
149151 else
150152 config .rx_filter = HWTSTAMP_FILTER_NONE ;
@@ -417,10 +419,11 @@ static long sja1105_rxtstamp_work(struct ptp_clock_info *ptp)
417419
418420bool sja1105_rxtstamp (struct dsa_switch * ds , int port , struct sk_buff * skb )
419421{
422+ struct sja1105_tagger_data * tagger_data = sja1105_tagger_data (ds );
420423 struct sja1105_private * priv = ds -> priv ;
421424 struct sja1105_ptp_data * ptp_data = & priv -> ptp_data ;
422425
423- if (!test_bit (SJA1105_HWTS_RX_EN , & priv -> tagger_data . state ))
426+ if (!test_bit (SJA1105_HWTS_RX_EN , & tagger_data -> state ))
424427 return false;
425428
426429 /* We need to read the full PTP clock to reconstruct the Rx
@@ -459,13 +462,11 @@ bool sja1105_port_rxtstamp(struct dsa_switch *ds, int port,
459462 */
460463void sja1110_txtstamp (struct dsa_switch * ds , int port , struct sk_buff * skb )
461464{
465+ struct sja1105_tagger_data * tagger_data = sja1105_tagger_data (ds );
462466 struct sk_buff * clone = SJA1105_SKB_CB (skb )-> clone ;
463467 struct sja1105_private * priv = ds -> priv ;
464- struct sja1105_tagger_data * tagger_data ;
465468 u8 ts_id ;
466469
467- tagger_data = & priv -> tagger_data ;
468-
469470 skb_shinfo (skb )-> tx_flags |= SKBTX_IN_PROGRESS ;
470471
471472 spin_lock (& priv -> ts_id_lock );
@@ -897,7 +898,6 @@ static struct ptp_pin_desc sja1105_ptp_pin = {
897898int sja1105_ptp_clock_register (struct dsa_switch * ds )
898899{
899900 struct sja1105_private * priv = ds -> priv ;
900- struct sja1105_tagger_data * tagger_data = & priv -> tagger_data ;
901901 struct sja1105_ptp_data * ptp_data = & priv -> ptp_data ;
902902
903903 ptp_data -> caps = (struct ptp_clock_info ) {
@@ -919,9 +919,6 @@ int sja1105_ptp_clock_register(struct dsa_switch *ds)
919919
920920 /* Only used on SJA1105 */
921921 skb_queue_head_init (& ptp_data -> skb_rxtstamp_queue );
922- /* Only used on SJA1110 */
923- skb_queue_head_init (& tagger_data -> skb_txtstamp_queue );
924- spin_lock_init (& tagger_data -> meta_lock );
925922
926923 ptp_data -> clock = ptp_clock_register (& ptp_data -> caps , ds -> dev );
927924 if (IS_ERR_OR_NULL (ptp_data -> clock ))
@@ -937,8 +934,8 @@ int sja1105_ptp_clock_register(struct dsa_switch *ds)
937934
938935void sja1105_ptp_clock_unregister (struct dsa_switch * ds )
939936{
937+ struct sja1105_tagger_data * tagger_data = sja1105_tagger_data (ds );
940938 struct sja1105_private * priv = ds -> priv ;
941- struct sja1105_tagger_data * tagger_data = & priv -> tagger_data ;
942939 struct sja1105_ptp_data * ptp_data = & priv -> ptp_data ;
943940
944941 if (IS_ERR_OR_NULL (ptp_data -> clock ))
0 commit comments