[balbi-usb:testing/next 45/52] drivers/usb/gadget/function/f_ncm.c:1109:10: error: 'HRTIMER_MODE_REL_SOFT' undeclared

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



tree:   https://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git testing/next
head:   f463883ae099b7e98e8ea0a6b9c8dbd05217d94a
commit: 4e4a058b2f048b009b7826e6404ec5133563417e [45/52] usb/gadget/NCM: Replace tasklet with softirq hrtimer
config: x86_64-randconfig-x014-201743 (attached as .config)
compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
reproduce:
        git checkout 4e4a058b2f048b009b7826e6404ec5133563417e
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All errors (new ones prefixed by >>):

   drivers/usb/gadget/function/f_ncm.c: In function 'ncm_wrap_ntb':
>> drivers/usb/gadget/function/f_ncm.c:1109:10: error: 'HRTIMER_MODE_REL_SOFT' undeclared (first use in this function)
             HRTIMER_MODE_REL_SOFT);
             ^~~~~~~~~~~~~~~~~~~~~
   drivers/usb/gadget/function/f_ncm.c:1109:10: note: each undeclared identifier is reported only once for each function it appears in
   drivers/usb/gadget/function/f_ncm.c: In function 'ncm_bind':
   drivers/usb/gadget/function/f_ncm.c:1506:50: error: 'HRTIMER_MODE_REL_SOFT' undeclared (first use in this function)
     hrtimer_init(&ncm->task_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL_SOFT);
                                                     ^~~~~~~~~~~~~~~~~~~~~

