Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d36d13a3 authored by Gabor Juhos's avatar Gabor Juhos Committed by John W. Linville
Browse files

rt2x00: rt2800usb: implement queue_init callback



The generic rt2x00 code has been changed to allow the
drivers toimplement dynamic data_queue initialization.

Remove the static data queue descriptor structures
and implement the queue_init callback instead.

The actual chipset is already known when the callback
is used. This allows us to use a single callback for
all supported devices.

Signed-off-by: default avatarGabor Juhos <juhosg@openwrt.org>
Acked-by: default avatarStanislaw Gruszka <sgruszka@redhat.com>
Acked-by: default avatarGertjan van Wingerde <gwingerde@gmail.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 25bf6ce4
Loading
Loading
Loading
Loading
+48 −52
Original line number Original line Diff line number Diff line
@@ -849,29 +849,54 @@ static const struct rt2x00lib_ops rt2800usb_rt2x00_ops = {
	.sta_remove		= rt2800_sta_remove,
	.sta_remove		= rt2800_sta_remove,
};
};


static const struct data_queue_desc rt2800usb_queue_rx = {
static void rt2800usb_queue_init(struct data_queue *queue)
	.entry_num		= 128,
{
	.data_size		= AGGREGATION_SIZE,
	struct rt2x00_dev *rt2x00dev = queue->rt2x00dev;
	.desc_size		= RXINFO_DESC_SIZE,
	unsigned short txwi_size, rxwi_size;
	.winfo_size		= RXWI_DESC_SIZE,
	.priv_size		= sizeof(struct queue_entry_priv_usb),
};


static const struct data_queue_desc rt2800usb_queue_tx = {
	if (rt2x00_rt(rt2x00dev, RT5592)) {
	.entry_num		= 16,
		txwi_size = TXWI_DESC_SIZE_5592;
	.data_size		= AGGREGATION_SIZE,
		rxwi_size = RXWI_DESC_SIZE_5592;
	.desc_size		= TXINFO_DESC_SIZE,
	} else {
	.winfo_size		= TXWI_DESC_SIZE,
		txwi_size = TXWI_DESC_SIZE;
	.priv_size		= sizeof(struct queue_entry_priv_usb),
		rxwi_size = RXWI_DESC_SIZE;
};
	}


static const struct data_queue_desc rt2800usb_queue_bcn = {
	switch (queue->qid) {
	.entry_num		= 8,
	case QID_RX:
	.data_size		= MGMT_FRAME_SIZE,
		queue->limit = 128;
	.desc_size		= TXINFO_DESC_SIZE,
		queue->data_size = AGGREGATION_SIZE;
	.winfo_size		= TXWI_DESC_SIZE,
		queue->desc_size = RXINFO_DESC_SIZE;
	.priv_size		= sizeof(struct queue_entry_priv_usb),
		queue->winfo_size = rxwi_size;
};
		queue->priv_size = sizeof(struct queue_entry_priv_usb);
		break;

	case QID_AC_VO:
	case QID_AC_VI:
	case QID_AC_BE:
	case QID_AC_BK:
		queue->limit = 16;
		queue->data_size = AGGREGATION_SIZE;
		queue->desc_size = TXINFO_DESC_SIZE;
		queue->winfo_size = txwi_size;
		queue->priv_size = sizeof(struct queue_entry_priv_usb);
		break;

	case QID_BEACON:
		queue->limit = 8;
		queue->data_size = MGMT_FRAME_SIZE;
		queue->desc_size = TXINFO_DESC_SIZE;
		queue->winfo_size = txwi_size;
		queue->priv_size = sizeof(struct queue_entry_priv_usb);
		break;

	case QID_ATIM:
		/* fallthrough */
	default:
		BUG();
		break;
	}
}


