Commit 3436acca authored by Malcolm Priestley's avatar Malcolm Priestley Committed by Greg Kroah-Hartman
Browse files

staging: vt6656: Move vnt_get_frame_time and vnt_get_phy_field to rxtx



These functions are only used by rxtx so move them and their arrays
used with them abbreviating the function description.

Signed-off-by: default avatarMalcolm Priestley <tvboxspy@gmail.com>
Link: https://lore.kernel.org/r/2a4fd665-2fe1-f1ad-1e9a-1b01f698ea79@gmail.com


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 6f21cb79
Loading
Loading
Loading
Loading
+0 −139
Original line number Diff line number Diff line
@@ -112,10 +112,6 @@ static u8 vnt_vt3184_vt3226d0[] = {
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00  /* 0xff */
};

static const u16 vnt_frame_time[MAX_RATE] = {
	10, 20, 55, 110, 24, 36, 48, 72, 96, 144, 192, 216
};

struct vnt_threshold {
	u8 bb_pre_ed_rssi;
	u8 cr_201;
@@ -196,141 +192,6 @@ static const struct vnt_threshold vt3342_vnt_threshold[] = {
	{41, 0xff, 0x00}
};

static const u8 vnt_phy_signal[] = {
	0x00,	/* RATE_1M  */
	0x01,	/* RATE_2M  */
	0x02,	/* RATE_5M  */
	0x03,	/* RATE_11M */
	0x8b,	/* RATE_6M  */
	0x8f,	/* RATE_9M  */
	0x8a,	/* RATE_12M */
	0x8e,	/* RATE_18M */
	0x89,	/* RATE_24M */
	0x8d,	/* RATE_36M */
	0x88,	/* RATE_48M */
	0x8c	/* RATE_54M */
};

/*
 * Description: Calculate data frame transmitting time
 *
 * Parameters:
 *  In:
 *	preamble_type	- Preamble Type
 *	pkt_type	- PK_TYPE_11A, PK_TYPE_11B, PK_TYPE_11GB, PK_TYPE_11GA
 *	frame_length	- Baseband Type
 *	tx_rate		- Tx Rate
 *  Out:
 *
 * Return Value: FrameTime
 *
 */
unsigned int vnt_get_frame_time(u8 preamble_type, u8 pkt_type,
				unsigned int frame_length, u16 tx_rate)
{
	unsigned int frame_time;
	unsigned int preamble;
	unsigned int rate;

	if (tx_rate > RATE_54M)
		return 0;

	rate = (unsigned int)vnt_frame_time[tx_rate];

	if (tx_rate <= RATE_11M) {
		if (preamble_type == PREAMBLE_SHORT)
			preamble = 96;
		else
			preamble = 192;

		frame_time = DIV_ROUND_UP(frame_length * 80, rate);
		return preamble + frame_time;
	}

	frame_time = DIV_ROUND_UP(frame_length * 8 + 22, rate);
	frame_time = frame_time * 4;

	if (pkt_type != PK_TYPE_11A)
		frame_time += 6;
	return 20 + frame_time;
}

/*
 * Description: Calculate Length, Service, and Signal fields of Phy for Tx
 *
 * Parameters:
 *  In:
 *      priv         - Device Structure
 *      frame_length   - Tx Frame Length
 *      tx_rate           - Tx Rate
 *  Out:
 *	struct vnt_phy_field *phy
 *		- pointer to Phy Length field
 *		- pointer to Phy Service field
 *		- pointer to Phy Signal field
 *
 * Return Value: none
 *
 */
void vnt_get_phy_field(struct vnt_private *priv, u32 frame_length,
		       u16 tx_rate, u8 pkt_type, struct vnt_phy_field *phy)
{
	u32 bit_count;
	u32 count = 0;
	u32 tmp;
	int ext_bit;
	int i;
	u8 mask = 0;
	u8 preamble_type = priv->preamble_type;

	bit_count = frame_length * 8;
	ext_bit = false;

	switch (tx_rate) {
	case RATE_1M:
		count = bit_count;
		break;
	case RATE_2M:
		count = bit_count / 2;
		break;
	case RATE_5M:
		count = DIV_ROUND_UP(bit_count * 10, 55);
		break;
	case RATE_11M:
		count = bit_count / 11;
		tmp = count * 11;

		if (tmp != bit_count) {
			count++;

			if ((bit_count - tmp) <= 3)
				ext_bit = true;
		}

		break;
	}

	if (tx_rate > RATE_11M) {
		if (pkt_type == PK_TYPE_11A)
			mask = BIT(4);
	} else if (tx_rate > RATE_1M) {
		if (preamble_type == PREAMBLE_SHORT)
			mask = BIT(3);
	}

	i = tx_rate > RATE_54M ? RATE_54M : tx_rate;
	phy->signal = vnt_phy_signal[i] | mask;
	phy->service = 0x00;

	if (pkt_type == PK_TYPE_11B) {
		if (ext_bit)
			phy->service |= 0x80;
		phy->len = cpu_to_le16((u16)count);
	} else {
		phy->len = cpu_to_le16((u16)frame_length);
	}
}

/*
 * Description: Set Antenna mode
 *
+0 −13
Original line number Diff line number Diff line
@@ -66,19 +66,6 @@
#define TOP_RATE_2M         0x00200000
#define TOP_RATE_1M         0x00100000

/* Length, Service, and Signal fields of Phy for Tx */
struct vnt_phy_field {
	u8 signal;
	u8 service;
	__le16 len;
} __packed;

unsigned int vnt_get_frame_time(u8 preamble_type, u8 pkt_type,
				unsigned int frame_length, u16 tx_rate);

void vnt_get_phy_field(struct vnt_private *priv, u32 frame_length,
		       u16 tx_rate, u8 pkt_type, struct vnt_phy_field *phy);

int vnt_set_short_slot_time(struct vnt_private *priv);
void vnt_set_vga_gain_offset(struct vnt_private *priv, u8 data);
int vnt_set_antenna_mode(struct vnt_private *priv, u8 antenna_mode);
+111 −0
Original line number Diff line number Diff line
@@ -45,6 +45,25 @@ static const u16 vnt_time_stampoff[2][MAX_RATE] = {
#define DATADUR_B       10
#define DATADUR_A       11

static const u16 vnt_frame_time[MAX_RATE] = {
	10, 20, 55, 110, 24, 36, 48, 72, 96, 144, 192, 216
};

static const u8 vnt_phy_signal[] = {
	0x00,	/* RATE_1M  */
	0x01,	/* RATE_2M  */
	0x02,	/* RATE_5M  */
	0x03,	/* RATE_11M */
	0x8b,	/* RATE_6M  */
	0x8f,	/* RATE_9M  */
	0x8a,	/* RATE_12M */
	0x8e,	/* RATE_18M */
	0x89,	/* RATE_24M */
	0x8d,	/* RATE_36M */
	0x88,	/* RATE_48M */
	0x8c	/* RATE_54M */
};

static struct vnt_usb_send_context
	*vnt_get_free_context(struct vnt_private *priv)
{
@@ -78,6 +97,98 @@ static struct vnt_usb_send_context
	return NULL;
}

/* Frame time for Tx */
static unsigned int vnt_get_frame_time(u8 preamble_type, u8 pkt_type,
				       unsigned int frame_length, u16 tx_rate)
{
	unsigned int frame_time;
	unsigned int preamble;
	unsigned int rate;

	if (tx_rate > RATE_54M)
		return 0;

	rate = (unsigned int)vnt_frame_time[tx_rate];

	if (tx_rate <= RATE_11M) {
		if (preamble_type == PREAMBLE_SHORT)
			preamble = 96;
		else
			preamble = 192;

		frame_time = DIV_ROUND_UP(frame_length * 80, rate);
		return preamble + frame_time;
	}

	frame_time = DIV_ROUND_UP(frame_length * 8 + 22, rate);
	frame_time = frame_time * 4;

	if (pkt_type != PK_TYPE_11A)
		frame_time += 6;
	return 20 + frame_time;
}

/* Get Length, Service, and Signal fields of Phy for Tx */
static void vnt_get_phy_field(struct vnt_private *priv, u32 frame_length,
			      u16 tx_rate, u8 pkt_type,
			      struct vnt_phy_field *phy)
{
	u32 bit_count;
	u32 count = 0;
	u32 tmp;
	int ext_bit;
	int i;
	u8 mask = 0;
	u8 preamble_type = priv->preamble_type;

	bit_count = frame_length * 8;
	ext_bit = false;

	switch (tx_rate) {
	case RATE_1M:
		count = bit_count;
		break;
	case RATE_2M:
		count = bit_count / 2;
		break;
	case RATE_5M:
		count = DIV_ROUND_UP(bit_count * 10, 55);
		break;
	case RATE_11M:
		count = bit_count / 11;
		tmp = count * 11;

		if (tmp != bit_count) {
			count++;

			if ((bit_count - tmp) <= 3)
				ext_bit = true;
		}

		break;
	}

	if (tx_rate > RATE_11M) {
		if (pkt_type == PK_TYPE_11A)
			mask = BIT(4);
	} else if (tx_rate > RATE_1M) {
		if (preamble_type == PREAMBLE_SHORT)
			mask = BIT(3);
	}

	i = tx_rate > RATE_54M ? RATE_54M : tx_rate;
	phy->signal = vnt_phy_signal[i] | mask;
	phy->service = 0x00;

	if (pkt_type == PK_TYPE_11B) {
		if (ext_bit)
			phy->service |= 0x80;
		phy->len = cpu_to_le16((u16)count);
	} else {
		phy->len = cpu_to_le16((u16)frame_length);
	}
}

static __le16 vnt_time_stamp_off(struct vnt_private *priv, u16 rate)
{
	return cpu_to_le16(vnt_time_stampoff[priv->preamble_type % 2]
+7 −0
Original line number Diff line number Diff line
@@ -23,6 +23,13 @@
#define DEFAULT_MGN_LIFETIME_RES_64us	125  /* 64us */
#define DEFAULT_MSDU_LIFETIME_RES_64us  8000

/* Length, Service, and Signal fields of Phy for Tx */
struct vnt_phy_field {
	u8 signal;
	u8 service;
	__le16 len;
} __packed;

/* MIC HDR data header */
struct vnt_mic_hdr {
	u8 id;