net: asix: handle packets crossing URB boundaries
ASIX AX88772B started to pack data even more tightly. Packets and the ASIX packet header may now cross URB boundaries. To handle this we have to introduce some state between individual calls to asix_rx_fixup(). Signed-off-by: Lucas Stach <dev@lynxeye.de> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
5620df65d8
commit
8b5b6f5413
@@ -35,6 +35,7 @@ struct ax88172a_private {
|
||||
u16 phy_addr;
|
||||
u16 oldmode;
|
||||
int use_embdphy;
|
||||
struct asix_rx_fixup_info rx_fixup_info;
|
||||
};
|
||||
|
||||
/* MDIO read and write wrappers for phylib */
|
||||
@@ -400,6 +401,14 @@ out:
|
||||
|
||||
}
|
||||
|
||||
static int ax88172a_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
|
||||
{
|
||||
struct ax88172a_private *dp = dev->driver_priv;
|
||||
struct asix_rx_fixup_info *rx = &dp->rx_fixup_info;
|
||||
|
||||
return asix_rx_fixup_internal(dev, skb, rx);
|
||||
}
|
||||
|
||||
const struct driver_info ax88172a_info = {
|
||||
.description = "ASIX AX88172A USB 2.0 Ethernet",
|
||||
.bind = ax88172a_bind,
|
||||
@@ -409,6 +418,6 @@ const struct driver_info ax88172a_info = {
|
||||
.status = ax88172a_status,
|
||||
.flags = FLAG_ETHER | FLAG_FRAMING_AX | FLAG_LINK_INTR |
|
||||
FLAG_MULTI_PACKET,
|
||||
.rx_fixup = asix_rx_fixup,
|
||||
.rx_fixup = ax88172a_rx_fixup,
|
||||
.tx_fixup = asix_tx_fixup,
|
||||
};
|
||||
|
Reference in New Issue
Block a user