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, ®16);
+ aq_mdio_write_cmd(dev, AQ_GLB_EGR_PAUSE_CTRL_REG,
+ AQ_PHY_AUTONEG_ADDR, 2, ®16);
+ }
+
+ aqc111_write_cmd(dev, AQ_ACCESS_MAC, SFR_INTER_PACKET_GAP_0,
+ 1, 1, ®8);
+
+ 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, ®16);
+ netdev_info(dev->net, "Link Speed %d, USB %d", link_speed, usb_host);
+}Regards Oliver