cfhsi              71 drivers/net/caif/caif_hsi.c 	struct cfhsi *cfhsi = from_timer(cfhsi, t, inactivity_timer);
cfhsi              73 drivers/net/caif/caif_hsi.c 	netdev_dbg(cfhsi->ndev, "%s.\n",
cfhsi              77 drivers/net/caif/caif_hsi.c 	if (!test_bit(CFHSI_SHUTDOWN, &cfhsi->bits))
cfhsi              78 drivers/net/caif/caif_hsi.c 		queue_work(cfhsi->wq, &cfhsi->wake_down_work);
cfhsi              81 drivers/net/caif/caif_hsi.c static void cfhsi_update_aggregation_stats(struct cfhsi *cfhsi,
cfhsi              89 drivers/net/caif/caif_hsi.c 	hpad = 1 + PAD_POW2((info->hdr_len + 1), cfhsi->cfg.head_align);
cfhsi              90 drivers/net/caif/caif_hsi.c 	tpad = PAD_POW2((skb->len + hpad), cfhsi->cfg.tail_align);
cfhsi              94 drivers/net/caif/caif_hsi.c 		cfhsi->aggregation_len += len;
cfhsi              96 drivers/net/caif/caif_hsi.c 		cfhsi->aggregation_len -= len;
cfhsi              99 drivers/net/caif/caif_hsi.c static bool cfhsi_can_send_aggregate(struct cfhsi *cfhsi)
cfhsi             103 drivers/net/caif/caif_hsi.c 	if (cfhsi->cfg.aggregation_timeout == 0)
cfhsi             107 drivers/net/caif/caif_hsi.c 		if (cfhsi->qhead[i].qlen)
cfhsi             112 drivers/net/caif/caif_hsi.c 	if (cfhsi->qhead[CFHSI_PRIO_BEBK].qlen >= CFHSI_MAX_PKTS)
cfhsi             118 drivers/net/caif/caif_hsi.c static struct sk_buff *cfhsi_dequeue(struct cfhsi *cfhsi)
cfhsi             124 drivers/net/caif/caif_hsi.c 		skb = skb_dequeue(&cfhsi->qhead[i]);
cfhsi             132 drivers/net/caif/caif_hsi.c static int cfhsi_tx_queue_len(struct cfhsi *cfhsi)
cfhsi             136 drivers/net/caif/caif_hsi.c 		len += skb_queue_len(&cfhsi->qhead[i]);
cfhsi             140 drivers/net/caif/caif_hsi.c static void cfhsi_abort_tx(struct cfhsi *cfhsi)
cfhsi             145 drivers/net/caif/caif_hsi.c 		spin_lock_bh(&cfhsi->lock);
cfhsi             146 drivers/net/caif/caif_hsi.c 		skb = cfhsi_dequeue(cfhsi);
cfhsi             150 drivers/net/caif/caif_hsi.c 		cfhsi->ndev->stats.tx_errors++;
cfhsi             151 drivers/net/caif/caif_hsi.c 		cfhsi->ndev->stats.tx_dropped++;
cfhsi             152 drivers/net/caif/caif_hsi.c 		cfhsi_update_aggregation_stats(cfhsi, skb, -1);
cfhsi             153 drivers/net/caif/caif_hsi.c 		spin_unlock_bh(&cfhsi->lock);
cfhsi             156 drivers/net/caif/caif_hsi.c 	cfhsi->tx_state = CFHSI_TX_STATE_IDLE;
cfhsi             157 drivers/net/caif/caif_hsi.c 	if (!test_bit(CFHSI_SHUTDOWN, &cfhsi->bits))
cfhsi             158 drivers/net/caif/caif_hsi.c 		mod_timer(&cfhsi->inactivity_timer,
cfhsi             159 drivers/net/caif/caif_hsi.c 			jiffies + cfhsi->cfg.inactivity_timeout);
cfhsi             160 drivers/net/caif/caif_hsi.c 	spin_unlock_bh(&cfhsi->lock);
cfhsi             163 drivers/net/caif/caif_hsi.c static int cfhsi_flush_fifo(struct cfhsi *cfhsi)
cfhsi             169 drivers/net/caif/caif_hsi.c 	netdev_dbg(cfhsi->ndev, "%s.\n",
cfhsi             173 drivers/net/caif/caif_hsi.c 		ret = cfhsi->ops->cfhsi_fifo_occupancy(cfhsi->ops,
cfhsi             176 drivers/net/caif/caif_hsi.c 			netdev_warn(cfhsi->ndev,
cfhsi             185 drivers/net/caif/caif_hsi.c 		set_bit(CFHSI_FLUSH_FIFO, &cfhsi->bits);
cfhsi             186 drivers/net/caif/caif_hsi.c 		ret = cfhsi->ops->cfhsi_rx(buffer, fifo_occupancy,
cfhsi             187 drivers/net/caif/caif_hsi.c 				cfhsi->ops);
cfhsi             189 drivers/net/caif/caif_hsi.c 			clear_bit(CFHSI_FLUSH_FIFO, &cfhsi->bits);
cfhsi             190 drivers/net/caif/caif_hsi.c 			netdev_warn(cfhsi->ndev,
cfhsi             197 drivers/net/caif/caif_hsi.c 		ret = wait_event_interruptible_timeout(cfhsi->flush_fifo_wait,
cfhsi             198 drivers/net/caif/caif_hsi.c 			 !test_bit(CFHSI_FLUSH_FIFO, &cfhsi->bits), ret);
cfhsi             201 drivers/net/caif/caif_hsi.c 			netdev_warn(cfhsi->ndev,
cfhsi             207 drivers/net/caif/caif_hsi.c 			netdev_warn(cfhsi->ndev,
cfhsi             217 drivers/net/caif/caif_hsi.c static int cfhsi_tx_frm(struct cfhsi_desc *desc, struct cfhsi *cfhsi)
cfhsi             224 drivers/net/caif/caif_hsi.c 	skb = cfhsi_dequeue(cfhsi);
cfhsi             240 drivers/net/caif/caif_hsi.c 		hpad = 1 + PAD_POW2((info->hdr_len + 1), cfhsi->cfg.head_align);
cfhsi             241 drivers/net/caif/caif_hsi.c 		tpad = PAD_POW2((skb->len + hpad), cfhsi->cfg.tail_align);
cfhsi             251 drivers/net/caif/caif_hsi.c 			spin_lock_bh(&cfhsi->lock);
cfhsi             252 drivers/net/caif/caif_hsi.c 			cfhsi->ndev->stats.tx_packets++;
cfhsi             253 drivers/net/caif/caif_hsi.c 			cfhsi->ndev->stats.tx_bytes += skb->len;
cfhsi             254 drivers/net/caif/caif_hsi.c 			cfhsi_update_aggregation_stats(cfhsi, skb, -1);
cfhsi             255 drivers/net/caif/caif_hsi.c 			spin_unlock_bh(&cfhsi->lock);
cfhsi             273 drivers/net/caif/caif_hsi.c 			skb = cfhsi_dequeue(cfhsi);
cfhsi             281 drivers/net/caif/caif_hsi.c 		hpad = 1 + PAD_POW2((info->hdr_len + 1), cfhsi->cfg.head_align);
cfhsi             282 drivers/net/caif/caif_hsi.c 		tpad = PAD_POW2((skb->len + hpad), cfhsi->cfg.tail_align);
cfhsi             292 drivers/net/caif/caif_hsi.c 		spin_lock_bh(&cfhsi->lock);
cfhsi             293 drivers/net/caif/caif_hsi.c 		cfhsi->ndev->stats.tx_packets++;
cfhsi             294 drivers/net/caif/caif_hsi.c 		cfhsi->ndev->stats.tx_bytes += skb->len;
cfhsi             295 drivers/net/caif/caif_hsi.c 		cfhsi_update_aggregation_stats(cfhsi, skb, -1);
cfhsi             296 drivers/net/caif/caif_hsi.c 		spin_unlock_bh(&cfhsi->lock);
cfhsi             322 drivers/net/caif/caif_hsi.c 	if (cfhsi_can_send_aggregate(cfhsi))
cfhsi             330 drivers/net/caif/caif_hsi.c static void cfhsi_start_tx(struct cfhsi *cfhsi)
cfhsi             332 drivers/net/caif/caif_hsi.c 	struct cfhsi_desc *desc = (struct cfhsi_desc *)cfhsi->tx_buf;
cfhsi             335 drivers/net/caif/caif_hsi.c 	netdev_dbg(cfhsi->ndev, "%s.\n", __func__);
cfhsi             337 drivers/net/caif/caif_hsi.c 	if (test_bit(CFHSI_SHUTDOWN, &cfhsi->bits))
cfhsi             342 drivers/net/caif/caif_hsi.c 		len = cfhsi_tx_frm(desc, cfhsi);
cfhsi             344 drivers/net/caif/caif_hsi.c 			spin_lock_bh(&cfhsi->lock);
cfhsi             345 drivers/net/caif/caif_hsi.c 			if (unlikely(cfhsi_tx_queue_len(cfhsi))) {
cfhsi             346 drivers/net/caif/caif_hsi.c 				spin_unlock_bh(&cfhsi->lock);
cfhsi             350 drivers/net/caif/caif_hsi.c 			cfhsi->tx_state = CFHSI_TX_STATE_IDLE;
cfhsi             352 drivers/net/caif/caif_hsi.c 			mod_timer(&cfhsi->inactivity_timer,
cfhsi             353 drivers/net/caif/caif_hsi.c 				jiffies + cfhsi->cfg.inactivity_timeout);
cfhsi             354 drivers/net/caif/caif_hsi.c 			spin_unlock_bh(&cfhsi->lock);
cfhsi             359 drivers/net/caif/caif_hsi.c 		res = cfhsi->ops->cfhsi_tx(cfhsi->tx_buf, len, cfhsi->ops);
cfhsi             361 drivers/net/caif/caif_hsi.c 			netdev_err(cfhsi->ndev, "%s: TX error %d.\n",
cfhsi             366 drivers/net/caif/caif_hsi.c static void cfhsi_tx_done(struct cfhsi *cfhsi)
cfhsi             368 drivers/net/caif/caif_hsi.c 	netdev_dbg(cfhsi->ndev, "%s.\n", __func__);
cfhsi             370 drivers/net/caif/caif_hsi.c 	if (test_bit(CFHSI_SHUTDOWN, &cfhsi->bits))
cfhsi             377 drivers/net/caif/caif_hsi.c 	spin_lock_bh(&cfhsi->lock);
cfhsi             378 drivers/net/caif/caif_hsi.c 	if (cfhsi->flow_off_sent &&
cfhsi             379 drivers/net/caif/caif_hsi.c 			cfhsi_tx_queue_len(cfhsi) <= cfhsi->cfg.q_low_mark &&
cfhsi             380 drivers/net/caif/caif_hsi.c 			cfhsi->cfdev.flowctrl) {
cfhsi             382 drivers/net/caif/caif_hsi.c 		cfhsi->flow_off_sent = 0;
cfhsi             383 drivers/net/caif/caif_hsi.c 		cfhsi->cfdev.flowctrl(cfhsi->ndev, ON);
cfhsi             386 drivers/net/caif/caif_hsi.c 	if (cfhsi_can_send_aggregate(cfhsi)) {
cfhsi             387 drivers/net/caif/caif_hsi.c 		spin_unlock_bh(&cfhsi->lock);
cfhsi             388 drivers/net/caif/caif_hsi.c 		cfhsi_start_tx(cfhsi);
cfhsi             390 drivers/net/caif/caif_hsi.c 		mod_timer(&cfhsi->aggregation_timer,
cfhsi             391 drivers/net/caif/caif_hsi.c 			jiffies + cfhsi->cfg.aggregation_timeout);
cfhsi             392 drivers/net/caif/caif_hsi.c 		spin_unlock_bh(&cfhsi->lock);
cfhsi             400 drivers/net/caif/caif_hsi.c 	struct cfhsi *cfhsi;
cfhsi             402 drivers/net/caif/caif_hsi.c 	cfhsi = container_of(cb_ops, struct cfhsi, cb_ops);
cfhsi             403 drivers/net/caif/caif_hsi.c 	netdev_dbg(cfhsi->ndev, "%s.\n",
cfhsi             406 drivers/net/caif/caif_hsi.c 	if (test_bit(CFHSI_SHUTDOWN, &cfhsi->bits))
cfhsi             408 drivers/net/caif/caif_hsi.c 	cfhsi_tx_done(cfhsi);
cfhsi             411 drivers/net/caif/caif_hsi.c static int cfhsi_rx_desc(struct cfhsi_desc *desc, struct cfhsi *cfhsi)
cfhsi             420 drivers/net/caif/caif_hsi.c 		netdev_err(cfhsi->ndev, "%s: Invalid descriptor.\n",
cfhsi             441 drivers/net/caif/caif_hsi.c 			netdev_err(cfhsi->ndev, "%s: Invalid length.\n",
cfhsi             449 drivers/net/caif/caif_hsi.c 			netdev_err(cfhsi->ndev, "%s: Out of memory !\n",
cfhsi             459 drivers/net/caif/caif_hsi.c 		skb->dev = cfhsi->ndev;
cfhsi             472 drivers/net/caif/caif_hsi.c 		cfhsi->ndev->stats.rx_packets++;
cfhsi             473 drivers/net/caif/caif_hsi.c 		cfhsi->ndev->stats.rx_bytes += len;
cfhsi             489 drivers/net/caif/caif_hsi.c 		netdev_err(cfhsi->ndev,
cfhsi             526 drivers/net/caif/caif_hsi.c static int cfhsi_rx_pld(struct cfhsi_desc *desc, struct cfhsi *cfhsi)
cfhsi             536 drivers/net/caif/caif_hsi.c 		netdev_err(cfhsi->ndev, "%s: Invalid descriptor.\n",
cfhsi             546 drivers/net/caif/caif_hsi.c 	while (nfrms < cfhsi->rx_state.nfrms) {
cfhsi             569 drivers/net/caif/caif_hsi.c 			netdev_err(cfhsi->ndev, "%s: Invalid length.\n",
cfhsi             577 drivers/net/caif/caif_hsi.c 			netdev_err(cfhsi->ndev, "%s: Out of memory !\n",
cfhsi             579 drivers/net/caif/caif_hsi.c 			cfhsi->rx_state.nfrms = nfrms;
cfhsi             588 drivers/net/caif/caif_hsi.c 		skb->dev = cfhsi->ndev;
cfhsi             600 drivers/net/caif/caif_hsi.c 		cfhsi->ndev->stats.rx_packets++;
cfhsi             601 drivers/net/caif/caif_hsi.c 		cfhsi->ndev->stats.rx_bytes += len;
cfhsi             612 drivers/net/caif/caif_hsi.c static void cfhsi_rx_done(struct cfhsi *cfhsi)
cfhsi             620 drivers/net/caif/caif_hsi.c 	desc = (struct cfhsi_desc *)cfhsi->rx_buf;
cfhsi             622 drivers/net/caif/caif_hsi.c 	netdev_dbg(cfhsi->ndev, "%s\n", __func__);
cfhsi             624 drivers/net/caif/caif_hsi.c 	if (test_bit(CFHSI_SHUTDOWN, &cfhsi->bits))
cfhsi             628 drivers/net/caif/caif_hsi.c 	spin_lock_bh(&cfhsi->lock);
cfhsi             629 drivers/net/caif/caif_hsi.c 	mod_timer_pending(&cfhsi->inactivity_timer,
cfhsi             630 drivers/net/caif/caif_hsi.c 			jiffies + cfhsi->cfg.inactivity_timeout);
cfhsi             631 drivers/net/caif/caif_hsi.c 	spin_unlock_bh(&cfhsi->lock);
cfhsi             633 drivers/net/caif/caif_hsi.c 	if (cfhsi->rx_state.state == CFHSI_RX_STATE_DESC) {
cfhsi             639 drivers/net/caif/caif_hsi.c 		rx_buf = cfhsi->rx_buf;
cfhsi             644 drivers/net/caif/caif_hsi.c 			rx_buf = cfhsi->rx_flip_buf;
cfhsi             646 drivers/net/caif/caif_hsi.c 		rx_buf = cfhsi->rx_flip_buf;
cfhsi             649 drivers/net/caif/caif_hsi.c 		if (cfhsi->rx_state.pld_len > 0 &&
cfhsi             654 drivers/net/caif/caif_hsi.c 						cfhsi->rx_state.pld_len);
cfhsi             656 drivers/net/caif/caif_hsi.c 			cfhsi->rx_state.piggy_desc = true;
cfhsi             688 drivers/net/caif/caif_hsi.c 	if (test_bit(CFHSI_AWAKE, &cfhsi->bits)) {
cfhsi             690 drivers/net/caif/caif_hsi.c 		netdev_dbg(cfhsi->ndev, "%s: Start RX.\n",
cfhsi             693 drivers/net/caif/caif_hsi.c 		res = cfhsi->ops->cfhsi_rx(rx_ptr, rx_len,
cfhsi             694 drivers/net/caif/caif_hsi.c 				cfhsi->ops);
cfhsi             696 drivers/net/caif/caif_hsi.c 			netdev_err(cfhsi->ndev, "%s: RX error %d.\n",
cfhsi             698 drivers/net/caif/caif_hsi.c 			cfhsi->ndev->stats.rx_errors++;
cfhsi             699 drivers/net/caif/caif_hsi.c 			cfhsi->ndev->stats.rx_dropped++;
cfhsi             703 drivers/net/caif/caif_hsi.c 	if (cfhsi->rx_state.state == CFHSI_RX_STATE_DESC) {
cfhsi             705 drivers/net/caif/caif_hsi.c 		if (cfhsi_rx_desc(desc, cfhsi) < 0)
cfhsi             709 drivers/net/caif/caif_hsi.c 		if (cfhsi_rx_pld(desc, cfhsi) < 0)
cfhsi             713 drivers/net/caif/caif_hsi.c 			if (cfhsi_rx_desc(piggy_desc, cfhsi) < 0)
cfhsi             721 drivers/net/caif/caif_hsi.c 	memset(&cfhsi->rx_state, 0, sizeof(cfhsi->rx_state));
cfhsi             722 drivers/net/caif/caif_hsi.c 	cfhsi->rx_state.state = rx_state;
cfhsi             723 drivers/net/caif/caif_hsi.c 	cfhsi->rx_ptr = rx_ptr;
cfhsi             724 drivers/net/caif/caif_hsi.c 	cfhsi->rx_len = rx_len;
cfhsi             725 drivers/net/caif/caif_hsi.c 	cfhsi->rx_state.pld_len = desc_pld_len;
cfhsi             726 drivers/net/caif/caif_hsi.c 	cfhsi->rx_state.piggy_desc = desc->header & CFHSI_PIGGY_DESC;
cfhsi             728 drivers/net/caif/caif_hsi.c 	if (rx_buf != cfhsi->rx_buf)
cfhsi             729 drivers/net/caif/caif_hsi.c 		swap(cfhsi->rx_buf, cfhsi->rx_flip_buf);
cfhsi             733 drivers/net/caif/caif_hsi.c 	netdev_err(cfhsi->ndev, "%s: Out of sync.\n", __func__);
cfhsi             735 drivers/net/caif/caif_hsi.c 			cfhsi->rx_buf, CFHSI_DESC_SZ);
cfhsi             736 drivers/net/caif/caif_hsi.c 	schedule_work(&cfhsi->out_of_sync_work);
cfhsi             741 drivers/net/caif/caif_hsi.c 	struct cfhsi *cfhsi = from_timer(cfhsi, t, rx_slowpath_timer);
cfhsi             743 drivers/net/caif/caif_hsi.c 	netdev_dbg(cfhsi->ndev, "%s.\n",
cfhsi             746 drivers/net/caif/caif_hsi.c 	cfhsi_rx_done(cfhsi);
cfhsi             751 drivers/net/caif/caif_hsi.c 	struct cfhsi *cfhsi;
cfhsi             753 drivers/net/caif/caif_hsi.c 	cfhsi = container_of(cb_ops, struct cfhsi, cb_ops);
cfhsi             754 drivers/net/caif/caif_hsi.c 	netdev_dbg(cfhsi->ndev, "%s.\n",
cfhsi             757 drivers/net/caif/caif_hsi.c 	if (test_bit(CFHSI_SHUTDOWN, &cfhsi->bits))
cfhsi             760 drivers/net/caif/caif_hsi.c 	if (test_and_clear_bit(CFHSI_FLUSH_FIFO, &cfhsi->bits))
cfhsi             761 drivers/net/caif/caif_hsi.c 		wake_up_interruptible(&cfhsi->flush_fifo_wait);
cfhsi             763 drivers/net/caif/caif_hsi.c 		cfhsi_rx_done(cfhsi);
cfhsi             768 drivers/net/caif/caif_hsi.c 	struct cfhsi *cfhsi = NULL;
cfhsi             773 drivers/net/caif/caif_hsi.c 	cfhsi = container_of(work, struct cfhsi, wake_up_work);
cfhsi             775 drivers/net/caif/caif_hsi.c 	if (test_bit(CFHSI_SHUTDOWN, &cfhsi->bits))
cfhsi             778 drivers/net/caif/caif_hsi.c 	if (unlikely(test_bit(CFHSI_AWAKE, &cfhsi->bits))) {
cfhsi             781 drivers/net/caif/caif_hsi.c 		clear_bit(CFHSI_WAKE_UP, &cfhsi->bits);
cfhsi             782 drivers/net/caif/caif_hsi.c 		clear_bit(CFHSI_WAKE_UP_ACK, &cfhsi->bits);
cfhsi             787 drivers/net/caif/caif_hsi.c 	cfhsi->ops->cfhsi_wake_up(cfhsi->ops);
cfhsi             789 drivers/net/caif/caif_hsi.c 	netdev_dbg(cfhsi->ndev, "%s: Start waiting.\n",
cfhsi             794 drivers/net/caif/caif_hsi.c 	ret = wait_event_interruptible_timeout(cfhsi->wake_up_wait,
cfhsi             796 drivers/net/caif/caif_hsi.c 							&cfhsi->bits), ret);
cfhsi             799 drivers/net/caif/caif_hsi.c 		netdev_err(cfhsi->ndev, "%s: Signalled: %ld.\n",
cfhsi             802 drivers/net/caif/caif_hsi.c 		clear_bit(CFHSI_WAKE_UP, &cfhsi->bits);
cfhsi             803 drivers/net/caif/caif_hsi.c 		cfhsi->ops->cfhsi_wake_down(cfhsi->ops);
cfhsi             810 drivers/net/caif/caif_hsi.c 		netdev_dbg(cfhsi->ndev, "%s: Timeout.\n",
cfhsi             814 drivers/net/caif/caif_hsi.c 		WARN_ON(cfhsi->ops->cfhsi_fifo_occupancy(cfhsi->ops,
cfhsi             817 drivers/net/caif/caif_hsi.c 		netdev_dbg(cfhsi->ndev, "%s: Bytes in FIFO: %u.\n",
cfhsi             821 drivers/net/caif/caif_hsi.c 		WARN_ON(cfhsi->ops->cfhsi_get_peer_wake(cfhsi->ops,
cfhsi             825 drivers/net/caif/caif_hsi.c 			netdev_err(cfhsi->ndev, "%s: CA Wake missed !.\n",
cfhsi             829 drivers/net/caif/caif_hsi.c 			clear_bit(CFHSI_WAKE_UP_ACK, &cfhsi->bits);
cfhsi             835 drivers/net/caif/caif_hsi.c 		clear_bit(CFHSI_WAKE_UP, &cfhsi->bits);
cfhsi             836 drivers/net/caif/caif_hsi.c 		cfhsi->ops->cfhsi_wake_down(cfhsi->ops);
cfhsi             840 drivers/net/caif/caif_hsi.c 	netdev_dbg(cfhsi->ndev, "%s: Woken.\n",
cfhsi             844 drivers/net/caif/caif_hsi.c 	set_bit(CFHSI_AWAKE, &cfhsi->bits);
cfhsi             845 drivers/net/caif/caif_hsi.c 	clear_bit(CFHSI_WAKE_UP, &cfhsi->bits);
cfhsi             848 drivers/net/caif/caif_hsi.c 	netdev_dbg(cfhsi->ndev, "%s: Start RX.\n", __func__);
cfhsi             849 drivers/net/caif/caif_hsi.c 	res = cfhsi->ops->cfhsi_rx(cfhsi->rx_ptr, cfhsi->rx_len, cfhsi->ops);
cfhsi             852 drivers/net/caif/caif_hsi.c 		netdev_err(cfhsi->ndev, "%s: RX err %d.\n", __func__, res);
cfhsi             855 drivers/net/caif/caif_hsi.c 	clear_bit(CFHSI_WAKE_UP_ACK, &cfhsi->bits);
cfhsi             857 drivers/net/caif/caif_hsi.c 	spin_lock_bh(&cfhsi->lock);
cfhsi             860 drivers/net/caif/caif_hsi.c 	if (!cfhsi_tx_queue_len(cfhsi)) {
cfhsi             861 drivers/net/caif/caif_hsi.c 		netdev_dbg(cfhsi->ndev, "%s: Peer wake, start timer.\n",
cfhsi             864 drivers/net/caif/caif_hsi.c 		mod_timer(&cfhsi->inactivity_timer,
cfhsi             865 drivers/net/caif/caif_hsi.c 				jiffies + cfhsi->cfg.inactivity_timeout);
cfhsi             866 drivers/net/caif/caif_hsi.c 		spin_unlock_bh(&cfhsi->lock);
cfhsi             870 drivers/net/caif/caif_hsi.c 	netdev_dbg(cfhsi->ndev, "%s: Host wake.\n",
cfhsi             873 drivers/net/caif/caif_hsi.c 	spin_unlock_bh(&cfhsi->lock);
cfhsi             876 drivers/net/caif/caif_hsi.c 	len = cfhsi_tx_frm((struct cfhsi_desc *)cfhsi->tx_buf, cfhsi);
cfhsi             880 drivers/net/caif/caif_hsi.c 		res = cfhsi->ops->cfhsi_tx(cfhsi->tx_buf, len, cfhsi->ops);
cfhsi             882 drivers/net/caif/caif_hsi.c 			netdev_err(cfhsi->ndev, "%s: TX error %d.\n",
cfhsi             884 drivers/net/caif/caif_hsi.c 			cfhsi_abort_tx(cfhsi);
cfhsi             887 drivers/net/caif/caif_hsi.c 		netdev_err(cfhsi->ndev,
cfhsi             896 drivers/net/caif/caif_hsi.c 	struct cfhsi *cfhsi = NULL;
cfhsi             900 drivers/net/caif/caif_hsi.c 	cfhsi = container_of(work, struct cfhsi, wake_down_work);
cfhsi             901 drivers/net/caif/caif_hsi.c 	netdev_dbg(cfhsi->ndev, "%s.\n", __func__);
cfhsi             903 drivers/net/caif/caif_hsi.c 	if (test_bit(CFHSI_SHUTDOWN, &cfhsi->bits))
cfhsi             907 drivers/net/caif/caif_hsi.c 	cfhsi->ops->cfhsi_wake_down(cfhsi->ops);
cfhsi             911 drivers/net/caif/caif_hsi.c 	ret = wait_event_interruptible_timeout(cfhsi->wake_down_wait,
cfhsi             913 drivers/net/caif/caif_hsi.c 							&cfhsi->bits), ret);
cfhsi             916 drivers/net/caif/caif_hsi.c 		netdev_err(cfhsi->ndev, "%s: Signalled: %ld.\n",
cfhsi             923 drivers/net/caif/caif_hsi.c 		netdev_err(cfhsi->ndev, "%s: Timeout.\n", __func__);
cfhsi             926 drivers/net/caif/caif_hsi.c 		WARN_ON(cfhsi->ops->cfhsi_get_peer_wake(cfhsi->ops,
cfhsi             929 drivers/net/caif/caif_hsi.c 			netdev_err(cfhsi->ndev, "%s: CA Wake missed !.\n",
cfhsi             935 drivers/net/caif/caif_hsi.c 		WARN_ON(cfhsi->ops->cfhsi_fifo_occupancy(cfhsi->ops,
cfhsi             947 drivers/net/caif/caif_hsi.c 		netdev_err(cfhsi->ndev, "%s: FIFO Timeout.\n", __func__);
cfhsi             950 drivers/net/caif/caif_hsi.c 	clear_bit(CFHSI_AWAKE, &cfhsi->bits);
cfhsi             953 drivers/net/caif/caif_hsi.c 	cfhsi->ops->cfhsi_rx_cancel(cfhsi->ops);
cfhsi             958 drivers/net/caif/caif_hsi.c 	struct cfhsi *cfhsi = NULL;
cfhsi             960 drivers/net/caif/caif_hsi.c 	cfhsi = container_of(work, struct cfhsi, out_of_sync_work);
cfhsi             963 drivers/net/caif/caif_hsi.c 	dev_close(cfhsi->ndev);
cfhsi             969 drivers/net/caif/caif_hsi.c 	struct cfhsi *cfhsi = NULL;
cfhsi             971 drivers/net/caif/caif_hsi.c 	cfhsi = container_of(cb_ops, struct cfhsi, cb_ops);
cfhsi             972 drivers/net/caif/caif_hsi.c 	netdev_dbg(cfhsi->ndev, "%s.\n",
cfhsi             975 drivers/net/caif/caif_hsi.c 	set_bit(CFHSI_WAKE_UP_ACK, &cfhsi->bits);
cfhsi             976 drivers/net/caif/caif_hsi.c 	wake_up_interruptible(&cfhsi->wake_up_wait);
cfhsi             978 drivers/net/caif/caif_hsi.c 	if (test_bit(CFHSI_SHUTDOWN, &cfhsi->bits))
cfhsi             982 drivers/net/caif/caif_hsi.c 	if (!test_and_set_bit(CFHSI_WAKE_UP, &cfhsi->bits))
cfhsi             983 drivers/net/caif/caif_hsi.c 		queue_work(cfhsi->wq, &cfhsi->wake_up_work);
cfhsi             988 drivers/net/caif/caif_hsi.c 	struct cfhsi *cfhsi = NULL;
cfhsi             990 drivers/net/caif/caif_hsi.c 	cfhsi = container_of(cb_ops, struct cfhsi, cb_ops);
cfhsi             991 drivers/net/caif/caif_hsi.c 	netdev_dbg(cfhsi->ndev, "%s.\n",
cfhsi             995 drivers/net/caif/caif_hsi.c 	set_bit(CFHSI_WAKE_DOWN_ACK, &cfhsi->bits);
cfhsi             996 drivers/net/caif/caif_hsi.c 	wake_up_interruptible(&cfhsi->wake_down_wait);
cfhsi            1001 drivers/net/caif/caif_hsi.c 	struct cfhsi *cfhsi = from_timer(cfhsi, t, aggregation_timer);
cfhsi            1003 drivers/net/caif/caif_hsi.c 	netdev_dbg(cfhsi->ndev, "%s.\n",
cfhsi            1006 drivers/net/caif/caif_hsi.c 	cfhsi_start_tx(cfhsi);
cfhsi            1011 drivers/net/caif/caif_hsi.c 	struct cfhsi *cfhsi = NULL;
cfhsi            1019 drivers/net/caif/caif_hsi.c 	cfhsi = netdev_priv(dev);
cfhsi            1039 drivers/net/caif/caif_hsi.c 	spin_lock_bh(&cfhsi->lock);
cfhsi            1042 drivers/net/caif/caif_hsi.c 	cfhsi_update_aggregation_stats(cfhsi, skb, 1);
cfhsi            1045 drivers/net/caif/caif_hsi.c 	skb_queue_tail(&cfhsi->qhead[prio], skb);
cfhsi            1048 drivers/net/caif/caif_hsi.c 	if (WARN_ON(test_bit(CFHSI_SHUTDOWN, &cfhsi->bits))) {
cfhsi            1049 drivers/net/caif/caif_hsi.c 		spin_unlock_bh(&cfhsi->lock);
cfhsi            1050 drivers/net/caif/caif_hsi.c 		cfhsi_abort_tx(cfhsi);
cfhsi            1055 drivers/net/caif/caif_hsi.c 	if (!cfhsi->flow_off_sent &&
cfhsi            1056 drivers/net/caif/caif_hsi.c 		cfhsi_tx_queue_len(cfhsi) > cfhsi->cfg.q_high_mark &&
cfhsi            1057 drivers/net/caif/caif_hsi.c 		cfhsi->cfdev.flowctrl) {
cfhsi            1058 drivers/net/caif/caif_hsi.c 		cfhsi->flow_off_sent = 1;
cfhsi            1059 drivers/net/caif/caif_hsi.c 		cfhsi->cfdev.flowctrl(cfhsi->ndev, OFF);
cfhsi            1062 drivers/net/caif/caif_hsi.c 	if (cfhsi->tx_state == CFHSI_TX_STATE_IDLE) {
cfhsi            1063 drivers/net/caif/caif_hsi.c 		cfhsi->tx_state = CFHSI_TX_STATE_XFER;
cfhsi            1070 drivers/net/caif/caif_hsi.c 			cfhsi_can_send_aggregate(cfhsi) &&
cfhsi            1071 drivers/net/caif/caif_hsi.c 			del_timer(&cfhsi->aggregation_timer) > 0;
cfhsi            1072 drivers/net/caif/caif_hsi.c 		spin_unlock_bh(&cfhsi->lock);
cfhsi            1074 drivers/net/caif/caif_hsi.c 			cfhsi_start_tx(cfhsi);
cfhsi            1079 drivers/net/caif/caif_hsi.c 	timer_active = del_timer_sync(&cfhsi->inactivity_timer);
cfhsi            1081 drivers/net/caif/caif_hsi.c 	spin_unlock_bh(&cfhsi->lock);
cfhsi            1084 drivers/net/caif/caif_hsi.c 		struct cfhsi_desc *desc = (struct cfhsi_desc *)cfhsi->tx_buf;
cfhsi            1089 drivers/net/caif/caif_hsi.c 		len = cfhsi_tx_frm(desc, cfhsi);
cfhsi            1093 drivers/net/caif/caif_hsi.c 		res = cfhsi->ops->cfhsi_tx(cfhsi->tx_buf, len, cfhsi->ops);
cfhsi            1095 drivers/net/caif/caif_hsi.c 			netdev_err(cfhsi->ndev, "%s: TX error %d.\n",
cfhsi            1097 drivers/net/caif/caif_hsi.c 			cfhsi_abort_tx(cfhsi);
cfhsi            1101 drivers/net/caif/caif_hsi.c 		if (!test_and_set_bit(CFHSI_WAKE_UP, &cfhsi->bits))
cfhsi            1102 drivers/net/caif/caif_hsi.c 			queue_work(cfhsi->wq, &cfhsi->wake_up_work);
cfhsi            1113 drivers/net/caif/caif_hsi.c 	struct cfhsi *cfhsi = netdev_priv(dev);
cfhsi            1122 drivers/net/caif/caif_hsi.c 		skb_queue_head_init(&cfhsi->qhead[i]);
cfhsi            1123 drivers/net/caif/caif_hsi.c 	cfhsi->cfdev.link_select = CAIF_LINK_HIGH_BANDW;
cfhsi            1124 drivers/net/caif/caif_hsi.c 	cfhsi->cfdev.use_frag = false;
cfhsi            1125 drivers/net/caif/caif_hsi.c 	cfhsi->cfdev.use_stx = false;
cfhsi            1126 drivers/net/caif/caif_hsi.c 	cfhsi->cfdev.use_fcs = false;
cfhsi            1127 drivers/net/caif/caif_hsi.c 	cfhsi->ndev = dev;
cfhsi            1128 drivers/net/caif/caif_hsi.c 	cfhsi->cfg = hsi_default_config;
cfhsi            1133 drivers/net/caif/caif_hsi.c 	struct cfhsi *cfhsi = netdev_priv(ndev);
cfhsi            1136 drivers/net/caif/caif_hsi.c 	clear_bit(CFHSI_SHUTDOWN, &cfhsi->bits);
cfhsi            1139 drivers/net/caif/caif_hsi.c 	cfhsi->tx_state = CFHSI_TX_STATE_IDLE;
cfhsi            1140 drivers/net/caif/caif_hsi.c 	cfhsi->rx_state.state = CFHSI_RX_STATE_DESC;
cfhsi            1143 drivers/net/caif/caif_hsi.c 	cfhsi->flow_off_sent = 0;
cfhsi            1149 drivers/net/caif/caif_hsi.c 	cfhsi->tx_buf = kzalloc(CFHSI_BUF_SZ_TX, GFP_KERNEL);
cfhsi            1150 drivers/net/caif/caif_hsi.c 	if (!cfhsi->tx_buf) {
cfhsi            1159 drivers/net/caif/caif_hsi.c 	cfhsi->rx_buf = kzalloc(CFHSI_BUF_SZ_RX, GFP_KERNEL);
cfhsi            1160 drivers/net/caif/caif_hsi.c 	if (!cfhsi->rx_buf) {
cfhsi            1165 drivers/net/caif/caif_hsi.c 	cfhsi->rx_flip_buf = kzalloc(CFHSI_BUF_SZ_RX, GFP_KERNEL);
cfhsi            1166 drivers/net/caif/caif_hsi.c 	if (!cfhsi->rx_flip_buf) {
cfhsi            1172 drivers/net/caif/caif_hsi.c 	cfhsi->cfg.aggregation_timeout = hsi_default_config.aggregation_timeout;
cfhsi            1175 drivers/net/caif/caif_hsi.c 	cfhsi->rx_ptr = cfhsi->rx_buf;
cfhsi            1176 drivers/net/caif/caif_hsi.c 	cfhsi->rx_len = CFHSI_DESC_SZ;
cfhsi            1179 drivers/net/caif/caif_hsi.c 	spin_lock_init(&cfhsi->lock);
cfhsi            1182 drivers/net/caif/caif_hsi.c 	cfhsi->cb_ops.tx_done_cb = cfhsi_tx_done_cb;
cfhsi            1183 drivers/net/caif/caif_hsi.c 	cfhsi->cb_ops.rx_done_cb = cfhsi_rx_done_cb;
cfhsi            1184 drivers/net/caif/caif_hsi.c 	cfhsi->cb_ops.wake_up_cb = cfhsi_wake_up_cb;
cfhsi            1185 drivers/net/caif/caif_hsi.c 	cfhsi->cb_ops.wake_down_cb = cfhsi_wake_down_cb;
cfhsi            1188 drivers/net/caif/caif_hsi.c 	INIT_WORK(&cfhsi->wake_up_work, cfhsi_wake_up);
cfhsi            1189 drivers/net/caif/caif_hsi.c 	INIT_WORK(&cfhsi->wake_down_work, cfhsi_wake_down);
cfhsi            1190 drivers/net/caif/caif_hsi.c 	INIT_WORK(&cfhsi->out_of_sync_work, cfhsi_out_of_sync);
cfhsi            1193 drivers/net/caif/caif_hsi.c 	clear_bit(CFHSI_WAKE_UP_ACK, &cfhsi->bits);
cfhsi            1194 drivers/net/caif/caif_hsi.c 	clear_bit(CFHSI_WAKE_DOWN_ACK, &cfhsi->bits);
cfhsi            1195 drivers/net/caif/caif_hsi.c 	clear_bit(CFHSI_WAKE_UP, &cfhsi->bits);
cfhsi            1196 drivers/net/caif/caif_hsi.c 	clear_bit(CFHSI_AWAKE, &cfhsi->bits);
cfhsi            1199 drivers/net/caif/caif_hsi.c 	cfhsi->wq = alloc_ordered_workqueue(cfhsi->ndev->name, WQ_MEM_RECLAIM);
cfhsi            1200 drivers/net/caif/caif_hsi.c 	if (!cfhsi->wq) {
cfhsi            1201 drivers/net/caif/caif_hsi.c 		netdev_err(cfhsi->ndev, "%s: Failed to create work queue.\n",
cfhsi            1208 drivers/net/caif/caif_hsi.c 	init_waitqueue_head(&cfhsi->wake_up_wait);
cfhsi            1209 drivers/net/caif/caif_hsi.c 	init_waitqueue_head(&cfhsi->wake_down_wait);
cfhsi            1210 drivers/net/caif/caif_hsi.c 	init_waitqueue_head(&cfhsi->flush_fifo_wait);
cfhsi            1213 drivers/net/caif/caif_hsi.c 	timer_setup(&cfhsi->inactivity_timer, cfhsi_inactivity_tout, 0);
cfhsi            1215 drivers/net/caif/caif_hsi.c 	timer_setup(&cfhsi->rx_slowpath_timer, cfhsi_rx_slowpath, 0);
cfhsi            1217 drivers/net/caif/caif_hsi.c 	timer_setup(&cfhsi->aggregation_timer, cfhsi_aggregation_tout, 0);
cfhsi            1220 drivers/net/caif/caif_hsi.c 	res = cfhsi->ops->cfhsi_up(cfhsi->ops);
cfhsi            1222 drivers/net/caif/caif_hsi.c 		netdev_err(cfhsi->ndev,
cfhsi            1229 drivers/net/caif/caif_hsi.c 	res = cfhsi_flush_fifo(cfhsi);
cfhsi            1231 drivers/net/caif/caif_hsi.c 		netdev_err(cfhsi->ndev, "%s: Can't flush FIFO: %d.\n",
cfhsi            1238 drivers/net/caif/caif_hsi.c 	cfhsi->ops->cfhsi_down(cfhsi->ops);
cfhsi            1240 drivers/net/caif/caif_hsi.c 	destroy_workqueue(cfhsi->wq);
cfhsi            1242 drivers/net/caif/caif_hsi.c 	kfree(cfhsi->rx_flip_buf);
cfhsi            1244 drivers/net/caif/caif_hsi.c 	kfree(cfhsi->rx_buf);
cfhsi            1246 drivers/net/caif/caif_hsi.c 	kfree(cfhsi->tx_buf);
cfhsi            1253 drivers/net/caif/caif_hsi.c 	struct cfhsi *cfhsi = netdev_priv(ndev);
cfhsi            1257 drivers/net/caif/caif_hsi.c 	set_bit(CFHSI_SHUTDOWN, &cfhsi->bits);
cfhsi            1260 drivers/net/caif/caif_hsi.c 	del_timer_sync(&cfhsi->inactivity_timer);
cfhsi            1261 drivers/net/caif/caif_hsi.c 	del_timer_sync(&cfhsi->rx_slowpath_timer);
cfhsi            1262 drivers/net/caif/caif_hsi.c 	del_timer_sync(&cfhsi->aggregation_timer);
cfhsi            1265 drivers/net/caif/caif_hsi.c 	cfhsi->ops->cfhsi_rx_cancel(cfhsi->ops);
cfhsi            1268 drivers/net/caif/caif_hsi.c 	destroy_workqueue(cfhsi->wq);
cfhsi            1271 drivers/net/caif/caif_hsi.c 	tx_buf = cfhsi->tx_buf;
cfhsi            1272 drivers/net/caif/caif_hsi.c 	rx_buf = cfhsi->rx_buf;
cfhsi            1273 drivers/net/caif/caif_hsi.c 	flip_buf = cfhsi->rx_flip_buf;
cfhsi            1275 drivers/net/caif/caif_hsi.c 	cfhsi_abort_tx(cfhsi);
cfhsi            1278 drivers/net/caif/caif_hsi.c 	cfhsi->ops->cfhsi_down(cfhsi->ops);
cfhsi            1289 drivers/net/caif/caif_hsi.c 	struct cfhsi *cfhsi = netdev_priv(dev);
cfhsi            1292 drivers/net/caif/caif_hsi.c 	list_del(&cfhsi->list);
cfhsi            1302 drivers/net/caif/caif_hsi.c static void cfhsi_netlink_parms(struct nlattr *data[], struct cfhsi *cfhsi)
cfhsi            1319 drivers/net/caif/caif_hsi.c 		cfhsi->cfg.inactivity_timeout =	inactivity_timeout * HZ / 1000;
cfhsi            1320 drivers/net/caif/caif_hsi.c 		if (cfhsi->cfg.inactivity_timeout == 0)
cfhsi            1321 drivers/net/caif/caif_hsi.c 			cfhsi->cfg.inactivity_timeout = 1;
cfhsi            1322 drivers/net/caif/caif_hsi.c 		else if (cfhsi->cfg.inactivity_timeout > NEXT_TIMER_MAX_DELTA)
cfhsi            1323 drivers/net/caif/caif_hsi.c 			cfhsi->cfg.inactivity_timeout = NEXT_TIMER_MAX_DELTA;
cfhsi            1328 drivers/net/caif/caif_hsi.c 		cfhsi->cfg.aggregation_timeout = nla_get_u32(data[i]);
cfhsi            1332 drivers/net/caif/caif_hsi.c 		cfhsi->cfg.head_align = nla_get_u32(data[i]);
cfhsi            1336 drivers/net/caif/caif_hsi.c 		cfhsi->cfg.tail_align = nla_get_u32(data[i]);
cfhsi            1340 drivers/net/caif/caif_hsi.c 		cfhsi->cfg.q_high_mark = nla_get_u32(data[i]);
cfhsi            1344 drivers/net/caif/caif_hsi.c 		cfhsi->cfg.q_low_mark = nla_get_u32(data[i]);
cfhsi            1376 drivers/net/caif/caif_hsi.c 	struct cfhsi *cfhsi = netdev_priv(dev);
cfhsi            1379 drivers/net/caif/caif_hsi.c 			cfhsi->cfg.inactivity_timeout) ||
cfhsi            1381 drivers/net/caif/caif_hsi.c 			cfhsi->cfg.aggregation_timeout) ||
cfhsi            1383 drivers/net/caif/caif_hsi.c 			cfhsi->cfg.head_align) ||
cfhsi            1385 drivers/net/caif/caif_hsi.c 			cfhsi->cfg.tail_align) ||
cfhsi            1387 drivers/net/caif/caif_hsi.c 			cfhsi->cfg.q_high_mark) ||
cfhsi            1389 drivers/net/caif/caif_hsi.c 			cfhsi->cfg.q_low_mark))
cfhsi            1399 drivers/net/caif/caif_hsi.c 	struct cfhsi *cfhsi = NULL;
cfhsi            1404 drivers/net/caif/caif_hsi.c 	cfhsi = netdev_priv(dev);
cfhsi            1405 drivers/net/caif/caif_hsi.c 	cfhsi_netlink_parms(data, cfhsi);
cfhsi            1414 drivers/net/caif/caif_hsi.c 	cfhsi->ops = (*get_ops)();
cfhsi            1415 drivers/net/caif/caif_hsi.c 	if (!cfhsi->ops) {
cfhsi            1421 drivers/net/caif/caif_hsi.c 	cfhsi->ops->cb_ops = &cfhsi->cb_ops;
cfhsi            1427 drivers/net/caif/caif_hsi.c 	list_add_tail(&cfhsi->list, &cfhsi_list);
cfhsi            1437 drivers/net/caif/caif_hsi.c 	.priv_size	= sizeof(struct cfhsi),
cfhsi            1451 drivers/net/caif/caif_hsi.c 	struct cfhsi *cfhsi;
cfhsi            1457 drivers/net/caif/caif_hsi.c 		cfhsi = list_entry(list_node, struct cfhsi, list);
cfhsi            1458 drivers/net/caif/caif_hsi.c 		unregister_netdevice(cfhsi->ndev);