static const struct rt2x00_ops rt2800usb_ops = {
static const struct rt2x00_ops rt2800usb_ops = {
	.name			= KBUILD_MODNAME,
	.name			= KBUILD_MODNAME,
@@ -881,9 +906,7 @@ static const struct rt2x00_ops rt2800usb_ops = {
	.rf_size		= RF_SIZE,
	.rf_size		= RF_SIZE,
	.tx_queues		= NUM_TX_QUEUES,
	.tx_queues		= NUM_TX_QUEUES,
	.extra_tx_headroom	= TXINFO_DESC_SIZE + TXWI_DESC_SIZE,
	.extra_tx_headroom	= TXINFO_DESC_SIZE + TXWI_DESC_SIZE,
	.rx			= &rt2800usb_queue_rx,
	.queue_init		= rt2800usb_queue_init,
	.tx			= &rt2800usb_queue_tx,
	.bcn			= &rt2800usb_queue_bcn,
	.lib			= &rt2800usb_rt2x00_ops,
	.lib			= &rt2800usb_rt2x00_ops,
	.drv			= &rt2800usb_rt2800_ops,
	.drv			= &rt2800usb_rt2800_ops,
	.hw			= &rt2800usb_mac80211_ops,
	.hw			= &rt2800usb_mac80211_ops,
@@ -892,31 +915,6 @@ static const struct rt2x00_ops rt2800usb_ops = {
#endif /* CONFIG_RT2X00_LIB_DEBUGFS */
#endif /* CONFIG_RT2X00_LIB_DEBUGFS */
};
};


static const struct data_queue_desc rt2800usb_queue_rx_5592 = {
	.entry_num		= 128,
	.data_size		= AGGREGATION_SIZE,
	.desc_size		= RXINFO_DESC_SIZE,
	.winfo_size		= RXWI_DESC_SIZE_5592,
	.priv_size		= sizeof(struct queue_entry_priv_usb),
};

static const struct data_queue_desc rt2800usb_queue_tx_5592 = {
	.entry_num		= 16,
	.data_size		= AGGREGATION_SIZE,
	.desc_size		= TXINFO_DESC_SIZE,
	.winfo_size		= TXWI_DESC_SIZE_5592,
	.priv_size		= sizeof(struct queue_entry_priv_usb),
};

static const struct data_queue_desc rt2800usb_queue_bcn_5592 = {
	.entry_num		= 8,
	.data_size		= MGMT_FRAME_SIZE,
	.desc_size		= TXINFO_DESC_SIZE,
	.winfo_size		= TXWI_DESC_SIZE_5592,
	.priv_size		= sizeof(struct queue_entry_priv_usb),
};


static const struct rt2x00_ops rt2800usb_ops_5592 = {
static const struct rt2x00_ops rt2800usb_ops_5592 = {
	.name			= KBUILD_MODNAME,
	.name			= KBUILD_MODNAME,
	.drv_data_size		= sizeof(struct rt2800_drv_data),
	.drv_data_size		= sizeof(struct rt2800_drv_data),
@@ -925,9 +923,7 @@ static const struct rt2x00_ops rt2800usb_ops_5592 = {
	.rf_size		= RF_SIZE,
	.rf_size		= RF_SIZE,
	.tx_queues		= NUM_TX_QUEUES,
	.tx_queues		= NUM_TX_QUEUES,
	.extra_tx_headroom	= TXINFO_DESC_SIZE + TXWI_DESC_SIZE_5592,
	.extra_tx_headroom	= TXINFO_DESC_SIZE + TXWI_DESC_SIZE_5592,
	.rx			= &rt2800usb_queue_rx_5592,
	.queue_init		= rt2800usb_queue_init,
	.tx			= &rt2800usb_queue_tx_5592,
	.bcn			= &rt2800usb_queue_bcn_5592,
	.lib			= &rt2800usb_rt2x00_ops,
	.lib			= &rt2800usb_rt2x00_ops,
	.drv			= &rt2800usb_rt2800_ops,
	.drv			= &rt2800usb_rt2800_ops,
	.hw			= &rt2800usb_mac80211_ops,
	.hw			= &rt2800usb_mac80211_ops,