Re: [PATCH net-next 06/19] net: usb: aqc111: Introduce link management

From: Oliver Neukum <oneukum@suse.com>
Date: 2018-10-08 13:59:22
Also in: linux-usb

On Fr, 2018-10-05 at 10:24 +0000, Igor Russkikh wrote:
From: Dmitry Bezrukov <redacted>

+static void aqc111_configure_rx(struct usbnet *dev,
+				struct aqc111_data *aqc111_data)
+{
+	u8 reg8 = 0;
+	u8 queue_num = 0;
+	u16 reg16 = 0;
+	u16 link_speed = 0, usb_host = 0;
+	u8 buf[5] = { 0 };
DMA on stack.
+	enum usb_device_speed usb_speed = dev->udev->speed;
+
+	buf[0] = 0x00;
+	buf[1] = 0xF8;
+	buf[2] = 0x07;
+	switch (aqc111_data->link_speed) {
+	case AQ_INT_SPEED_5G:
+	{
+		link_speed = 5000;
+		reg8 = 0x05;
+		reg16 = 0x001F;
+		break;
+	}
+	case AQ_INT_SPEED_2_5G:
+	{
+		link_speed = 2500;
+		reg16 = 0x003F;
+		break;
+	}
+	case AQ_INT_SPEED_1G:
+	{
+		link_speed = 1000;
+		reg16 = 0x009F;
+		break;
+	}
+	case AQ_INT_SPEED_100M:
+	{
+		link_speed = 100;
+		queue_num = 1;
+		reg16 = 0x063F;
+		buf[1] = 0xFB;
+		buf[2] = 0x4;
+		break;
+	}
+	}
+
+	if (aqc111_data->dpa) {
+		/* Set Phy Flow control */
+		aq_mdio_write_cmd(dev, AQ_GLB_ING_PAUSE_CTRL_REG,
+				  AQ_PHY_AUTONEG_ADDR, 2, &reg16);
+		aq_mdio_write_cmd(dev, AQ_GLB_EGR_PAUSE_CTRL_REG,
+				  AQ_PHY_AUTONEG_ADDR, 2, &reg16);
+	}
+
+	aqc111_write_cmd(dev, AQ_ACCESS_MAC, SFR_INTER_PACKET_GAP_0,
+			 1, 1, &reg8);
+
+	aqc111_write_cmd(dev, AQ_ACCESS_MAC, SFR_TX_PAUSE_RESEND_T, 3, 3, buf);
+
+	switch (usb_speed) {
Needs to handle all speeds. And please add a comment explaining the
rationale.
+	case USB_SPEED_SUPER:
+	{
+		usb_host = 3;
+		break;
+	}
+	case USB_SPEED_HIGH:
+	{
+		usb_host = 2;
+		break;
+	}
+	case USB_SPEED_FULL:
+	case USB_SPEED_LOW:
+	{
+		usb_host = 1;
+		queue_num = 0;
+		break;
+	}
+	default:
+	{
+		usb_host = 0;
+		break;
+	}
+	}
+
+	memcpy(buf, &AQC111_BULKIN_SIZE[queue_num], 5);
+	/* RX bulk configuration */
+	aqc111_write_cmd(dev, AQ_ACCESS_MAC, SFR_RX_BULKIN_QCTRL, 5, 5, buf);
+
+	/* Set high low water level */
+	reg16 = 0x0810;
+
+	aqc111_write_cmd(dev, AQ_ACCESS_MAC, SFR_PAUSE_WATERLVL_LOW,
+			 2, 2, &reg16);
+	netdev_info(dev->net, "Link Speed %d, USB %d", link_speed, usb_host);
+}
	Regards
		Oliver
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help