summaryrefslogtreecommitdiffstats
path: root/dogtag/tps-ui/shared/docroot/tokendb/agentViewConfig.template
stat options
Period:
Authors:

Commits per author per week (path 'dogtag/tps-ui/shared/docroot/tokendb/agentViewConfig.template')

AuthorW21 2024W22 2024W23 2024W24 2024Total
Total00000
n> #include <linux/etherdevice.h> #include <linux/list.h> #include <linux/netdevice.h> #include "dsa_priv.h" #define DSA_HLEN 4 int dsa_xmit(struct sk_buff *skb, struct net_device *dev) { struct dsa_slave_priv *p = netdev_priv(dev); u8 *dsa_header; dev->stats.tx_packets++; dev->stats.tx_bytes += skb->len; /* * Convert the outermost 802.1q tag to a DSA tag for tagged * packets, or insert a DSA tag between the addresses and * the ethertype field for untagged packets. */ if (skb->protocol == htons(ETH_P_8021Q)) { if (skb_cow_head(skb, 0) < 0) goto out_free; /* * Construct tagged FROM_CPU DSA tag from 802.1q tag. */ dsa_header = skb->data + 2 * ETH_ALEN; dsa_header[0] = 0x60; dsa_header[1] = p->port << 3; /* * Move CFI field from byte 2 to byte 1. */ if (dsa_header[2] & 0x10) { dsa_header[1] |= 0x01; dsa_header[2] &= ~0x10; } } else { if (skb_cow_head(skb, DSA_HLEN) < 0) goto out_free; skb_push(skb, DSA_HLEN); memmove(skb->data, skb->data + DSA_HLEN, 2 * ETH_ALEN); /* * Construct untagged FROM_CPU DSA tag. */ dsa_header = skb->data + 2 * ETH_ALEN; dsa_header[0] = 0x40; dsa_header[1] = p->port << 3; dsa_header[2] = 0x00; dsa_header[3] = 0x00; } skb->protocol = htons(ETH_P_DSA); skb->dev = p->parent->master_netdev; dev_queue_xmit(skb); return NETDEV_TX_OK; out_free: kfree_skb(skb); return NETDEV_TX_OK; }