From: Andrew Lunn <andrew@lunn•ch>
To: Igor Russkikh <Igor.Russkikh@aquantia•com>
Cc: "David S . Miller" <davem@davemloft•net>,
"linux-usb@vger•kernel.org" <linux-usb@vger•kernel.org>,
"netdev@vger•kernel.org" <netdev@vger•kernel.org>,
Dmitry Bezrukov <Dmitry.Bezrukov@aquantia•com>
Subject: Re: [PATCH net-next 08/19] net: usb: aqc111: Implement TX data path
Date: Sat, 6 Oct 2018 03:13:25 +0200 [thread overview]
Message-ID: <20181006011325.GB32455@lunn.ch> (raw)
In-Reply-To: <65674cc0cd1b025d859b1b0a5410b21ca9f88176.1538734658.git.igor.russkikh@aquantia.com>
> +static struct sk_buff *aqc111_tx_fixup(struct usbnet *dev, struct sk_buff *skb,
> + gfp_t flags)
> +{
> + struct aq_tx_packet_desc tx_hdr;
> + int frame_size = dev->maxpacket;
> + int headroom = 0;
> + int tailroom = 0;
> + int padding_size = 0;
> + struct sk_buff *new_skb = NULL;
> +
> + memset(&tx_hdr, 0x00, sizeof(tx_hdr));
> +
> + /*Length of actual data*/
> + tx_hdr.length = (skb->len & 0x1FFFFF);
> +
> + headroom = (skb->len + AQ_TX_HEADER_SIZE) % 8;
> + if (headroom != 0)
> + padding_size = 8 - headroom;
> +
> + if (((skb->len + AQ_TX_HEADER_SIZE + padding_size) % frame_size) == 0) {
> + padding_size += 8;
> + tx_hdr.drop_padding = 1;
> + }
> +
> + if (!dev->can_dma_sg && (dev->net->features & NETIF_F_SG) &&
> + skb_linearize(skb))
> + return NULL;
> +
> + headroom = skb_headroom(skb);
> + tailroom = skb_tailroom(skb);
> +
> + if (!(headroom >= AQ_TX_HEADER_SIZE && tailroom >= padding_size)) {
> + new_skb = skb_copy_expand(skb, AQ_TX_HEADER_SIZE,
> + padding_size, flags);
> + dev_kfree_skb_any(skb);
> + skb = new_skb;
> + if (!skb)
> + return NULL;
> + }
> + if (padding_size != 0)
> + skb_put(skb, padding_size);
> + /* Copy TX header */
> + skb_push(skb, AQ_TX_HEADER_SIZE);
> + cpu_to_le64s(&tx_hdr);
Is that portable? tx_hdr is a structure of 2x u32 bitfields. What
endian have you tested that one?
> + skb_copy_to_linear_data(skb, &tx_hdr, 8);
> +
> + usbnet_set_skb_tx_stats(skb, 1, 0);
> +
> + return skb;
> +}
> +struct aq_tx_packet_desc {
> + struct {
> + u32 length:21;
> + u32 checksum:7;
> + u32 drop_padding:1;
> + u32 vlan_tag:1;
> + u32 cphi:1;
> + u32 dicf:1;
> + };
> + struct {
> + u32 max_seg_size:15;
> + u32 reserved:1;
> + u32 vlan_info:16;
> + };
> +};
Andrew
next prev parent reply other threads:[~2018-10-06 8:14 UTC|newest]
Thread overview: 69+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-05 10:24 [PATCH net-next 00/19] Add support for Aquantia AQtion USB to 5/2.5GbE devices Igor Russkikh
2018-10-05 10:24 ` [PATCH net-next 01/19] net: usb: aqc111: Driver skeleton for Aquantia AQtion USB to 5GbE Igor Russkikh
2018-10-09 13:37 ` Bjørn Mork
2018-10-05 10:24 ` [PATCH net-next 02/19] net: usb: aqc111: Add bind and empty unbind callbacks Igor Russkikh
2018-10-05 17:39 ` David Miller
2018-10-05 10:24 ` [PATCH net-next 03/19] net: usb: aqc111: Add implementation of read and write commands Igor Russkikh
2018-10-05 17:40 ` David Miller
2018-10-08 13:44 ` Oliver Neukum
2018-10-09 13:33 ` Bjørn Mork
2018-10-05 10:24 ` [PATCH net-next 04/19] net: usb: aqc111: Various callbacks implementation Igor Russkikh
2018-10-08 13:47 ` Oliver Neukum
2018-10-09 13:27 ` Bjørn Mork
2018-10-10 11:33 ` Oliver Neukum
2018-10-05 10:24 ` [PATCH net-next 05/19] net: usb: aqc111: Introduce PHY access Igor Russkikh
2018-10-05 22:04 ` Andrew Lunn
2018-10-08 9:09 ` Igor Russkikh
2018-10-08 12:17 ` Andrew Lunn
2018-10-08 14:07 ` Igor Russkikh
2018-10-10 0:58 ` Andrew Lunn
2018-10-10 7:54 ` Igor Russkikh
2018-10-08 13:52 ` Oliver Neukum
2018-10-08 14:10 ` Igor Russkikh
2018-10-08 14:24 ` Oliver Neukum
2018-10-05 10:24 ` [PATCH net-next 06/19] net: usb: aqc111: Introduce link management Igor Russkikh
2018-10-05 17:11 ` Andrew Lunn
2018-10-08 13:22 ` Igor Russkikh
2018-10-05 17:46 ` David Miller
2018-10-06 17:35 ` Andrew Lunn
2018-10-08 9:29 ` Igor Russkikh
2018-10-08 12:12 ` Andrew Lunn
2018-10-08 13:59 ` Oliver Neukum
2018-10-05 10:24 ` [PATCH net-next 07/19] net: usb: aqc111: Add support for getting and setting of MAC address Igor Russkikh
2018-10-06 1:03 ` Andrew Lunn
2018-10-09 14:34 ` Igor Russkikh
2018-10-09 14:46 ` Andrew Lunn
2018-10-05 10:25 ` [PATCH net-next 08/19] net: usb: aqc111: Implement TX data path Igor Russkikh
2018-10-06 1:13 ` Andrew Lunn [this message]
2018-10-08 13:43 ` Igor Russkikh
2018-10-08 14:07 ` Oliver Neukum
2018-10-09 13:50 ` Bjørn Mork
2018-10-05 10:25 ` [PATCH net-next 09/19] net: usb: aqc111: Implement RX " Igor Russkikh
2018-10-06 1:18 ` Andrew Lunn
2018-10-09 13:39 ` Bjørn Mork
2018-10-05 10:25 ` [PATCH net-next 10/19] net: usb: aqc111: Add checksum offload support Igor Russkikh
2018-10-05 10:25 ` [PATCH net-next 11/19] net: usb: aqc111: Add support for changing MTU Igor Russkikh
2018-10-06 16:56 ` Andrew Lunn
2018-10-05 10:25 ` [PATCH net-next 12/19] net: usb: aqc111: Add support for enable/disable checksum offload Igor Russkikh
2018-10-05 10:25 ` [PATCH net-next 13/19] net: usb: aqc111: Add support for TSO Igor Russkikh
2018-10-08 14:12 ` Oliver Neukum
2018-10-05 10:25 ` [PATCH net-next 14/19] net: usb: aqc111: Implement set_rx_mode callback Igor Russkikh
2018-10-06 17:03 ` Andrew Lunn
2018-10-08 13:49 ` Igor Russkikh
2018-10-05 10:25 ` [PATCH net-next 15/19] net: usb: aqc111: Add support for VLAN_CTAG_TX/RX offload Igor Russkikh
2018-10-08 14:14 ` Oliver Neukum
2018-10-05 10:25 ` [PATCH net-next 16/19] net: usb: aqc111: Add RX VLAN filtering support Igor Russkikh
2018-10-06 17:05 ` Andrew Lunn
2018-10-05 10:25 ` [PATCH net-next 17/19] net: usb: aqc111: Initialize ethtool_ops structure Igor Russkikh
2018-10-06 17:08 ` Andrew Lunn
2018-10-05 10:25 ` [PATCH net-next 18/19] net: usb: aqc111: Implement get/set_link_ksettings callbacks Igor Russkikh
2018-10-06 17:38 ` Andrew Lunn
2018-10-08 14:18 ` Oliver Neukum
2018-10-05 10:25 ` [PATCH net-next 19/19] net: usb: aqc111: Add support for wake on LAN by MAGIC packet Igor Russkikh
2018-10-06 17:49 ` Andrew Lunn
2018-10-08 14:12 ` Igor Russkikh
2018-10-08 14:47 ` Andrew Lunn
2018-10-06 17:51 ` [PATCH net-next 00/19] Add support for Aquantia AQtion USB to 5/2.5GbE devices Andrew Lunn
2018-10-08 7:58 ` Igor Russkikh
2018-10-08 14:21 ` Oliver Neukum
2018-10-08 14:52 ` Igor Russkikh
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20181006011325.GB32455@lunn.ch \
--to=andrew@lunn$(echo .)ch \
--cc=Dmitry.Bezrukov@aquantia$(echo .)com \
--cc=Igor.Russkikh@aquantia$(echo .)com \
--cc=davem@davemloft$(echo .)net \
--cc=linux-usb@vger$(echo .)kernel.org \
--cc=netdev@vger$(echo .)kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox