Lines Matching refs:roq

497 void __i2400m_roq_init(struct i2400m_roq *roq)
499 roq->ws = 0;
500 skb_queue_head_init(&roq->queue);
505 unsigned __i2400m_roq_index(struct i2400m *i2400m, struct i2400m_roq *roq)
507 return ((unsigned long) roq - (unsigned long) i2400m->rx_roq)
508 / sizeof(*roq);
517 * Note that if @sn < @roq->ws, we still need a positive number; %'s
522 unsigned __i2400m_roq_nsn(struct i2400m_roq *roq, unsigned sn)
525 r = ((int) sn - (int) roq->ws) % 2048;
589 struct i2400m_roq *roq, enum i2400m_ro_type type,
595 int index = __i2400m_roq_index(i2400m, roq);
598 if (roq->log->in - roq->log->out == I2400M_ROQ_LOG_LENGTH)
599 roq->log->out++;
600 cnt_idx = roq->log->in++ % I2400M_ROQ_LOG_LENGTH;
601 e = &roq->log->entry[cnt_idx];
617 void i2400m_roq_log_dump(struct i2400m *i2400m, struct i2400m_roq *roq)
621 int index = __i2400m_roq_index(i2400m, roq);
623 BUG_ON(roq->log->out > roq->log->in);
624 for (cnt = roq->log->out; cnt < roq->log->in; cnt++) {
626 e = &roq->log->entry[cnt_idx];
630 roq->log->in = roq->log->out = 0;
638 * @roq: reorder queue where to add
642 * caller from the @sn and @roq->ws).
657 void __i2400m_roq_queue(struct i2400m *i2400m, struct i2400m_roq *roq,
665 d_fnstart(4, dev, "(i2400m %p roq %p skb %p sn %u nsn %u)\n",
666 i2400m, roq, skb, sn, nsn);
671 d_printf(3, dev, "ERX: roq %p [ws %u] nsn %d sn %u\n",
672 roq, roq->ws, nsn, roq_data->sn);
676 if (skb_queue_empty(&roq->queue)) {
677 d_printf(2, dev, "ERX: roq %p - first one\n", roq);
678 __skb_queue_head(&roq->queue, skb);
682 skb_itr = skb_peek_tail(&roq->queue);
684 nsn_itr = __i2400m_roq_nsn(roq, roq_data_itr->sn);
687 d_printf(2, dev, "ERX: roq %p - appended after %p (nsn %d sn %u)\n",
688 roq, skb_itr, nsn_itr, roq_data_itr->sn);
689 __skb_queue_tail(&roq->queue, skb);
698 skb_queue_walk(&roq->queue, skb_itr) {
700 nsn_itr = __i2400m_roq_nsn(roq, roq_data_itr->sn);
703 d_printf(2, dev, "ERX: roq %p - queued before %p "
704 "(nsn %d sn %u)\n", roq, skb_itr, nsn_itr,
706 __skb_queue_before(&roq->queue, skb_itr, skb);
713 dev_err(dev, "ERX: roq %p [ws %u] skb %p nsn %d sn %u\n",
714 roq, roq->ws, skb, nsn, roq_data->sn);
715 skb_queue_walk(&roq->queue, skb_itr) {
717 nsn_itr = __i2400m_roq_nsn(roq, roq_data_itr->sn);
719 dev_err(dev, "ERX: roq %p skb_itr %p nsn %d sn %u\n",
720 roq, skb_itr, nsn_itr, roq_data_itr->sn);
724 d_fnend(4, dev, "(i2400m %p roq %p skb %p sn %u nsn %d) = void\n",
725 i2400m, roq, skb, sn, nsn);
733 * @roq: Reorder queue
741 unsigned __i2400m_roq_update_ws(struct i2400m *i2400m, struct i2400m_roq *roq,
749 new_nws = __i2400m_roq_nsn(roq, sn);
756 skb_queue_walk_safe(&roq->queue, skb_itr, tmp_itr) {
758 nsn_itr = __i2400m_roq_nsn(roq, roq_data_itr->sn);
761 d_printf(2, dev, "ERX: roq %p - release skb %p "
763 roq, skb_itr, nsn_itr, roq_data_itr->sn,
765 __skb_unlink(skb_itr, &roq->queue);
771 roq->ws = sn;
786 void i2400m_roq_reset(struct i2400m *i2400m, struct i2400m_roq *roq)
792 d_fnstart(2, dev, "(i2400m %p roq %p)\n", i2400m, roq);
793 i2400m_roq_log_add(i2400m, roq, I2400M_RO_TYPE_RESET,
794 roq->ws, skb_queue_len(&roq->queue),
796 skb_queue_walk_safe(&roq->queue, skb_itr, tmp_itr) {
798 d_printf(2, dev, "ERX: roq %p - release skb %p (sn %u)\n",
799 roq, skb_itr, roq_data_itr->sn);
800 __skb_unlink(skb_itr, &roq->queue);
803 roq->ws = 0;
804 d_fnend(2, dev, "(i2400m %p roq %p) = void\n", i2400m, roq);
821 void i2400m_roq_queue(struct i2400m *i2400m, struct i2400m_roq *roq,
827 d_fnstart(2, dev, "(i2400m %p roq %p skb %p lbn %u) = void\n",
828 i2400m, roq, skb, lbn);
829 len = skb_queue_len(&roq->queue);
830 nsn = __i2400m_roq_nsn(roq, lbn);
833 nsn, lbn, roq->ws);
834 i2400m_roq_log_dump(i2400m, roq);
837 __i2400m_roq_queue(i2400m, roq, skb, lbn, nsn);
838 i2400m_roq_log_add(i2400m, roq, I2400M_RO_TYPE_PACKET,
839 roq->ws, len, lbn, nsn, ~0);
841 d_fnend(2, dev, "(i2400m %p roq %p skb %p lbn %u) = void\n",
842 i2400m, roq, skb, lbn);
851 * @roq: Reorder queue
855 void i2400m_roq_update_ws(struct i2400m *i2400m, struct i2400m_roq *roq,
861 d_fnstart(2, dev, "(i2400m %p roq %p sn %u)\n", i2400m, roq, sn);
862 old_ws = roq->ws;
863 len = skb_queue_len(&roq->queue);
864 nsn = __i2400m_roq_update_ws(i2400m, roq, sn);
865 i2400m_roq_log_add(i2400m, roq, I2400M_RO_TYPE_WS,
866 old_ws, len, sn, nsn, roq->ws);
867 d_fnstart(2, dev, "(i2400m %p roq %p sn %u) = void\n", i2400m, roq, sn);
884 void i2400m_roq_queue_update_ws(struct i2400m *i2400m, struct i2400m_roq *roq,
890 d_fnstart(2, dev, "(i2400m %p roq %p skb %p sn %u)\n",
891 i2400m, roq, skb, sn);
892 len = skb_queue_len(&roq->queue);
893 nsn = __i2400m_roq_nsn(roq, sn);
900 old_ws = roq->ws;
909 __i2400m_roq_queue(i2400m, roq, skb, sn, nsn);
911 __i2400m_roq_update_ws(i2400m, roq, sn + 1);
912 i2400m_roq_log_add(i2400m, roq, I2400M_RO_TYPE_PACKET_WS,
913 old_ws, len, sn, nsn, roq->ws);
915 d_fnend(2, dev, "(i2400m %p roq %p skb %p sn %u) = void\n",
916 i2400m, roq, skb, sn);
990 struct i2400m_roq *roq;
1037 roq = &i2400m->rx_roq[ro_cin];
1046 ro_type, ro_cin, roq->ws, ro_sn,
1047 __i2400m_roq_nsn(roq, ro_sn), size);
1051 i2400m_roq_reset(i2400m, roq);
1055 i2400m_roq_queue(i2400m, roq, skb, ro_sn);
1058 i2400m_roq_update_ws(i2400m, roq, ro_sn);
1062 i2400m_roq_queue_update_ws(i2400m, roq, skb, ro_sn);
1341 * Note we allocate the roq queues in one chunk and the actual logging