|
@@ -1012,15 +1012,6 @@ static netdev_tx_t bcm_sysport_xmit(struct sk_buff *skb,
|
|
goto out;
|
|
goto out;
|
|
}
|
|
}
|
|
|
|
|
|
- /* Insert TSB and checksum infos */
|
|
|
|
- if (priv->tsb_en) {
|
|
|
|
- skb = bcm_sysport_insert_tsb(skb, dev);
|
|
|
|
- if (!skb) {
|
|
|
|
- ret = NETDEV_TX_OK;
|
|
|
|
- goto out;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
/* The Ethernet switch we are interfaced with needs packets to be at
|
|
/* The Ethernet switch we are interfaced with needs packets to be at
|
|
* least 64 bytes (including FCS) otherwise they will be discarded when
|
|
* least 64 bytes (including FCS) otherwise they will be discarded when
|
|
* they enter the switch port logic. When Broadcom tags are enabled, we
|
|
* they enter the switch port logic. When Broadcom tags are enabled, we
|
|
@@ -1028,13 +1019,21 @@ static netdev_tx_t bcm_sysport_xmit(struct sk_buff *skb,
|
|
* (including FCS and tag) because the length verification is done after
|
|
* (including FCS and tag) because the length verification is done after
|
|
* the Broadcom tag is stripped off the ingress packet.
|
|
* the Broadcom tag is stripped off the ingress packet.
|
|
*/
|
|
*/
|
|
- if (skb_padto(skb, ETH_ZLEN + ENET_BRCM_TAG_LEN)) {
|
|
|
|
|
|
+ if (skb_put_padto(skb, ETH_ZLEN + ENET_BRCM_TAG_LEN)) {
|
|
ret = NETDEV_TX_OK;
|
|
ret = NETDEV_TX_OK;
|
|
goto out;
|
|
goto out;
|
|
}
|
|
}
|
|
|
|
|
|
- skb_len = skb->len < ETH_ZLEN + ENET_BRCM_TAG_LEN ?
|
|
|
|
- ETH_ZLEN + ENET_BRCM_TAG_LEN : skb->len;
|
|
|
|
|
|
+ /* Insert TSB and checksum infos */
|
|
|
|
+ if (priv->tsb_en) {
|
|
|
|
+ skb = bcm_sysport_insert_tsb(skb, dev);
|
|
|
|
+ if (!skb) {
|
|
|
|
+ ret = NETDEV_TX_OK;
|
|
|
|
+ goto out;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ skb_len = skb->len;
|
|
|
|
|
|
mapping = dma_map_single(kdev, skb->data, skb_len, DMA_TO_DEVICE);
|
|
mapping = dma_map_single(kdev, skb->data, skb_len, DMA_TO_DEVICE);
|
|
if (dma_mapping_error(kdev, mapping)) {
|
|
if (dma_mapping_error(kdev, mapping)) {
|