vim +/HRTIMER_MODE_REL_SOFT +1109 drivers/usb/gadget/function/f_ncm.c

  1015	
  1016	static struct sk_buff *ncm_wrap_ntb(struct gether *port,
  1017					    struct sk_buff *skb)
  1018	{
  1019		struct f_ncm	*ncm = func_to_ncm(&port->func);
  1020		struct sk_buff	*skb2 = NULL;
  1021		int		ncb_len = 0;
  1022		__le16		*ntb_data;
  1023		__le16		*ntb_ndp;
  1024		int		dgram_pad;
  1025	
  1026		unsigned	max_size = ncm->port.fixed_in_len;
  1027		const struct ndp_parser_opts *opts = ncm->parser_opts;
  1028		const int ndp_align = le16_to_cpu(ntb_parameters.wNdpInAlignment);
  1029		const int div = le16_to_cpu(ntb_parameters.wNdpInDivisor);
  1030		const int rem = le16_to_cpu(ntb_parameters.wNdpInPayloadRemainder);
  1031		const int dgram_idx_len = 2 * 2 * opts->dgram_item_len;
  1032	
  1033		if (!skb && !ncm->skb_tx_data)
  1034			return NULL;
  1035	
  1036		if (skb) {
  1037			/* Add the CRC if required up front */
  1038			if (ncm->is_crc) {
  1039				uint32_t	crc;
  1040				__le16		*crc_pos;
  1041	
  1042				crc = ~crc32_le(~0,
  1043						skb->data,
  1044						skb->len);
  1045				crc_pos = skb_put(skb, sizeof(uint32_t));
  1046				put_unaligned_le32(crc, crc_pos);
  1047			}
  1048	
  1049			/* If the new skb is too big for the current NCM NTB then
  1050			 * set the current stored skb to be sent now and clear it
  1051			 * ready for new data.
  1052			 * NOTE: Assume maximum align for speed of calculation.
  1053			 */
  1054			if (ncm->skb_tx_data
  1055			    && (ncm->ndp_dgram_count >= TX_MAX_NUM_DPE
  1056			    || (ncm->skb_tx_data->len +
  1057			    div + rem + skb->len +
  1058			    ncm->skb_tx_ndp->len + ndp_align + (2 * dgram_idx_len))
  1059			    > max_size)) {
  1060				skb2 = package_for_tx(ncm);
  1061				if (!skb2)
  1062					goto err;
  1063			}
  1064	
  1065			if (!ncm->skb_tx_data) {
  1066				ncb_len = opts->nth_size;
  1067				dgram_pad = ALIGN(ncb_len, div) + rem - ncb_len;
  1068				ncb_len += dgram_pad;
  1069	
  1070				/* Create a new skb for the NTH and datagrams. */
  1071				ncm->skb_tx_data = alloc_skb(max_size, GFP_ATOMIC);
  1072				if (!ncm->skb_tx_data)
  1073					goto err;
  1074	
  1075				ncm->skb_tx_data->dev = ncm->netdev;
  1076				ntb_data = skb_put_zero(ncm->skb_tx_data, ncb_len);
  1077				/* dwSignature */
  1078				put_unaligned_le32(opts->nth_sign, ntb_data);
  1079				ntb_data += 2;
  1080				/* wHeaderLength */
  1081				put_unaligned_le16(opts->nth_size, ntb_data++);
  1082	
  1083				/* Allocate an skb for storing the NDP,
  1084				 * TX_MAX_NUM_DPE should easily suffice for a
  1085				 * 16k packet.
  1086				 */
  1087				ncm->skb_tx_ndp = alloc_skb((int)(opts->ndp_size
  1088							    + opts->dpe_size
  1089							    * TX_MAX_NUM_DPE),
  1090							    GFP_ATOMIC);
  1091				if (!ncm->skb_tx_ndp)
  1092					goto err;
  1093	
  1094				ncm->skb_tx_ndp->dev = ncm->netdev;
  1095				ntb_ndp = skb_put(ncm->skb_tx_ndp, opts->ndp_size);
  1096				memset(ntb_ndp, 0, ncb_len);
  1097				/* dwSignature */
  1098				put_unaligned_le32(ncm->ndp_sign, ntb_ndp);
  1099				ntb_ndp += 2;
  1100	
  1101				/* There is always a zeroed entry */
  1102				ncm->ndp_dgram_count = 1;
  1103	
  1104				/* Note: we skip opts->next_ndp_index */
  1105			}
  1106	
  1107			/* Delay the timer. */
  1108			hrtimer_start(&ncm->task_timer, TX_TIMEOUT_NSECS,
> 1109				      HRTIMER_MODE_REL_SOFT);
  1110	
  1111			/* Add the datagram position entries */
  1112			ntb_ndp = skb_put_zero(ncm->skb_tx_ndp, dgram_idx_len);
  1113	
  1114			ncb_len = ncm->skb_tx_data->len;
  1115			dgram_pad = ALIGN(ncb_len, div) + rem - ncb_len;
  1116			ncb_len += dgram_pad;
  1117	
  1118			/* (d)wDatagramIndex */
  1119			put_ncm(&ntb_ndp, opts->dgram_item_len, ncb_len);
  1120			/* (d)wDatagramLength */
  1121			put_ncm(&ntb_ndp, opts->dgram_item_len, skb->len);
  1122			ncm->ndp_dgram_count++;
  1123	
  1124			/* Add the new data to the skb */
  1125			skb_put_zero(ncm->skb_tx_data, dgram_pad);
  1126			skb_put_data(ncm->skb_tx_data, skb->data, skb->len);
  1127			dev_consume_skb_any(skb);
  1128			skb = NULL;
  1129	
  1130		} else if (ncm->skb_tx_data && ncm->timer_force_tx) {
  1131			/* If the tx was requested because of a timeout then send */
  1132			skb2 = package_for_tx(ncm);
  1133			if (!skb2)
  1134				goto err;
  1135		}
  1136	
  1137		return skb2;
  1138	
  1139	err:
  1140		ncm->netdev->stats.tx_dropped++;
  1141	
  1142		if (skb)
  1143			dev_kfree_skb_any(skb);
  1144		if (ncm->skb_tx_data)
  1145			dev_kfree_skb_any(ncm->skb_tx_data);
  1146		if (ncm->skb_tx_ndp)
  1147			dev_kfree_skb_any(ncm->skb_tx_ndp);
  1148	
  1149		return NULL;
  1150	}
  1151	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux