[NET]: Wrap hard_header_parse
Wrap the hard_header_parse function to simplify next step of header_ops conversion. Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
0c4e85813d
commit
b95cce3576
|
@ -162,7 +162,8 @@ static int ether1394_header(struct sk_buff *skb, struct net_device *dev,
|
||||||
unsigned short type, void *daddr, void *saddr,
|
unsigned short type, void *daddr, void *saddr,
|
||||||
unsigned len);
|
unsigned len);
|
||||||
static int ether1394_rebuild_header(struct sk_buff *skb);
|
static int ether1394_rebuild_header(struct sk_buff *skb);
|
||||||
static int ether1394_header_parse(struct sk_buff *skb, unsigned char *haddr);
|
static int ether1394_header_parse(const struct sk_buff *skb,
|
||||||
|
unsigned char *haddr);
|
||||||
static int ether1394_header_cache(struct neighbour *neigh, struct hh_cache *hh);
|
static int ether1394_header_cache(struct neighbour *neigh, struct hh_cache *hh);
|
||||||
static void ether1394_header_cache_update(struct hh_cache *hh,
|
static void ether1394_header_cache_update(struct hh_cache *hh,
|
||||||
struct net_device *dev,
|
struct net_device *dev,
|
||||||
|
@ -751,11 +752,10 @@ static int ether1394_rebuild_header(struct sk_buff *skb)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ether1394_header_parse(struct sk_buff *skb, unsigned char *haddr)
|
static int ether1394_header_parse(const struct sk_buff *skb,
|
||||||
|
unsigned char *haddr)
|
||||||
{
|
{
|
||||||
struct net_device *dev = skb->dev;
|
memcpy(haddr, skb->dev->dev_addr, ETH1394_ALEN);
|
||||||
|
|
||||||
memcpy(haddr, dev->dev_addr, ETH1394_ALEN);
|
|
||||||
return ETH1394_ALEN;
|
return ETH1394_ALEN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2481,7 +2481,7 @@ void stop_airo_card( struct net_device *dev, int freeres )
|
||||||
|
|
||||||
EXPORT_SYMBOL(stop_airo_card);
|
EXPORT_SYMBOL(stop_airo_card);
|
||||||
|
|
||||||
static int wll_header_parse(struct sk_buff *skb, unsigned char *haddr)
|
static int wll_header_parse(const struct sk_buff *skb, unsigned char *haddr)
|
||||||
{
|
{
|
||||||
memcpy(haddr, skb_mac_header(skb) + 10, ETH_ALEN);
|
memcpy(haddr, skb_mac_header(skb) + 10, ETH_ALEN);
|
||||||
return ETH_ALEN;
|
return ETH_ALEN;
|
||||||
|
@ -2698,11 +2698,6 @@ static int mpi_map_card(struct airo_info *ai, struct pci_dev *pci)
|
||||||
|
|
||||||
static void wifi_setup(struct net_device *dev)
|
static void wifi_setup(struct net_device *dev)
|
||||||
{
|
{
|
||||||
dev->hard_header = NULL;
|
|
||||||
dev->rebuild_header = NULL;
|
|
||||||
dev->hard_header_cache = NULL;
|
|
||||||
dev->header_cache_update= NULL;
|
|
||||||
|
|
||||||
dev->hard_header_parse = wll_header_parse;
|
dev->hard_header_parse = wll_header_parse;
|
||||||
dev->hard_start_xmit = &airo_start_xmit11;
|
dev->hard_start_xmit = &airo_start_xmit11;
|
||||||
dev->get_stats = &airo_get_stats;
|
dev->get_stats = &airo_get_stats;
|
||||||
|
|
|
@ -6561,10 +6561,10 @@ static struct ethtool_ops qeth_ethtool_ops = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static int
|
static int
|
||||||
qeth_hard_header_parse(struct sk_buff *skb, unsigned char *haddr)
|
qeth_hard_header_parse(const struct sk_buff *skb, unsigned char *haddr)
|
||||||
{
|
{
|
||||||
struct qeth_card *card;
|
const struct qeth_card *card;
|
||||||
struct ethhdr *eth;
|
const struct ethhdr *eth;
|
||||||
|
|
||||||
card = qeth_get_card_from_dev(skb->dev);
|
card = qeth_get_card_from_dev(skb->dev);
|
||||||
if (card->options.layer2)
|
if (card->options.layer2)
|
||||||
|
|
|
@ -657,7 +657,7 @@ struct net_device
|
||||||
void (*vlan_rx_kill_vid)(struct net_device *dev,
|
void (*vlan_rx_kill_vid)(struct net_device *dev,
|
||||||
unsigned short vid);
|
unsigned short vid);
|
||||||
|
|
||||||
int (*hard_header_parse)(struct sk_buff *skb,
|
int (*hard_header_parse)(const struct sk_buff *skb,
|
||||||
unsigned char *haddr);
|
unsigned char *haddr);
|
||||||
int (*neigh_setup)(struct net_device *dev, struct neigh_parms *);
|
int (*neigh_setup)(struct net_device *dev, struct neigh_parms *);
|
||||||
#ifdef CONFIG_NETPOLL
|
#ifdef CONFIG_NETPOLL
|
||||||
|
@ -809,6 +809,16 @@ static inline int dev_hard_header(struct sk_buff *skb, struct net_device *dev,
|
||||||
return dev->hard_header(skb, dev, type, daddr, saddr, len);
|
return dev->hard_header(skb, dev, type, daddr, saddr, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline int dev_parse_header(const struct sk_buff *skb,
|
||||||
|
unsigned char *haddr)
|
||||||
|
{
|
||||||
|
const struct net_device *dev = skb->dev;
|
||||||
|
|
||||||
|
if (!dev->hard_header_parse)
|
||||||
|
return 0;
|
||||||
|
return dev->hard_header_parse(skb, haddr);
|
||||||
|
}
|
||||||
|
|
||||||
typedef int gifconf_func_t(struct net_device * dev, char __user * bufptr, int len);
|
typedef int gifconf_func_t(struct net_device * dev, char __user * bufptr, int len);
|
||||||
extern int register_gifconf(unsigned int family, gifconf_func_t * gifconf);
|
extern int register_gifconf(unsigned int family, gifconf_func_t * gifconf);
|
||||||
static inline int unregister_gifconf(unsigned int family)
|
static inline int unregister_gifconf(unsigned int family)
|
||||||
|
|
|
@ -207,9 +207,9 @@ EXPORT_SYMBOL(eth_type_trans);
|
||||||
* @skb: packet to extract header from
|
* @skb: packet to extract header from
|
||||||
* @haddr: destination buffer
|
* @haddr: destination buffer
|
||||||
*/
|
*/
|
||||||
static int eth_header_parse(struct sk_buff *skb, unsigned char *haddr)
|
static int eth_header_parse(const struct sk_buff *skb, unsigned char *haddr)
|
||||||
{
|
{
|
||||||
struct ethhdr *eth = eth_hdr(skb);
|
const struct ethhdr *eth = eth_hdr(skb);
|
||||||
memcpy(haddr, eth->h_source, ETH_ALEN);
|
memcpy(haddr, eth->h_source, ETH_ALEN);
|
||||||
return ETH_ALEN;
|
return ETH_ALEN;
|
||||||
}
|
}
|
||||||
|
|
|
@ -250,10 +250,8 @@ ipq_build_packet_message(struct ipq_queue_entry *entry, int *errp)
|
||||||
|
|
||||||
if (entry->info->indev && entry->skb->dev) {
|
if (entry->info->indev && entry->skb->dev) {
|
||||||
pmsg->hw_type = entry->skb->dev->type;
|
pmsg->hw_type = entry->skb->dev->type;
|
||||||
if (entry->skb->dev->hard_header_parse)
|
pmsg->hw_addrlen = dev_parse_header(entry->skb,
|
||||||
pmsg->hw_addrlen =
|
pmsg->hw_addr);
|
||||||
entry->skb->dev->hard_header_parse(entry->skb,
|
|
||||||
pmsg->hw_addr);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data_len)
|
if (data_len)
|
||||||
|
|
|
@ -248,10 +248,7 @@ ipq_build_packet_message(struct ipq_queue_entry *entry, int *errp)
|
||||||
|
|
||||||
if (entry->info->indev && entry->skb->dev) {
|
if (entry->info->indev && entry->skb->dev) {
|
||||||
pmsg->hw_type = entry->skb->dev->type;
|
pmsg->hw_type = entry->skb->dev->type;
|
||||||
if (entry->skb->dev->hard_header_parse)
|
pmsg->hw_addrlen = dev_parse_header(entry->skb, pmsg->hw_addr);
|
||||||
pmsg->hw_addrlen =
|
|
||||||
entry->skb->dev->hard_header_parse(entry->skb,
|
|
||||||
pmsg->hw_addr);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data_len)
|
if (data_len)
|
||||||
|
|
|
@ -47,7 +47,7 @@ struct ieee80211_tx_status_rtap_hdr {
|
||||||
|
|
||||||
/* common interface routines */
|
/* common interface routines */
|
||||||
|
|
||||||
static int header_parse_80211(struct sk_buff *skb, unsigned char *haddr)
|
static int header_parse_80211(const struct sk_buff *skb, unsigned char *haddr)
|
||||||
{
|
{
|
||||||
memcpy(haddr, skb_mac_header(skb) + 10, ETH_ALEN); /* addr2 */
|
memcpy(haddr, skb_mac_header(skb) + 10, ETH_ALEN); /* addr2 */
|
||||||
return ETH_ALEN;
|
return ETH_ALEN;
|
||||||
|
|
|
@ -481,12 +481,13 @@ __build_packet_message(struct nfulnl_instance *inst,
|
||||||
NFA_PUT(inst->skb, NFULA_MARK, sizeof(tmp_uint), &tmp_uint);
|
NFA_PUT(inst->skb, NFULA_MARK, sizeof(tmp_uint), &tmp_uint);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (indev && skb->dev && skb->dev->hard_header_parse) {
|
if (indev && skb->dev) {
|
||||||
struct nfulnl_msg_packet_hw phw;
|
struct nfulnl_msg_packet_hw phw;
|
||||||
int len = skb->dev->hard_header_parse((struct sk_buff *)skb,
|
int len = dev_parse_header(skb, phw.hw_addr);
|
||||||
phw.hw_addr);
|
if (len > 0) {
|
||||||
phw.hw_addrlen = htons(len);
|
phw.hw_addrlen = htons(len);
|
||||||
NFA_PUT(inst->skb, NFULA_HWADDR, sizeof(phw), &phw);
|
NFA_PUT(inst->skb, NFULA_HWADDR, sizeof(phw), &phw);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (skb->tstamp.tv64) {
|
if (skb->tstamp.tv64) {
|
||||||
|
|
|
@ -485,14 +485,13 @@ nfqnl_build_packet_message(struct nfqnl_instance *queue,
|
||||||
NFA_PUT(skb, NFQA_MARK, sizeof(u_int32_t), &tmp_uint);
|
NFA_PUT(skb, NFQA_MARK, sizeof(u_int32_t), &tmp_uint);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (indev && entskb->dev
|
if (indev && entskb->dev) {
|
||||||
&& entskb->dev->hard_header_parse) {
|
|
||||||
struct nfqnl_msg_packet_hw phw;
|
struct nfqnl_msg_packet_hw phw;
|
||||||
|
int len = dev_parse_header(entskb, phw.hw_addr);
|
||||||
int len = entskb->dev->hard_header_parse(entskb,
|
if (len) {
|
||||||
phw.hw_addr);
|
phw.hw_addrlen = htons(len);
|
||||||
phw.hw_addrlen = htons(len);
|
NFA_PUT(skb, NFQA_HWADDR, sizeof(phw), &phw);
|
||||||
NFA_PUT(skb, NFQA_HWADDR, sizeof(phw), &phw);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (entskb->tstamp.tv64) {
|
if (entskb->tstamp.tv64) {
|
||||||
|
|
|
@ -519,10 +519,8 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev, struct packet
|
||||||
sll->sll_ifindex = orig_dev->ifindex;
|
sll->sll_ifindex = orig_dev->ifindex;
|
||||||
else
|
else
|
||||||
sll->sll_ifindex = dev->ifindex;
|
sll->sll_ifindex = dev->ifindex;
|
||||||
sll->sll_halen = 0;
|
|
||||||
|
|
||||||
if (dev->hard_header_parse)
|
sll->sll_halen = dev_parse_header(skb, sll->sll_addr);
|
||||||
sll->sll_halen = dev->hard_header_parse(skb, sll->sll_addr);
|
|
||||||
|
|
||||||
PACKET_SKB_CB(skb)->origlen = skb->len;
|
PACKET_SKB_CB(skb)->origlen = skb->len;
|
||||||
|
|
||||||
|
@ -658,9 +656,7 @@ static int tpacket_rcv(struct sk_buff *skb, struct net_device *dev, struct packe
|
||||||
h->tp_usec = tv.tv_usec;
|
h->tp_usec = tv.tv_usec;
|
||||||
|
|
||||||
sll = (struct sockaddr_ll*)((u8*)h + TPACKET_ALIGN(sizeof(*h)));
|
sll = (struct sockaddr_ll*)((u8*)h + TPACKET_ALIGN(sizeof(*h)));
|
||||||
sll->sll_halen = 0;
|
sll->sll_halen = dev_parse_header(skb, sll->sll_addr);
|
||||||
if (dev->hard_header_parse)
|
|
||||||
sll->sll_halen = dev->hard_header_parse(skb, sll->sll_addr);
|
|
||||||
sll->sll_family = AF_PACKET;
|
sll->sll_family = AF_PACKET;
|
||||||
sll->sll_hatype = dev->type;
|
sll->sll_hatype = dev->type;
|
||||||
sll->sll_protocol = skb->protocol;
|
sll->sll_protocol = skb->protocol;
|
||||||
|
|
Loading…
Reference in New Issue