diff options
Diffstat (limited to 'drivers/net/ethernet/qualcomm/rmnet/rmnet_handlers.c')
| -rw-r--r-- | drivers/net/ethernet/qualcomm/rmnet/rmnet_handlers.c | 10 | 
1 files changed, 6 insertions, 4 deletions
| diff --git a/drivers/net/ethernet/qualcomm/rmnet/rmnet_handlers.c b/drivers/net/ethernet/qualcomm/rmnet/rmnet_handlers.c index 3d00b3232308..0be5ac7ab261 100644 --- a/drivers/net/ethernet/qualcomm/rmnet/rmnet_handlers.c +++ b/drivers/net/ethernet/qualcomm/rmnet/rmnet_handlers.c @@ -56,20 +56,22 @@ static void  __rmnet_map_ingress_handler(struct sk_buff *skb,  			    struct rmnet_port *port)  { +	struct rmnet_map_header *map_header = (void *)skb->data;  	struct rmnet_endpoint *ep;  	u16 len, pad;  	u8 mux_id; -	if (RMNET_MAP_GET_CD_BIT(skb)) { +	if (map_header->flags & MAP_CMD_FLAG) { +		/* Packet contains a MAP command (not data) */  		if (port->data_format & RMNET_FLAGS_INGRESS_MAP_COMMANDS)  			return rmnet_map_command(skb, port);  		goto free_skb;  	} -	mux_id = RMNET_MAP_GET_MUX_ID(skb); -	pad = RMNET_MAP_GET_PAD(skb); -	len = RMNET_MAP_GET_LENGTH(skb) - pad; +	mux_id = map_header->mux_id; +	pad = map_header->flags & MAP_PAD_LEN_MASK; +	len = ntohs(map_header->pkt_len) - pad;  	if (mux_id >= RMNET_MAX_LOGICAL_EP)  		goto free_skb; | 
