/* * Apple Onboard Audio driver for tas codec (header) * * Copyright 2006 Johannes Berg * * GPL v2, can be found in COPYING. */ #ifndef __SND_AOA_CODECTASH #define __SND_AOA_CODECTASH #define TAS_REG_MCS 0x01 /* main control */ # define TAS_MCS_FASTLOAD (1<<7) # define TAS_MCS_SCLK64 (1<<6) # define TAS_MCS_SPORT_MODE_MASK (3<<4) # define TAS_MCS_SPORT_MODE_I2S (2<<4) # define TAS_MCS_SPORT_MODE_RJ (1<<4) # define TAS_MCS_SPORT_MODE_LJ (0<<4) # define TAS_MCS_SPORT_WL_MASK (3<<0) # define TAS_MCS_SPORT_WL_16BIT (0<<0) # define TAS_MCS_SPORT_WL_18BIT (1<<0) # define TAS_MCS_SPORT_WL_20BIT (2<<0) # define TAS_MCS_SPORT_WL_24BIT (3<<0) #define TAS_REG_DRC 0x02 #define TAS_REG_VOL 0x04 #define TAS_REG_TREBLE 0x05 #define TAS_REG_BASS 0x06 #define TAS_REG_LMIX 0x07 #define TAS_REG_RMIX 0x08 #define TAS_REG_ACR 0x40 /* analog control */ # define TAS_ACR_B_MONAUREAL (1<<7) # define TAS_ACR_B_MON_SEL_RIGHT (1<<6) # define TAS_ACR_DEEMPH_MASK (3<<2) # define TAS_ACR_DEEMPH_OFF (0<<2) # define TAS_ACR_DEEMPH_48KHz (1<<2) # define TAS_ACR_DEEMPH_44KHz (2<<2) # define TAS_ACR_INPUT_B (1<<1) # define TAS_ACR_ANALOG_PDOWN (1<<0) #define TAS_REG_MCS2 0x43 /* main control 2 */ # define TAS_MCS2_ALLPASS (1<<1) #define TAS_REG_LEFT_BIQUAD6 0x10 #define TAS_REG_RIGHT_BIQUAD6 0x19 #define TAS_REG_LEFT_LOUDNESS 0x21 #define TAS_REG_RIGHT_LOUDNESS 0x22 #define TAS_REG_LEFT_LOUDNESS_GAIN 0x23 #define TAS_REG_RIGHT_LOUDNESS_GAIN 0x24 #define TAS3001_DRC_MAX 0x5f #define TAS3004_DRC_MAX 0xef #endif /* __SND_AOA_CODECTASH */ gi/linux/net-next.git/refs/?id=f43128c75202f29ee71aa83e6c320a911137c189'>refslogtreecommitdiff
path: root/include/net
AgeCommit message (Collapse)AuthorFilesLines
2017-01-31ipv6: fix flow labels when the traffic class is non-0Dimitris Michailidis1-0/+5
ip6_make_flowlabel() determines the flow label for IPv6 packets. It's supposed to be passed a flow label, which it returns as is if non-0 and in some other cases, otherwise it calculates a new value. The problem is callers often pass a flowi6.flowlabel, which may also contain traffic class bits. If the traffic class is non-0 ip6_make_flowlabel() mistakes the non-0 it gets as a flow label and returns the whole thing. Thus it can return a 'flow label' longer than 20b and the low 20b of that is typically 0 resulting in packets with 0 label. Moreover, different packets of a flow may be labeled differently. For a TCP flow with ECN non-payload and payload packets get different labels as exemplified by this pair of consecutive packets: (pure ACK) Internet Protocol Version 6, Src: 2002:af5:11a3::, Dst: 2002:af5:11a2:: 0110 .... = Version: 6 .... 0000 0000 .... .... .... .... .... = Traffic Class: 0x00 (DSCP: CS0, ECN: Not-ECT) .... 0000 00.. .... .... .... .... .... = Differentiated Services Codepoint: Default (0) .... .... ..00 .... .... .... .... .... = Explicit Congestion Notification: Not ECN-Capable Transport (0) .... .... .... 0001 1100 1110 0100 1001 = Flow Label: 0x1ce49 Payload Length: 32 Next Header: TCP (6) (payload) Internet Protocol Version 6, Src: 2002:af5:11a3::, Dst: 2002:af5:11a2:: 0110 .... = Version: 6 .... 0000 0010 .... .... .... .... .... = Traffic Class: 0x02 (DSCP: CS0, ECN: ECT(0)) .... 0000 00.. .... .... .... .... .... = Differentiated Services Codepoint: Default (0) .... .... ..10 .... .... .... .... .... = Explicit Congestion Notification: ECN-Capable Transport codepoint '10' (2) .... .... .... 0000 0000 0000 0000 0000 = Flow Label: 0x00000 Payload Length: 688 Next Header: TCP (6) This patch allows ip6_make_flowlabel() to be passed more than just a flow label and has it extract the part it really wants. This was simpler than modifying the callers. With this patch packets like the above become Internet Protocol Version 6, Src: 2002:af5:11a3::, Dst: 2002:af5:11a2:: 0110 .... = Version: 6 .... 0000 0000 .... .... .... .... .... = Traffic Class: 0x00 (DSCP: CS0, ECN: Not-ECT) .... 0000 00.. .... .... .... .... .... = Differentiated Services Codepoint: Default (0) .... .... ..00 .... .... .... .... .... = Explicit Congestion Notification: Not ECN-Capable Transport (0) .... .... .... 1010 1111 1010 0101 1110 = Flow Label: 0xafa5e Payload Length: 32 Next Header: TCP (6) Internet Protocol Version 6, Src: 2002:af5:11a3::, Dst: 2002:af5:11a2:: 0110 .... = Version: 6 .... 0000 0010 .... .... .... .... .... = Traffic Class: 0x02 (DSCP: CS0, ECN: ECT(0)) .... 0000 00.. .... .... .... .... .... = Differentiated Services Codepoint: Default (0) .... .... ..10 .... .... .... .... .... = Explicit Congestion Notification: ECN-Capable Transport codepoint '10' (2) .... .... .... 1010 1111 1010 0101 1110 = Flow Label: 0xafa5e Payload Length: 688 Next Header: TCP (6) Signed-off-by: Dimitris Michailidis <dmichail@google.com> Acked-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>