Lines Matching refs:priv

20 mcp251xfd_tef_tail_get_from_chip(const struct mcp251xfd_priv *priv,
26 err = regmap_read(priv->map_reg, MCP251XFD_REG_TEFUA, &tef_ua);
35 static int mcp251xfd_check_tef_tail(const struct mcp251xfd_priv *priv)
43 err = mcp251xfd_tef_tail_get_from_chip(priv, &tef_tail_chip);
47 tef_tail = mcp251xfd_get_tef_tail(priv);
49 netdev_err(priv->ndev,
59 mcp251xfd_handle_tefif_recover(const struct mcp251xfd_priv *priv, const u32 seq)
61 const struct mcp251xfd_tx_ring *tx_ring = priv->tx;
65 err = regmap_read(priv->map_reg, MCP251XFD_REG_TEFSTA, &tef_sta);
70 netdev_err(priv->ndev,
75 netdev_info(priv->ndev,
80 seq, priv->tef->tail, priv->tef->head, tx_ring->head);
87 mcp251xfd_handle_tefif_one(struct mcp251xfd_priv *priv,
91 struct net_device_stats *stats = &priv->ndev->stats;
104 tef_tail_masked = priv->tef->tail &
107 return mcp251xfd_handle_tefif_recover(priv, seq);
109 tef_tail = mcp251xfd_get_tef_tail(priv);
110 skb = priv->can.echo_skb[tef_tail];
112 mcp251xfd_skb_set_timestamp(priv, skb, hw_tef_obj->ts);
114 can_rx_offload_get_echo_skb_queue_timestamp(&priv->offload,
118 priv->tef->tail++;
123 static int mcp251xfd_tef_ring_update(struct mcp251xfd_priv *priv)
125 const struct mcp251xfd_tx_ring *tx_ring = priv->tx;
130 err = mcp251xfd_tx_tail_get_from_chip(priv, &chip_tx_tail);
137 new_head = round_down(priv->tef->head, tx_ring->obj_num) + chip_tx_tail;
138 if (new_head <= priv->tef->head)
142 priv->tef->head = min(new_head, tx_ring->head);
144 return mcp251xfd_check_tef_tail(priv);
148 mcp251xfd_tef_obj_read(const struct mcp251xfd_priv *priv,
152 const struct mcp251xfd_tx_ring *tx_ring = priv->tx;
153 const int val_bytes = regmap_get_val_bytes(priv->map_rx);
159 netdev_err(priv->ndev,
165 return regmap_bulk_read(priv->map_rx,
171 static inline void mcp251xfd_ecc_tefif_successful(struct mcp251xfd_priv *priv)
173 struct mcp251xfd_ecc *ecc = &priv->ecc;
178 int mcp251xfd_handle_tefif(struct mcp251xfd_priv *priv)
185 err = mcp251xfd_tef_ring_update(priv);
189 tef_tail = mcp251xfd_get_tef_tail(priv);
190 len = mcp251xfd_get_tef_len(priv);
191 l = mcp251xfd_get_tef_linear_len(priv);
192 err = mcp251xfd_tef_obj_read(priv, hw_tef_obj, tef_tail, l);
197 err = mcp251xfd_tef_obj_read(priv, &hw_tef_obj[l], 0, len - l);
205 err = mcp251xfd_handle_tefif_one(priv, &hw_tef_obj[i], &frame_len);
222 struct mcp251xfd_tef_ring *ring = priv->tef;
223 struct mcp251xfd_tx_ring *tx_ring = priv->tx;
236 err = spi_sync_transfer(priv->spi,
242 netdev_completed_queue(priv->ndev, len, total_frame_len);
244 err = mcp251xfd_check_tef_tail(priv);
249 mcp251xfd_ecc_tefif_successful(priv);
251 if (mcp251xfd_get_tx_free(priv->tx)) {
256 netif_wake_queue(priv->ndev);
259 if (priv->tx_coalesce_usecs_irq)
260 hrtimer_start(&priv->tx_irq_timer,
261 ns_to_ktime(priv->tx_coalesce_usecs_irq *