Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e69dd336 authored by David S. Miller's avatar David S. Miller
Browse files

net: Push protocol type directly down to header_ops->cache()

parent 3769cffb
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -261,16 +261,16 @@ static int fwnet_header_rebuild(struct sk_buff *skb)
}

static int fwnet_header_cache(const struct neighbour *neigh,
			      struct hh_cache *hh)
			      struct hh_cache *hh, __be16 type)
{
	struct net_device *net;
	struct fwnet_header *h;

	if (hh->hh_type == cpu_to_be16(ETH_P_802_3))
	if (type == cpu_to_be16(ETH_P_802_3))
		return -1;
	net = neigh->dev;
	h = (struct fwnet_header *)((u8 *)hh->hh_data + 16 - sizeof(*h));
	h->h_proto = hh->hh_type;
	h->h_proto = type;
	memcpy(h->h_dest, neigh->ha, net->addr_len);
	hh->hh_len = FWNET_HLEN;

+3 −2
Original line number Diff line number Diff line
@@ -1983,13 +1983,14 @@ isdn_net_rebuild_header(struct sk_buff *skb)
	return ret;
}

static int isdn_header_cache(const struct neighbour *neigh, struct hh_cache *hh)
static int isdn_header_cache(const struct neighbour *neigh, struct hh_cache *hh,
			     __be16 type)
{
	const struct net_device *dev = neigh->dev;
	isdn_net_local *lp = netdev_priv(dev);

	if (lp->p_encap == ISDN_NET_ENCAP_ETHER)
		return eth_header_cache(neigh, hh);
		return eth_header_cache(neigh, hh, type);
	return -1;
}

+3 −3
Original line number Diff line number Diff line
@@ -152,7 +152,7 @@ static int plip_hard_header(struct sk_buff *skb, struct net_device *dev,
                            unsigned short type, const void *daddr,
			    const void *saddr, unsigned len);
static int plip_hard_header_cache(const struct neighbour *neigh,
                                  struct hh_cache *hh);
                                  struct hh_cache *hh, __be16 type);
static int plip_open(struct net_device *dev);
static int plip_close(struct net_device *dev);
static int plip_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd);
@@ -1026,11 +1026,11 @@ plip_hard_header(struct sk_buff *skb, struct net_device *dev,
}

static int plip_hard_header_cache(const struct neighbour *neigh,
				  struct hh_cache *hh)
				  struct hh_cache *hh, __be16 type)
{
	int ret;

	ret = eth_header_cache(neigh, hh);
	ret = eth_header_cache(neigh, hh, type);
	if (ret == 0) {
		struct ethhdr *eth;

+1 −1
Original line number Diff line number Diff line
@@ -38,7 +38,7 @@ extern int eth_header(struct sk_buff *skb, struct net_device *dev,
		      const void *daddr, const void *saddr, unsigned len);
extern int eth_rebuild_header(struct sk_buff *skb);
extern int eth_header_parse(const struct sk_buff *skb, unsigned char *haddr);
extern int eth_header_cache(const struct neighbour *neigh, struct hh_cache *hh);
extern int eth_header_cache(const struct neighbour *neigh, struct hh_cache *hh, __be16 type);
extern void eth_header_cache_update(struct hh_cache *hh,
				    const struct net_device *dev,
				    const unsigned char *haddr);
+1 −1
Original line number Diff line number Diff line
@@ -308,7 +308,7 @@ struct header_ops {
			   const void *saddr, unsigned len);
	int	(*parse)(const struct sk_buff *skb, unsigned char *haddr);
	int	(*rebuild)(struct sk_buff *skb);
	int	(*cache)(const struct neighbour *neigh, struct hh_cache *hh);
	int	(*cache)(const struct neighbour *neigh, struct hh_cache *hh, __be16 type);
	void	(*cache_update)(struct hh_cache *hh,
				const struct net_device *dev,
				const unsigned char *haddr);
Loading